pandas - 交叉表与透视表

本文探讨了股票的每日涨跌是否与星期几存在相关性,利用Python的pandas库中crosstab和pivot_table函数生成交叉表和透视表,以此来分析星期几对股票涨跌的影响。首先介绍了如何创建交叉表,包括数据预处理、计算涨跌幅分类和生成交叉表,然后通过算数运算求出涨跌幅好坏的比例,并用柱状图可视化展示。最后,展示了如何使用pivot_table简化整个过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标

  • 应用crosstab和pivot_table实现交叉表与透视表
  • 应用:股票的每日涨跌跟星期几关系大

1 交叉表与透视表什么作用

探究股票的涨跌与星期几有关?

以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还是坏,里面的数据代表比例

可以理解为所有时间为星期一等等的数据当中涨跌幅好坏的比例

2 使用crosstab(交叉表)实现上图

  • 交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)
pd.crosstab(value1, value2)

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'])

但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?

  • 对于每个星期一等的总天数求和,运用除法运算求出比例
# 算数运算,先求和
count.sum(axis=1).astype(np.float32)

pro = count.div(count.sum(axis=1).astype(np.float32), axis=0)

2.2 为了更好的看出效果

使用plot画出这个比例,使用一直stacked的柱状图

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

3 使用pivot_table(透视表)实现上述功能

使用透视表,刚才的过程更加简单

  • DataFrame.pivot_table([], index=[])
# 通过透视表,将整个过程变成更简单一些
data.pivot_table(['posi_neg'], index=['week'])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值