在使用 Excel 中,经常会用到数据透视表。所以在 Python 这里,也简单演示下。
1 2 3 4 5
| from pandas import Series,DataFrame import pandas as pd import matplotlib.pyplot as plt %matplotlib inline
|
1 2 3 4 5 6
| tips = sns.load_dataset('tips')
tips.head()
|
![image.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604554554123-9250f1df-8b4b-4085-8ec9-59b6286caeff.png#align=left&display=inline&height=332&margin=%5Bobject%20Object%5D&name=image.png&originHeight=332&originWidth=702&size=36014&status=done&style=none&width=702)
数据透视表
1 2 3
| piovt_table = tips.pivot_table(values='tip', index='day') piovt_table
|
![image.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604554659969-4efd0cd0-8844-4eb2-8470-e6f7051974b8.png#align=left&display=inline&height=312&margin=%5Bobject%20Object%5D&name=image.png&originHeight=312&originWidth=214&size=12753&status=done&style=none&width=214)
1 2 3
| piovt_table = piovt_table.divide(piovt_table.sum(),axis=1) piovt_table
|
![image.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604554679388-52f80643-052f-4c18-97ca-6ff7d0164391.png#align=left&display=inline&height=314&margin=%5Bobject%20Object%5D&name=image.png&originHeight=314&originWidth=206&size=13637&status=done&style=none&width=206)
数据交叉表
1 2 3
| cross_table = pd.crosstab(index=tips['day'],columns=tips['size']) cross_table
|
![image.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604554698174-521c9d2b-bebb-43f7-ba13-2738c4cb2e37.png#align=left&display=inline&height=314&margin=%5Bobject%20Object%5D&name=image.png&originHeight=314&originWidth=354&size=15650&status=done&style=none&width=354)
1 2 3
| df = cross_table.div(cross_table.sum(1),axis=0) df
|
![image.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604554719577-aa1c688d-56cf-4ff6-b4d8-0ad5880215cf.png#align=left&display=inline&height=336&margin=%5Bobject%20Object%5D&name=image.png&originHeight=336&originWidth=838&size=35600&status=done&style=none&width=838)
1 2
| df.plot(kind='bar',stacked=True)
|
![output_8_1.png](https://cdn.nlark.com/yuque/0/2020/png/613759/1604554497569-6e7dc223-136c-4745-b68c-547397776dba.png#align=left&display=inline&height=275&margin=%5Bobject%20Object%5D&name=output_8_1.png&originHeight=275&originWidth=372&size=6158&status=done&style=none&width=372)