CSV statistics: mean, standard deviation, min and max
Mean, std dev, min and max of each column, in your browser. Nothing is uploaded.
Open a CSV to see its statistics
Drop it here or choose a file. The statistics of every number column open as soon as it is read.
The sample: a year of made-up hourly weather in Leeds, 8,760 rows.
Tip: drop several files to compare them.
Your file never leaves your device. It is read and charted by your browser. Nothing is uploaded.
Opens with the statistics of your number columns
- Columns
- The file’s number columns ticked, in the file’s order, up to eight (the chart shows them too).
- Rows
- The rows in view, which is every row until you zoom in.
- Statistics
- Count, missing, min, max, mean, median, standard deviation (n − 1), RMS, peak to peak, the quartiles and the IQR, to seven significant digits.
At a glance
- Statistics
- Count, missing values, min, max, mean, median, standard deviation, RMS, peak to peak, the quartiles and the IQR of each number column ticked, up to eight at once.
- Standard deviation
- The sample one (divided by n − 1), as MATLAB’s std and Excel’s STDEV.
- Median and quartiles
- As NumPy and pandas give them (interpolated linearly, like Excel’s QUARTILE.INC); a box plot draws them for each column.
- For which rows
- The rows in view (zoom the chart into a part), the whole file, or the rows between two cursors.
- Text columns
- “Show statistics” in a column’s menu in the table: its count, missing values, distinct values and the most common ones.
- Precision
- Every value is used, millions of rows too; the panel shows seven significant digits.
- Accuracy
- Checked against NumPy by our own tests, with the worked example on this page.
- Files
- CSV, TSV, TXT, Excel, JSON, MATLAB, Parquet, HDF5 and LabVIEW TDMS files.
- Processing
- Calculated in your browser. Your file is never uploaded.
- Price
- Free. No account or sign-up.
How to get the statistics of a CSV file
- Open your file. Choose a CSV, TSV, TXT, Excel, JSON, MATLAB, Parquet, HDF5 or LabVIEW TDMS file, or drop it on the tool at the top of this page. No file to hand? Click “Try a sample weather file”.
- Read the statistics. The statistics panel opens as soon as the file is read, with a card for each number column, up to eight. Tick or untick columns in the list on the left to choose which.
- Choose the rows. The panel starts on “Visible range”, the rows the chart shows: zoom the chart into a part and the numbers follow. “Whole file” covers every row; with the difference cursors on, “Between cursors” covers the rows between them.
A worked example you can check
“Try a sample weather file” opens a made-up year of hourly weather in Leeds: 8,760 rows, with temperature, humidity, wind speed and rainfall, and no wind readings on 12 March, when the anemometer was serviced. The statistics panel opens with these numbers, for the whole year:
| Statistic | Temperature [°C] | Humidity [%] | Wind Speed [mph] | Rainfall [mm] |
|---|---|---|---|---|
| Count | 8,760 | 8,760 | 8,736 | 8,760 |
| Missing | 0 | 0 | 24 | 0 |
| Min | -3.33 | 53 | 0 | 0 |
| Max | 21.88 | 100 | 28.6 | 4.3 |
| Mean | 9.56559 | 80.05765 | 10.7553 | 0.06754566 |
| Median | 9.98 | 80 | 10.6 | 0 |
| Std dev | 5.207529 | 8.302849 | 4.782905 | 0.2929439 |
| RMS | 10.89109 | 80.487 | 11.77073 | 0.3006139 |
| Peak to peak | 25.21 | 47 | 28.6 | 4.3 |
| Q1 (25%) | 5.7075 | 74 | 7.4 | 0 |
| Q3 (75%) | 13.4025 | 86 | 13.9 | 0 |
| IQR | 7.695 | 12 | 6.5 | 0 |
The wind speed counts 8,736 values and 24 missing ones: the 24 hours of 12 March. Its mean and standard deviation leave them out, rather than counting them as zero. The rainfall’s median and quartiles are 0: at least three hours in four are dry. Zoom the chart into January and every card shows January’s numbers instead.
The same in Python
With the sample file downloaded, these lines give pandas’ answer (skiprows=[1] skips the units row; pandas’ std divides by n − 1, as the panel does, and its quantile interpolates as the panel’s Q1, median and Q3 do):
import pandas as pd
d = pd.read_csv("megarows-sample-leeds-hourly-weather.csv", skiprows=[1])
x = d.drop(columns="time")
table = pd.DataFrame({"count": x.count(), "mean": x.mean(), "std": x.std(),
"min": x.min(), "max": x.max(), "rms": (x**2).mean() ** 0.5})
print(table.round(3).to_string())
print(x.quantile([0.25, 0.5, 0.75]).T.round(3).to_string())They print, rounded to three decimals:
count mean std min max rms
Leeds_Temperature 8760 9.566 5.208 -3.33 21.88 10.891
Leeds_Humidity 8760 80.058 8.303 53.00 100.00 80.487
Leeds_Wind_Speed 8736 10.755 4.783 0.00 28.60 11.771
Leeds_Rainfall 8760 0.068 0.293 0.00 4.30 0.301
0.25 0.50 0.75
Leeds_Temperature 5.708 9.98 13.402
Leeds_Humidity 74.000 80.00 86.000
Leeds_Wind_Speed 7.400 10.60 13.900
Leeds_Rainfall 0.000 0.00 0.000We ran them on 9 October 2026 with numpy 2.1.3, pandas 2.2.3, Python 3.12.15. A test works out the panel’s numbers on every change to the site and checks that they are the ones on this page and that they match NumPy’s to about 12 significant digits. Download the sample file (CSV, 299 KB).
What each statistic means
- Count
- The values that are there; empty cells are left out of every other statistic.
- Missing
- Empty cells, and markers such as NA or n/a, with their share of the rows.
- Min and Max
- The smallest and the largest value.
- Mean
- The sum of the values divided by the count.
- Median
- The middle value once the values are sorted; with an even count, halfway between the middle two. Half the values are below it, half above.
- Std dev
- The sample standard deviation: the square root of the sum of squared differences from the mean, divided by n − 1, as MATLAB’s std and Excel’s STDEV. 0 for a single value.
- RMS
- The root mean square: the square root of the mean of the squared values. For a signal that swings around zero, its typical size.
- Peak to peak
- Max minus min.
- Q1 and Q3
- The quartiles: a quarter of the values lie below Q1 and a quarter above Q3. Between two values they are interpolated linearly, as NumPy, pandas and Excel’s QUARTILE.INC do; MATLAB’s quantile uses another rule, so for a few values its Q1 and Q3 can differ slightly (the median is the same).
- IQR
- The interquartile range, Q3 minus Q1: the spread of the middle half of the values, which a few extreme values do not move.
For the rows in view, the whole file or between cursors
The panel has three choices. Visible range, the default, covers the rows the chart shows: drag across the chart to zoom into a part (or use the scroll wheel, or a pinch on a touch screen), and the numbers follow once the chart rests. Whole file covers every row, whatever the zoom. Between cursors appears when the difference cursors are on (the cursor button over the chart, or the D key): it covers the rows from cursor C1 to C2, which you can drag to an exact time.
Whatever the choice, every value in the range is used at full precision, millions of rows too: the chart may draw an overview of a long file, but the statistics never come from it.
Text and category columns
Columns of text, such as a station name or a status, have no mean. Choose Show statistics in the column’s menu in the table: the panel shows its count, missing values, the number of distinct values and the most common ones, over the whole file.
Checked against NumPy
The same numbers as NumPy and pandas. On every change to the site, our own tests work out the panel’s numbers for the worked example above and for the sample signal of our accuracy page, and compare them with NumPy’s, standard deviation (n − 1) included. See every check.
Private by design: nothing is uploaded
Measurement and business data are often confidential. This tool reads your file and works out the statistics in your browser, so the file and its name never leave your device. Files with millions of rows work: the practical limit is your device’s memory.
Next steps with your data
- CSV histogramHow the values of a column are spread, in bins you choose.
- Large CSV viewerEach column’s type, and sort, filter and search the rows.
- FFT from CSVThe frequencies in a measured signal, with the PSD and Grms.
- How we check our mathsThe statistics checked against NumPy by our own tests.
- CSV plotterPlot the columns, zoom in and read the statistics of what you see.
Frequently asked questions
How do I get the statistics of a CSV file?
Open the file in the tool at the top of this page. The statistics panel opens by itself with a card for each number column, up to eight: count, missing values, min, max, mean, median, standard deviation, RMS, peak to peak, the quartiles Q1 and Q3, and the IQR.
Is the standard deviation the sample or the population one?
The sample one, divided by n − 1, the same as MATLAB’s std, Excel’s STDEV and pandas’ std. NumPy’s std divides by n unless you pass ddof=1, which is why it can differ slightly for short columns.
Does it give the median and quartiles?
Yes: the median, Q1, Q3 and the IQR of every number column, for the rows in view, the whole file or between the cursors, the same as NumPy’s and pandas’ quantile. To see them as a picture, switch a chart to a box plot: one box per column, with its whiskers and outliers.
Can I get the statistics of part of the file?
Yes. The panel starts on “Visible range”: zoom the chart into a time range and the numbers are for that range. For an exact span, switch on the difference cursors, place them, and choose “Between cursors”. “Whole file” always covers every row.
What about text columns?
Choose “Show statistics” in a text column’s menu in the table: the panel shows its count, missing values, how many distinct values it has and the most common ones.
Does it work on big files?
Yes. The statistics use every row, at full precision, also for files with millions of rows; the practical limit is your device’s memory. The panel rounds what it shows to seven significant digits.
Is my file uploaded?
No. The file is read and the statistics are calculated by your browser, on your own device. Neither the file nor its name is sent anywhere; you can check it in the Network tab of your browser’s developer tools.
Related tools and guides
- CSV plotterOpen a CSV, Excel, TXT, JSON, MATLAB, Parquet, HDF5 or LabVIEW TDMS file with millions of rows and plot it in several linked charts, with zoom and statistics. Works today.
- Large CSV viewerOpen a CSV with millions of rows in your browser: scroll every row, see each column’s type and statistics, chart any column. Works today.
- MATLAB .mat file viewerOpen v4 to v7.3 .mat files without MATLAB and plot any signal. Works today.
- Parquet viewerOpen large .parquet files, see the schema at once and plot millions of rows, without Python. Works today.
- TDMS viewerOpen .tdms files from LabVIEW, DIAdem and DAQmx loggers: every group, channel and property, each channel plotted against its time. Works today.
- HDF5 viewerOpen .h5, .hdf5 and NetCDF-4 .nc files: every group, dataset and attribute, each group’s datasets plotted against their time. Works today.
- MAT to CSVConvert the signals of a .mat file, v4 to v7.3, to a CSV for Excel or Python, without MATLAB. Works today.
- Parquet to CSVConvert a .parquet file to CSV in your browser, with the columns you pick. Works today.
- TDMS to CSVConvert the channels of a .tdms file to CSV, a group at a time, with its time column, without LabVIEW or Excel add-ins. Works today.
- HDF5 to CSVConvert the datasets of an .h5 or NetCDF-4 file to CSV, a table at a time, with its time column, without Python. Works today.
- Excel to CSVConvert any sheet of an .xlsx or .xlsm workbook to CSV, with the saved results of formulas, real dates and 15 significant digits. Works today.
- JSON to CSVConvert JSON and JSON Lines files to CSV: nested fields become columns named by their path, arrays stay as JSON text. Works today.
- CSV to MATConvert a CSV, Excel, JSON or Parquet file to a MATLAB .mat file: a field per column, with names and units, every row. Works today.
- Merge CSV filesAppend many CSV files into one, even with different columns or separators. Works today.
- Split CSV filesSplit a CSV too big for Excel into parts of 1,000,000 rows, parts of a size you choose, or one file per value of a column. Works today.
- CSV row counterCount the lines in a CSV, TSV or TXT file of any size. Works today.
- CSV histogramA histogram of any number column, with automatic bins or 10 to 200 of them, and each bin’s count as a table. Works today.
- CSV too large for Excel?Open every row of a CSV beyond Excel’s 1,048,576-row limit, or work around the limit in six other ways.
- FFT and PSD from a CSVTurn a signal column into an FFT spectrum or a PSD with Grms, with results checked against SciPy. Works today.
- PSD calculatorTurn a vibration column into a power spectral density (Welch) in g²/Hz, with the Grms of any band and a dB view. Works today.
- Spectrogram from CSVSee how the frequencies of a measured signal change over time, as a heat map in dB, with the window and range you choose. Works today.
- FRF and coherencePick an input and an output column and get the frequency response (H1, H2, magnitude and phase) and their coherence. Works today.
- The MegaRows toolboxWhat works today and what is coming next, and why nothing is ever uploaded.
Coming soon to MegaRows: CSV to Excel and PDF reports · Compare CSV versions.
MegaRows processes files locally in your browser. Nothing is uploaded, not even the file name.