Free web tool

CSV group & aggregate

Group CSV by a key column and calculate count, sum, average, min, or max.

Input & settings

How to use

Need sales by store or ticket count by owner? Group one column, choose a value column, and reduce a long CSV to SUM, AVG, COUNT, MIN, or MAX.

  1. Paste the CSV and enter the group column and value column.
  2. Choose SUM, AVG, COUNT, MIN, or MAX.
  3. Check groups with blanks or unexpected values against the source rows before using the summary downstream.

When is this useful?

It is good for turning 1,000 detail rows into ten store totals, or a support log into counts by agent. That gives you a compact first look before deeper analysis.

COUNT has a different denominator

COUNT counts rows in the group and does not need the value cell to be numeric. SUM, AVG, MIN, and MAX only use values that parse as finite numbers. So COUNT and AVG can be based on different numbers of rows.

Non-numeric values are skipped for numeric aggregates

A -, N/A, or blank-looking value is not treated as a valid measurement. If a group has no usable numeric values, MIN and MAX are left blank. A blank result therefore means “no valid number to aggregate,” not a numeric zero.

AVG is also blank when a group has no usable numeric values. SUM remains zero when there is nothing numeric to add. That difference is intentional: blank means “no valid value to summarize,” while zero is a numeric result.

Group labels are exact strings

Tokyo, tokyo, and a value with trailing spaces are separate groups. If near-duplicate labels appear in the result, normalize the source values before relying on the summary.

Use the summary as a clue, not the last word

If a group has 100 rows by COUNT but far fewer usable numeric values, the value column may contain blanks or text. The aggregate is most useful when it sends you back to the exact part of the CSV worth checking.

The result does not list which source rows were skipped. When a number looks wrong, filter the original group and look for blanks, N/A, unit-suffixed text, or other values that did not parse as finite numbers.

Want the deeper explanation?