pd.crosstab交叉表及画图

最近一直都在读唐亘老师的《精通数据科学:从线性回归到深度学习》,所以代码都是从这本书上来的,往后看的时候,再回忆一下前面作图用的函数,发现自己还是一知半解,所以今天就来记录一下pandas库里的crosstab交叉

import pandas as pd
import numpy as np
#用seed固定生成的随机数
np.random.seed(1223)
#生成0到99中20个随机整数
a=np.random.randint(0,100,20)
#创建DataFrame并把数据a作为第一列数据录入
data=pd.DataFrame(a,columns=['a'])
#增加一列label是从0到1的20个随机整数
data['label']=np.random.randint(0,2,20)
#把第一列a按照最小值,25%分位数,50%分位数,75%分位数到最大值分为4份
cross_data1=pd.qcut(data['a'],[0,0.25,0.5,0.75,1])
#用crosstab对数据进行分类汇总
cross1=pd.crosstab(cross_data1,data['label'])
print(cross1)

显示结果如下

label           0  1
a                   
(16.999, 35.5]  2  3
(35.5, 46.5]    3  2
(46.5, 67.0]    4  1
(67.0, 99.0]    2  3

还有就是我觉得最神奇的部分画图

import matplotlib.pyplot as plt
#对数据cross1进行归一化,axis=0表示对行数据操作
cross_norm=cross1.div(cross1.sum(1).astype(float),axis=0)
cross_norm.plot(kind='bar')
plt.show()


交叉报表

还有一个马赛克图,props是设置两种类别的颜色,stack()我认为是堆积图的意思,没有的话就会报错:You must pass an index if data is a DataFrame

from statsmodels.graphics.mosaicplot import mosaic
props = lambda key: {"color": "0.45"} if '0' in key else {"color": "#C6E2FF"}
mosaic(cross1[[0, 1]].stack(), properties=props)


马赛克交叉报表
https://www.jianshu.com/p/1cf8ebbef3f1

Python量化投资网携手4326手游为资深游戏玩家推荐:《《纯白魔女》:一周联动活动汇总,你想要的蛋池全都有!

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
ggplot
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论