pandas交叉表与透视表学习
交叉表与透视表什么作用
交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(用于统计分组频率的特殊透视表)
pd.crosstab(value1, value2)
透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数
data.pivot_table()
DataFrame.pivot_table([], index=[])
案例分析
数据准备
data.head()
data.index
time = pd.to_datetime(data.index)
time
time.weekday
data["week"] = time.weekday data.head()
# 2、假如把p_change按照大小去分个类0为界限 data['posi_neg'] = np.where(data['p_change'] > 0, 1, 0) data.head()
# 通过交叉表找寻两列数据的关系
count = pd.crosstab(data['week'], data['posi_neg'])
count
但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?
- 对于每个星期一等的总天数求和,运用除法运算求出比例
sum = count.sum(axis=1).astype(np.float32) sum
ret = count.div(sum, axis=0) #除法
ret
展示:
ret.plot(kind="bar", stacked=True) plt.show()
使用pivot_table(透视表)实现
使用透视表,刚才的过程更加简单
data.pivot_table(["p_n"], index="week")