开发者学堂课程【Python 数据分析库 Pandas 快速入门:交叉表与透视表】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/607/detail/8865
交叉表与透视表
内容简介:
一.怎么使用交叉表和透视表
二.用交叉表
三.用透视表
一.怎么使用交叉表和透视表
①如果你想要找到两个变量之间的关系就可以用交叉表或者透视表比如说有一张表就是交叉表和透视表做出来的关系,比如说要探究股票的涨跌和星期几的关系那么用常识就可以判断一下,股票的涨跌和星期几是没有关系的,行就是星期几,右边就是跌0就是跌,1就是涨了,从表里就可以看出星期几涨的和跌的差不多,所以可以看出股票的涨跌和星期几关系不大。
二.用交叉表
如果用交叉表实现这样的效果,交叉表的作用就是用于计算一列数据的分组个数(寻找两个列之间的关系)具体用就是 pd.crosstable(传入想要变量的关系列入value1,value2),首先要明确目标,要明白星期几和涨跌幅的关系pd.crosstable(星期数据列,涨跌幅数据列)现在没有现成的数据,用的还是读取进来的 stock,我们想要用这个数据来找到两者之间的关系,那首先第一步就先要把两个数据列准备好,首先准备星期数据列,我们怎么拿到星期几,时间在行索引,index 是日期的地方,日期定下来了,星期几就定下来了,那我们如果根据日期拿到星期几呢,pandas 日期类型,pd.to_datetime(stock.index放进来)之后用一个 date 接一下,就会出现 datetimeindex 一个新的对象,这个对象可以拿到列,原始的 stock,加上一列,那么这样,最右边就有星期日期了,第一步完成后,第二步就要弄涨跌幅链了,需要作一个判断>0标记为1,<0就是0,利用到 npwhere(stock里面p change>0,第二个参数1,不大于0就置于0)这样就是将返回的结果给加到 stock 里面,我们起一个名字就是 pona ,那星期的数据链就有了,涨跌幅的数据也有了,我们就可以调用交叉表,pd.crosstable,第一个数据链就是星期几,第二个数据链就是星期几和涨跌幅的关系,那么就会出来一张表,可以直视出两者直接的关系。
③ 我们想要得到占比就要计算,我们需要知道每一行的总数,然后做一个除法,data.sum 求和,我们现在想要按行求和,axis=1,我们想要得到占比就需要计算,需要知道每一行的总数,再做一个除法,把表保存,做一个 data,拿着 data 做一个求和,如果不做行列,那就是按列求和,现在我们要按行求和,每一行的和就有了,我们再做除法,这样我们就指定不了是按行还是按列了,很有可能出问题,我们还是用运算函数点一个 div,这样我们就可以按行或者按列了,默认的话就是不对的。
④那么拿到表之后,可以在后面点一个 plot,柱状图就是要设定一个 bar,添加一个参数就可以了,就会出现想要的效果。
三.用透视表
dataframe.privot_table 使用透视表,刚才的过程更加简单通过透视表,将整个过程变成更简单一些 data.pivot_table相当于对一个表,用原始的表stock将行跌幅进行预测,按 week 进行分组,最终出现一个结果,直接得出来的是1的结果的效果,将上面的数据对比,透视表能直接出比例,涨跌幅的字段能直接出比例,交叉表的是统计记数的结果。
总结一下就是当你想要探究星期几的关系就用交叉表或者透视表,就可以知道结果。