选股策略1:4_批量导入数据及存储(hdf)(python)

学习目标:选股策略1:4_批量导入数据及存储(hdf)

学习内容:

1:导入必要库

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

2:导入数据函数

# 导入数据
def import_stock_data(stock_code):
    """
    只导入如下字段:'交易日期', '股票代码', '开盘价', '最高价', '最低价', '收盘价', '涨跌幅'
    最终输出结果按照日期排序
    :param stock_code:
    :return:
    """
    df = pd.read_csv(stock_code + '.csv', encoding='gbk')
    #print(df)
    
    df = df[['交易日期','股票代码', '开盘价', '最高价', '最低价', '收盘价', '涨跌幅']]
    df.sort_values(by=['交易日期'], inplace=True)
    df['交易日期'] = pd.to_datetime(df['交易日期'])
    df.reset_index(inplace=True, drop=True)

    return df

3:导入单个股票的数据

# 导入单个股票的数据
code = 'sz300001'
df =import_stock_data(code)

4:导入文件夹目录

# =====批量导入股票数据
# 系统自带函数os.walk,用于遍历文件夹中的所有文件,os是python自带的系统库
# 演示os.walk
for root, dirs, files in os.walk('stock_data'):
    # root输出文件夹,dirs输出root下所有的文件夹,files输出root下的所有的文件
    print ('root:', root)
    print ('dirs:', dirs)
    print ('files:', files)

5:批量读取文件名称

# ===批量读取文件名称
stock_list = []
for root, dirs, files in os.walk('stock_data'):
    # 当files不为空的时候
    if files:
        for f in files:
            if f.endswith('.csv'):
                stock_list.append(f[:8])
print(stock_list)

6:批量导入股票数据

# ===批量导入股票数据
all_stock_data = pd.DataFrame()
for code in stock_list:
    print (code)
    # 导入数据
    df =import_stock_data('stock_data/'+code)
    # 合并数据
    all_stock_data = all_stock_data.append(df, ignore_index=True)  # 注意此时若一下子导入很多股票的时候,可能会内存溢出
print (all_stock_data)

7:将数据存入hdf文件中

# 将数据存入hdf文件中
all_stock_data.to_hdf(
    'all_stock_data_h5.h5',
    key='all_stock_data',
    mode='w')

8:创建hdf文件

# =====将数据存入hdf文件
# 创建hdf文件
h5_store = pd.HDFStore( 'stock_data_H5_1.h5', mode='w')
# 批量读取股票并且存如store
for code in stock_list:
    print (code)
    # 导入数据
    df = import_stock_data('stock_data/'+code)
    # 存储数据方式1
    h5_store[code] = df
    # 存储数据方式2
    df.to_hdf('stock_data_H5_2.h5', key=code, mode='a')
# 关闭hdf文件
h5_store.close()




# 另外一种方式读取hdf数据
# print pd.read_hdf(
#     config.output_data_path + '/stock_data_H5_2.h5',
#     key='sz000006'
# )

9:读取hdf数据

h5_store.open()
# =====读取hdf数据
# 创建hdf文件
# h5_store = pd.HDFStore('stock_data_H5_1.h5', mode='r')
#h5_store中的key
print (h5_store.keys())
# 读取某个key指向的数据
#print (h5_store.get('sz000006'))
#print (h5_store['sz000007'])

# 另外一种方式读取hdf数据
print (pd.read_hdf(
    'stock_data_H5_2.h5',
    key='sz000009'
))
# 关闭hdf文件
h5_store.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值