pandas数据分析39——数据透视表简单实现

案例实现

其实就是两个分类变量,组成多少种出现的情况,类似于混淆矩阵,交叉表。


代码实现

df = pd.DataFrame({'时间': [*'AABBBA'],
                   '地区': [*'xxyzzz']})
df['值']=np.random.randint(1,3,size=(6,))
df

 时间地区是我给的样例名称,还可以是不同的班级不同的老师,不同的设备不同的型号...反正就是两个分类变量就行。

需要统计他们各种组合出现的次数:

(df.groupby(['时间', '地区'])
    .size()
    .unstack()
    .fillna(0)
    .astype(int)
)

 还可以这样:

pd.crosstab(df['时间'],df['地区'])

 一样的效果。


数据透视分组聚合

上面是两个分类变量在玩,我们还有第三个变量:值,也带入进来怎么计算呢?

例如我们需要查看不同时间不同地区的销售量总和,可以这么写:
 

pd.pivot_table(df,index='时间',columns='地区',values='值',aggfunc=np.sum,margins=True)

 aggfunc=np.sum,表示使用求和函数,margins=True表示添加汇总行。

还可以这样:

df.groupby(['时间', '地区'])['值'].sum()

 也能算。

猜你喜欢

转载自blog.csdn.net/weixin_46277779/article/details/132322847