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()

 也能算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值