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

# =====导入EOSUSD每一天的1分钟数据
df = pd.read_csv('/Users/jxing/Desktop/coin_quant_class/data/class6/BITFINEX/EOSUSD/BITFINEX_EOSUSD_20170701_1T.csv',
                 skiprows=1,
                 parse_dates=['candle_begin_time'])

# =====批量导入EOSUSD所有天的一分钟数据
# 系统自带函数os.walk,用于遍历文件夹中的所有文件,os是python自带的系统库
# 演示os.walk
for root, dirs, files in os.walk('/Users/jxing/Desktop/coin_quant_class/data'):
    # root输出文件夹,dirs输出root下所有的文件夹,files输出root下的所有的文件
    print('root:', root)
    print('dirs:', dirs)
    print('files:', files)
    print()

# 批量读取文件名称
file_list = []
for root, dirs, files in os.walk('/Users/jxing/Desktop/coin_quant_class/data/class6'):
    # 当files不为空的时候
    if files:
        for f in files:
            if f.endswith('.csv'):
                file_list.append(f)

# 遍历文件名,批量导入数据
all_data = pd.DataFrame()
for file in sorted(file_list):
    print(file)
    # 导入数据
    df = pd.read_csv('/Users/jxing/Desktop/coin_quant_class/data/class6/BITFINEX/EOSUSD/' + file,
                     skiprows=1,
                     parse_dates=['candle_begin_time'])
    #  合并数据
    all_data = all_data.append(df, ignore_index=True)  # 注意此时若一下子导入很多文件,可能会内存溢出

# 对数据进行排序
all_data.sort_values(by=['candle_begin_time'], inplace=True)

# 将数据存入hdf文件中
all_data.to_hdf(
    '/Users/jxing/Desktop/coin_quant_class/data/class6/eos_1min_data.h5',
    key='all_data',
    mode='w')

# 从hdf中读取文件
all_data = pd.read_hdf('/Users/jxing/Desktop/coin_quant_class/data/class6/eos_1min_data.h5', key='all_data')
print(all_data)