tradingview月K线数据统计月涨幅
tradingview月K线数据统计月涨幅遇到的一些问题及解决方法
# 以下为部分截取的代码
# 设置dataframe数字显示格式 pd.set_option('display.float_format',lambda x : '%.4f' % x) # 在导包的时候全局设置成保留四位小数 data_gc_2['change'] = data_gc_2['change'].apply(lambda x: format(x, '.2%')) # 针对具体的列设置成以百分数的形式显示 # 导入csv数据之后,把时间转换成datetime类型 data_gc_1['time'] = pd.to_datetime(data_gc_1['time'],infer_datetime_format=True) # datetime的列获取年和月 data_gc_1['year'] = data_gc_1['time'].dt.year data_gc_1['month'] = data_gc_1['time'].dt.month # 某一列每行增加的百分比计算。change列是close列增加百分比,即涨跌幅 data_gc_1['change'] = data_gc_1['close'].pct_change() # 上面的方法计算增加百分比,第一行位空值NaN,删除第一行空行 data_gc_2 = data_gc_1.dropna() # 数据透视,dataframe转换成三维数据 data_gc_3 = data_gc_2.pivot(index='year', columns='month', values='change')
# tradingview的月K线数据有坑:月和日会受不开盘的影响有误差,会出现在月初和月末的日期
# 解决方案:把日小于15的日期选出来,月-1;如果月是1,年-1,月等于12
# ①把day大于15和小于15分开
data_gc_1_reducemonth = data_gc_1[data_gc_1['time'].dt.day<15]
data_gc_1_noreducemonth = data_gc_1[data_gc_1['time'].dt.day>15]
data_si_1_reducemonth = data_si_1[data_si_1['time'].dt.day<15]
data_si_1_noreducemonth = data_si_1[data_si_1['time'].dt.day>15]
# day小于15里面,月份等于1和不等于1的区分开
data_gc_1_reducemonth_12 = data_gc_1_reducemonth[data_gc_1_reducemonth['month']==1]
data_gc_1_reducemonth_no12 = data_gc_1_reducemonth[data_gc_1_reducemonth['month']!=1]
data_si_1_reducemonth_12 = data_si_1_reducemonth[data_si_1_reducemonth['month']==1]
data_si_1_reducemonth_no12 = data_si_1_reducemonth[data_si_1_reducemonth['month']!=1]
# day小于15,月不是1的,月份-1;月是1的,月为12,年-1
data_gc_1_reducemonth_no12['month'] = data_gc_1_reducemonth_no12['month']-1
data_si_1_reducemonth_no12['month'] = data_si_1_reducemonth_no12['month']-1
data_gc_1_reducemonth_12['year'] = data_gc_1_reducemonth_12['year']-1
data_gc_1_reducemonth_12['month'] = 12
data_si_1_reducemonth_12['year'] = data_si_1_reducemonth_12['year']-1
data_si_1_reducemonth_12['month'] = 12
# 将月为12和非12的合并,再将day大于15和不大于15的合并
data_gc_1_reducemonth = pd.concat([data_gc_1_reducemonth_12, data_gc_1_reducemonth_no12])
data_si_1_reducemonth = pd.concat([data_si_1_reducemonth_12, data_si_1_reducemonth_no12])
data_gc_1 = pd.concat([data_gc_1_reducemonth, data_gc_1_noreducemonth]).sort_index(ascending=True)
data_si_1 = pd.concat([data_si_1_reducemonth, data_si_1_noreducemonth]).sort_index(ascending=True)