Pandas-交叉表与透视表

1 概念

  • 交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(用于统计分组频率的特殊透视表)
    • pd.crosstab(value1, value2)
  • 透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数
    • data.pivot_table()
    • DataFrame.pivot_table([], index=[])

2 案例分析

2.1 数据准备

准备两列数据,星期数据以及涨跌幅是好是坏数据,进行交叉表计算

# 寻找星期几跟股票张得的关系
# 1、先把对应的日期找到星期几
date = pd.to_datetime(data.index).weekday
data['week'] = date

# 2、假如把p_change按照大小去分个类0为界限
data['posi_neg'] = np.where(data['p_change'] > 0, 1, 0)

# 通过交叉表找寻两列数据的关系
count = pd.crosstab(data['week'], data['posi_neg'])

# 算数运算,先求和
sum = count.sum(axis=1).astype(np.float32)

# 进行相除操作,得出比例
pro = count.div(sum, axis=0)

2.2 查看效果

pro.plot(kind='bar', stacked=True)
plt.show()

2.3 使用pivot_table(透视表)实现

# 通过透视表,将整个过程变成更简单一些
data.pivot_table(['posi_neg'], index='week')
posted @ 2021-09-11 10:36  Trouvaille_fighting  阅读(211)  评论(0)    收藏  举报