最近在做数据,记录一下遇到的问题,解决的方式,
有一个数据,如图
我想统计每年的idx_reply, idx_sat, idx_default的频数 交叉统计。
探索了一下午,做法是这样的。
data_test
data_test.groupby(data_test['year'])['idx_reply'].value_counts().unstack()
使用groupby 默认会把分组的作为索引 ,如果不用 unstack, 就会是这样
用了unstack ,就整齐一点
同样的效果,也可以使用crosstab 达到。
pd.crosstab(index=data_test['year'], columns=data_test['idx_reply'])
使用pivot_table,没有办法弄出上面的效果。
感觉就是crosstab命令做直接。还可以计算百分比
这里crosstab的margins 选项是
normalize : bool, {'all', 'index', 'columns'}, or {0,1}, default False
Normalize by dividing all values by the sum of values.
- If passed 'all' or `True`, will normalize over all values.
- If passed 'index' will normalize over each row.
- If passed 'columns' will normalize over each column.
- If margins is `True`, will also normalize margin values.
后续还会继续学习。