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")

 

posted @ 2021-01-25 21:31  ziyuliu  阅读(155)  评论(0编辑  收藏  举报