Manipulating Pandas dataframes and pivoting

In [1]:
import pandas
from numpy import *
In [2]:
f = pandas.read_csv('fruit_sales_log.csv')
f.head()
Out[2]:
Date Seller Item Amount
0 07/01/17 Yiqing watermelons 6.21
1 07/01/17 Sakar watermelons 12.33
2 07/01/17 Yiqing apples 18.02
3 07/02/17 Sakar watermelons 1.95
4 07/04/17 Yiqing watermelons 14.88

Having selected and copied the data in a spreadsheet, for example:

In [3]:
# fix headers
f.columns = [item.strip() for item in f.columns]
f.columns
Out[3]:
Index(['Date', 'Seller', 'Item', 'Amount'], dtype='object')
In [4]:
f[['Seller','Amount']]
Out[4]:
Seller Amount
0 Yiqing 6.21
1 Sakar 12.33
2 Yiqing 18.02
3 Sakar 1.95
4 Yiqing 14.88
5 Samuel 11.73
6 Jonathan 5.11
7 Anthony 14.68
8 Samuel 4.79
9 Jonathan 13.06
10 Jonathan 3.61
11 Yiqing 4.54
12 Sakar 5.16
13 Samuel 3.17
14 Anthony 11.75
15 Yiqing 11.19
16 Katherine 2.93
17 Samuel 1.91
18 Samuel 1.89
19 Sakar 7.59
20 Anthony 2.85
21 Sakar 15.35
22 Katherine 13.92
23 Yiqing 17.35
24 Yiqing 11.87
25 Yiqing 2.14
26 Jonathan 12.57
27 Jonathan 11.68
28 Yiqing 13.83
29 Anthony 7.26
30 Megan 7.07
31 Jonathan 18.64
32 Samuel 17.73
33 Samuel 2.86
34 Megan 4.99
35 Samuel 18.06
36 Sakar 10.53
37 Anthony 6.15
38 Sakar 11.17
39 Anthony 14.95
40 Megan 13.39
41 Anthony 9.58
42 Yiqing 14.23
43 Anthony 19.06
44 Megan 16.69
45 Megan 14.89
46 Jonathan 6.96
47 Sakar 8.68
48 Jonathan 1.29
49 Samuel 18.20
In [12]:
f.pivot_table(values='Amount',index='Seller',columns='Item',aggfunc=sum,margins=True).fillna(0)
Out[12]:
Item apples peaches watermelons All
Seller
Anthony 34.64 17.90 33.74 86.28
Jonathan 5.11 12.57 55.24 72.92
Katherine 2.93 0.00 13.92 16.85
Megan 12.06 16.69 28.28 57.03
Sakar 18.12 16.33 38.31 72.76
Samuel 6.66 29.46 44.22 80.34
Yiqing 58.43 34.74 21.09 114.26
All 137.95 127.69 234.80 500.44

Does this remind you of GROUP BY in sql?