2021-04-06 python数据处理系统学习(二十一)透视图与交叉表
1、透视图
求sum
pd.pivot_table(data=data1,index='信誉评级和违约记录',columns='进项有效合作单位数量',values='销项有效合作单位数量',aggfunc=[np.sum],margins=True,fill_value=0,margins_name='总计平均值')
Out[33]:
sum ...
进项有效合作单位数量 1 2 3 4 6 7 8 ... 877 905 1512 1564 2598 3623 总计平均值
信誉评级和违约记录 ...
40 0 8 1 0 2 20 25 ... 0 0 0 0 0 0 779
50 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 16
60 62 7 0 157 3 0 0 ... 0 820 0 0 0 0 10935
70 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 63
80 485 62 0 0 0 0 19 ... 26 0 0 0 0 0 2898
100 0 0 0 0 0 25 0 ... 0 0 142 1198 2659 1567 12329
总计平均值 547 77 1 157 5 45 44 ... 26 820 142 1198 2659 1567 27020
[7 rows x 97 columns]
columns可以用列表引入多个
2、交叉表
主要是用来计算频数、频率。
pd.crosstab(index=data1['信誉评级和违约记录'],columns=data1['进项有效合作单位数量'],margins=True)
Out[34]:
进项有效合作单位数量 1 2 3 4 6 7 8 9 ... 869 877 905 1512 1564 2598 3623 All
信誉评级和违约记录 ...
40 0 2 1 0 1 2 1 1 ... 0 0 0 0 0 0 0 24
50 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 2
60 3 1 0 2 1 0 0 0 ... 0 0 1 0 0 0 0 32
70 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 1
80 1 1 0 0 0 0 1 0 ... 0 1 0 0 0 0 0 37
100 0 0 0 0 0 1 0 0 ... 1 0 0 1 1 1 1 27
All 4 4 1 2 2 3 2 1 ... 1 1 1 1 1 1 1 123
[7 rows x 97 columns]
normalize之后:
pd.crosstab(index=data1['信誉评级和违约记录'],columns=data1['进项有效合作单位数量'],margins=True,normalize=True)
Out[35]:
进项有效合作单位数量 1 2 3 ... 2598 3623 All
信誉评级和违约记录 ...
40 0.00000 0.01626 0.00813 ... 0.00000 0.00000 0.195122
50 0.00000 0.00000 0.00000 ... 0.00000 0.00000 0.016260
60 0.02439 0.00813 0.00000 ... 0.00000 0.00000 0.260163
70 0.00000 0.00000 0.00000 ... 0.00000 0.00000 0.008130
80 0.00813 0.00813 0.00000 ... 0.00000 0.00000 0.300813
100 0.00000 0.00000 0.00000 ... 0.00813 0.00813 0.219512
All 0.03252 0.03252 0.00813 ... 0.00813 0.00813 1.000000
[7 rows x 97 columns]