利用pandas高效处理股票月收益率(每个月的最后一天不固定)

月收益率

经过查询,月收益率=(这个月月末收盘价-上个月月末收盘价)/上个月月末收盘价

数据来源

网易财经-中兴通讯数据,比较全面并且支持下载历史数据
http://quotes.money.163.com/trade/lsjysj_000063.html?year=1997&season=4
在这里插入图片描述

问题是什么?

由于要求月末数据,但是存在春节放假和2月底可能不是31和30号,然后每个月和年份比较多,因此采取python来解决问题!将其按照年-月进行分组,然后返回该分组的第一个值(即月末数据)

代码

"""
author: wpc
date: 2020-12-16   16:30
"""
# 引入模块
import pandas as pd
import numpy as np
# 读取数据,编码格式那里由于用了wps.它帮我变成了GBK
df = pd.read_csv('data/zx.csv',encoding='GBK')
#序列处理,并且变为 1997-11  这种格式
df.index = pd.to_datetime(df['日期'])
time_month = df.index.strftime('%Y-%m')
# 将变为1997-11 格式的数据进行分组
df.index = time_month
df.groupby(df.index)
#调用groupby的first方法,返回第一个值。即月末的值
data = df.groupby(df.index).first()
#导出csv文件
data.to_csv('monthpro.csv',index=False,encoding='utf-8')


print(df)

然后就可以用Excel打一个简单公式然后计算出来啦!!
然后我把不要的删除了,然后看一下导出结果!
在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
处理多只股票金融时间序列数据,计算对数收益率可以使用 Python 中的 pandas 库。以下是一个示例代码: ```python import pandas as pd # 读取数据,假设数据保存在csv文件中 df = pd.read_csv('stock_data.csv') # 将日期列转换为日期类型 df['date'] = pd.to_datetime(df['date']) # 将数据按照股票代码进行分组 grouped = df.groupby('code') # 定义一个函数,用于计算对数收益率 def calculate_log_return(series): return pd.Series(series).apply(lambda x: np.log(x) - np.log(series.shift(1))).dropna() # 对每个股票数据进行对数收益率计算 log_return_df = grouped['price'].apply(calculate_log_return) # 将计算得到的对数收益率数据保存到csv文件中 log_return_df.to_csv('log_return_data.csv') ``` 在上述代码中,假设股票数据保存在 `stock_data.csv` 文件中,文件中包含了每个股票的代码、日期和价格数据。首先通过 pandas 库读取数据,并将日期列转换为日期类型。然后,使用 `groupby` 函数将数据按照股票代码进行分组。接着,定义了一个函数 `calculate_log_return`,用于计算对数收益率最后,对每个股票数据应用 `calculate_log_return` 函数进行计算,得到对数收益率数据,并将数据保存到 `log_return_data.csv` 文件中。 需要注意的是,对数收益率计算方式是通过当前价格除以前一天价格的对数差来计算的。在实际计算中,需要注意对数值不存在或者为负数的情况进行处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值