【PY从0到1】 金融数据处理3
# tushare ID: 409200 # 【PY从0到1】 金融数据处理3 # 这节是金融时间序列分析处理的内容 # 导入库 import numpy as np import pandas as pd import tushare as ts import datetime from datetime import datetime import matplotlib.pyplot as plt import warnings; warnings.simplefilter('ignore') # 1> 时间获取 # 获取当前时间 now_time = datetime.now() now_time.year # 获取当前年份 now_time.month # 获取当前月份 now_time.day # 获取当前日 # 2> 格式转换 now_time2 = now_time.strftime('%Y-%m-%d') # 将时间按格式转换(年月日表示) # 2021-02-17 上述方法不能转换Series str_time = str(now_time2) # 转化为字符串 # '2021-02-17' # 将str转化为datetime # ① date_time1 = datetime.strptime(str_time, '%Y-%m-%d') # 2021-02-17 00:00:00 # ② from dateutil.parser import parse date_time2 = parse(str_time) str_time2_1 = '01-08-2018' date_time2_2 = parse(str_time2_1, dayfirst = True) # dayfirst = True第一个是日 # ③ str_time3 = pd.Series(['2019/07/01', '2019/07/02', '2019-07-03', '2019-07-04']) date_time3 = pd.to_datetime(str_time3) # 常用 # 3> Period # ① time_period1 = pd.period_range('2020-01-01', periods = 6, freq='M') # PeriodIndex(['2020-01', '2020-02', '2020-03', # '2020-04', '2020-05', '2020-06'], # dtype='period[M]', freq='M') time_period1_2 = time_period1 + 1 # 可以直接将月份+1 # ② time_period2 = pd.period_range('1/1/2020', '12/31/2020', freq='M') # 4> 应用 # 获取数据 # pro = ts.pro_api('') data = pro.daily(ts_code='000001.SZ', start_date='20201101', end_date='20201201') # 数据处理 data['date'] = data['trade_date'] del data['trade_date'] data.index = pd.to_datetime(data['date']) data = data.sort_index(ascending=True) # 对索引重新排序 data_close_price = data['close'] data_close_price = data_close_price.to_frame() # 转化为Dataframe # 注意data_close_price转换前是Series。有很多切片操作无法完成,所以这里需要转换一下。 # 数据切片 data_close_price['2020-11-04':'2020-11-06'] data_close_price.loc['2020-11-05'] data_close_price['2020-11'] data_close_price['2020-11':'2020-11-15'] # 数据移动 data_close_price['yesterday_close'] = data_close_price['close'].shift(1) # 计算收益率 data_close_price['per_earnings'] = data_close_price['close'] / data_close_price['yesterday_close'] - 1 # 计算累计收益率 data_close_price['cum_earnings'] = (data_close_price['per_earnings'] + 1).cumprod() # 计算某个月的日平均收益 a = data_close_price['per_earnings']['2020-11'].mean() print(a) # 0.00586442964369066
AI量化的成长之路

浙公网安备 33010602011771号