选股策略1:5_group操作(python)

本文介绍了如何使用pandas库进行股票数据的groupby操作,包括按交易日期和股票代码分组,计数、描述、筛选数据,以及结合常用统计和数据处理技巧。通过实例演示了如何利用groupby进行平均值、最大值、累计和排名计算,以及年份分组。适合初学者理解股票数据分析基础。
摘要由CSDN通过智能技术生成

学习目标:选股策略1:5_group操作

学习内容:

1:导入必要库

import pandas as pd
pd.set_option('expand_frame_repr', False)  # 当列太多时不换行

2:从hdf文件中导入数据

# 从hdf文件中导入数据
stock_data = pd.read_hdf('all_stock_data_h5.h5', key='all_stock_data')

3:groupby常用操作汇总

# =====groupby常用操作汇总
# 根据'交易日期'进行group,将相同'交易日期'的行放入一个group,
print (stock_data.groupby('交易日期'))  # 生成一个group对象。不会做实质性操作,只是会判断是否可以根据该变量进行groupby
# group后可以使用相关函数,size()计算每个group的行数
print (stock_data.groupby('交易日期').size())  # 每天交易股票的个数

# 根据'股票代码'进行group,将相同'交易日期'的行放入一个group,
print (stock_data.groupby('股票代码').size())  # 每只股票交易的天数

# 获取其中某一个group
print (stock_data.groupby('股票代码').get_group('sz000007'))
# 其他常见函数
print (stock_data.groupby('股票代码').describe())  # 只会对数值变量进行describe
print (stock_data.groupby('股票代码').head(3))#前三行
print (stock_data.groupby('股票代码').tail(3))  # 每个group里面的行顺序,会保留。每组最后三行数据
print (stock_data.groupby('股票代码').first())
print (stock_data.groupby('股票代码').last())
print (stock_data.groupby('股票代码').nth(2))#指定每组某一行数据
# 将group变量不设置为index
print (stock_data.groupby('股票代码', as_index=False).nth(2))
# 在group之后,取一部分变量进行计算
# 计算每个group的均值
print (stock_data.groupby('股票代码')['收盘价', '涨跌幅'].mean())
# # 计算每个group的最大值
print (stock_data.groupby('股票代码')['收盘价', '涨跌幅'].max())
# # 计算每个group的加总
print (stock_data.groupby('股票代码')['收盘价'].sum())
# # 计算该数据在每个group中的排名rank()排名,pct参数百分比
print (stock_data.groupby('股票代码')['收盘价'].rank())
print (stock_data.groupby('股票代码')['收盘价'].rank(pct=True))
# 如何根据年份进行group
#print stock_data.groupby('交易日期').size()
print (stock_data.groupby(stock_data['交易日期'].dt.year).size())

# 也可以同时用多个变量来进行group,将这些变量的值都相同的行
print (stock_data.groupby(['股票代码', stock_data['交易日期'].dt.year]).size())

# 我们之前讲过的resample、fillna、apply等常见操作,在group里面都可以进行。
# 这些操作需要大家有一定的积累,若直接在group上进行这些操作不熟练,可以使用已下的方式。

# 遍历group,对每个group进行单独操作,然后将这些group合并起来。
# 语法:for key, group in df.groupby('列名'):

for code, group in stock_data.groupby('股票代码'):
    print (code)
    print (group)

    # 以下可以对各个group进行任意操作。
    group.fillna()
    

    # 操作完之后,将这些group再append起来
    group.apply()
# 在一开始不熟练的时候,可以多用遍历每个group的方式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值