· 6 min read
3 Time Series Resampling Tools, Compared
Heshan Fernando
Co-founder & COO
Sensor readings every thirty seconds, and you need hourly averages. Or daily sales that need to become monthly totals for a report. The data is fine; the interval is wrong.
Resampling sounds like a rounding exercise and is not. Averaging a rate and summing a count give different answers from the same operation, an hour with two readings and an hour with a hundred should probably not be weighted equally, and what happens to intervals with no data at all is a decision someone has to make — usually silently, and usually wrong.
How to judge a resampling approach
Can you choose the aggregation? Sum, mean, min, max, last — the right one depends on whether the value is a count, a rate or a level, and no tool can guess.
What happens to gaps? An empty interval can become zero, become null, or vanish from the output. All three are defensible and they produce different charts.
Does it handle irregular input? Real sensor data arrives late, twice, or not at all. Regular resampling assumes a tidy series.
How much setup? A Python environment, a spreadsheet with Power Query, or a browser tab.
The comparison
| Approach | Best for | Free tier | Watch out |
|---|---|---|---|
pandas resample() | Full control, repeatable pipelines | Free, open source (BSD 3-Clause) | Requires Python and a datetime index |
| Power Query Group By | Analysts already working in Excel | Built into Excel and Power BI | You group by a derived period, not a true resample |
| Spreadsheet pivot table | A one-off monthly rollup | Free with any spreadsheet | No control over empty intervals |
Facts checked August 2026; tools change. Table covers only the 3 alternatives — our tool gets its own section below.
pandas resample()
The reference implementation, and the one every other approach is imitating. Given a datetime index, resample() converts to a different frequency with a rule like "3min", "D" or "ME", then you chain the aggregation — .sum(), .mean(), .count(), or .ffill() and .bfill() when upsampling.
The details it exposes are the ones that matter and that other tools hide: closed controls which side of each interval is inclusive, label controls which edge names the bin, and origin and offset control where bins start. Those three decide whether your hourly buckets run 09:00–09:59 or 09:01–10:00, which sounds pedantic until two systems disagree. Free and open source under BSD 3-Clause. The cost is Python.
Power Query Group By
The practical route for anyone living in Excel or Power BI. Group By summarises rows according to values in one or more columns, with Sum, Average, Median, Min, Max, Percentile, Count distinct values, Count rows and All rows available as operations.
It is genuinely capable and it is not quite resampling. There is no interval rule — you add a column deriving the period (month, week, hour) and group by that, which works well for calendar periods and awkwardly for arbitrary intervals like fifteen minutes. Empty periods simply do not appear, since there are no rows to group. Built into Excel and Power BI at no extra cost.
Spreadsheet pivot table
The path of least resistance for a one-off. Put dates in rows, group them by month or quarter, drop the value in as a sum or average, and you have your rollup in under a minute with nothing to install and nothing to learn.
Its limitation is the same as Power Query’s and sharper: intervals with no data are absent rather than zero, so a chart built on the result silently closes the gaps and implies continuity that is not there. For a monthly summary of steady data that is fine. For sensor data with outages it is misleading.
Time Series Resampler
Ours resamples to a coarser or finer interval, letting you choose how values aggregate and what happens to gaps in the series. Making the gap decision explicit is the deliberate difference — every approach here has a gap policy, and two of the three express it by silently omitting the interval, which is the one behaviour most likely to produce a misleading chart.
What it does not do: run inside a pipeline the way pandas does, or handle the bin-edge subtleties that closed and origin expose. For production data engineering, pandas is the correct tool and a browser is not. For understanding a series, or preparing a chart without opening a notebook, ours covers the decisions that change the answer.
Which one to pick
- A repeatable pipeline — pandas.
- Data already in Excel or Power BI — Power Query Group By.
- A quick monthly rollup of tidy data — a pivot table.
- Explicit control over aggregation and gaps — the tool below.
How to do it with Time Series Resampler
- Open the Time Series Resampler and load your series.
- Choose the target interval, then the aggregation — sum for counts, mean for rates, last for levels.
- Decide what an empty interval means: zero, missing, or omitted. This changes the chart more than the aggregation does.
- Compare the resampled totals against the original. A sum that has changed means something was dropped.
The walkthrough is in how to resample time series data correctly. Other data tools are in the tools directory.
You might also need
If the timestamps are inconsistent before you start, the CSV Type Detector shows how each column is actually being read.
For visualising the result, the Bar Race Chart Maker and other chart tools are in the directory.
Frequently asked questions
What is the difference between downsampling and upsampling?
Downsampling moves to a coarser interval — minutes to hours — and requires an aggregation, because many values become one. Upsampling moves finer, and requires a fill rule, because one value must become many or leave gaps.
Should I sum or average when resampling?
Sum for counts and totals, where the quantity accumulates. Mean for rates and measurements, where it does not. Summing a temperature series produces a number with no meaning, and averaging a sales count understates the period.
What should happen to intervals with no data?
It depends what missing means. If no readings genuinely means zero activity, zero is right. If it means the sensor was offline, zero is a fabrication and null is honest — and a chart that interpolates across it is telling a story the data does not support.
Final thought
Decide the gap policy before the aggregation. Everyone argues about sum versus mean, and the empty intervals — which nobody discusses — are what quietly change the shape of the chart.