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

原文地址:https://www.cnblogs.com/a155-/p/14347129.html