本文介绍透视表pivot_table和交叉表crosstab。
import pandas as pd import numpy as np %matplotlib inline %matplotlib notebook import matplotlib.pyplot as plt1.1 制作数据透视表方法1 : groupby + 聚合函数
tips.groupby(['sex','smoker']).mean().
1.2 制作数据透视表方法2 :pivot_table
# pivot_table1:整个dataframe tips.pivot_table(index=['sex','smoker']).
# pivot_table2:dataframe中一部分数据 tips.pivot_table(['tip_pct','size'],index=['sex','day'],columns='smoker').
# pivot_table3:传入小计margins=True tips.pivot_table(['tip_pct','size'],index=['sex','day'],columns='smoker',margins=True).
# pivot_table4:传入其他聚合函数aggfunc tips.pivot_table('tip_pct',index=['sex','smoker'],columns='day',aggfunc=len,margins=True).
# pivot_table5:fill_value tips.pivot_table('size',index=['time','sex','smoker'],columns='day',aggfunc=np.sum,fill_value=0).
2.1 用groupby制作出crosstab
# 用groupby制作出crosstab data.groupby(['Gender','Handedness']).count().unstack().
2.2 用pivot_table制作出crosstab
# 用pivot_table制作出crosstab data.pivot_table('sample',index=['Gender'],columns='Handedness',aggfunc='count',margins=True).
2.3 crosstab函数
# crosstab1 pd.crosstab(data.Gender,data.Handedness,margins=True).
# crosstab2 pd.crosstab([tips.time,tips.day],tips.smoker,margins=True)