Pivot tables for CSV files in the terminal.
Tested on Python 3.6 and 2.7.
pip install csvpivot
Say you have a CSV file such as:
name,country,gender,salary Oliver,UK,M,10000 Jack,UK,M,21000 Emily,UK,F,32000 Harry,UK,M,43000 Adam,France,M,54000 Paul,France,M,65000 Louise,France,F,76000 Alice,France,F,87000 Emma,Germany,F,98000
We could then find the average salary in each country:
$ csvpivot test.csv --rows country --values 'mean(salary)' country,mean(salary) France,70500 Germany,98000 UK,26500
It would be useful to find out the maximum and minimum values too though:
$ csvpivot test.csv --rows country --values 'mean(salary)' 'min(salary)' 'max(salary)' country,mean(salary),min(salary),max(salary) France,70500,54000,87000 Germany,98000,98000,98000 UK,26500,10000,43000
As well as
max, CSV Pivot also supports
concatuniq. All require numerical values apart from the last two. If numbers contain commas they are interpreted as thousands separators and removed.
Columns are also supported. So we could break down our data by gender:
$ csvpivot test.csv --rows country --values 'mean(salary)' --columns gender country,mean(salary):F,mean(salary):M France,81500,59500 Germany,98000, UK,32000,24666.666666666668