由于获取数据的时限性,在日线以下的数据,比如小时线只能获取一定时间范围,超过该时间就无法再获取了。根据实测,60分钟线大约能保存6个月的数据,5分钟线约保存15天数据,因此在实际数据处理过程中,需要定期保存。
每次处理需要读取旧数据df1,再读取新数据df2,df1和df2的数据必然会有重复,因此需要合并后的数据去重后进行保存。
dataframe中用于去重的函数为drop_duplicates() ,默认整行数据均相同才去重,也可以指定某索引进行单独去重。
#获取第一个df
df1 = ts.get_k_data('510050', start='2014-02-21',end='2014-04-01',ktype='D',autype='qfq')
#重构索引
df1.set_index(['date'], inplace = True)
#获取第二个df
df2 = ts.get_k_data('510050', start='2014-01-01',end='2014-04-01',ktype='D',autype='qfq')
#重构索引
df2.set_index(['date'], inplace = True)
#两个dataframe合并
df_new=pd.concat([df1, df2])
#检查去重
df_new = df_new.drop_duplicates()
#按照索引[日期]进行排序,升序
print(df_new.sort_index(ascending = True))
小坑一个:
实际去重操作会产生很大的问题,因为正常情况下df1是读取本地csv文件,df2是使用get_k_data获取的数据,这两者的去重无法实现,推断是数据格式的问题,这个问题至今无法解决,只能采用变通的方法,即df2的实时数据读取后保存再读取,以便和df1的数据格式保持一致,这样才能进行去重操作,虽然系统开销比较大,但也只能如此了