1、遍历文件夹操作
for root, dirs, files in os.walk(file_location):
# root输出文件夹,dirs输出root下所有的文件夹,files输出root下的所有的文件
print('当前文件夹:', root)
print('包含的文件夹:', dirs)
print('包含的文件:', files)
print()
os.walk是系统自带函数,用于遍历文件夹中的所有文件,os是python自带的系统库,前面要写个import os
2、批量读取文件名称
file_list = [] # 设置一个列表存储文件名称
# 设置循环遍历csv文件,将文件名称存储进file_list
for root, dirs, files in os.walk(file_location):
for filename in files:
if filename.endwith(.csv):
file_path = os.join(root, filename)
file_path = os.abspath(filename)
file_list.append(file_path)
3、遍历文件名,批量导入数据
all_data = pd.Dataframe() # 设置一个dataframe参数存储读出来的数据
# 循环读取参数
for fp in sorted(file_list):
# 导入数据
df = pd.read_csv(fp, skiprows=1, encoding=utf-8)
all_data = all_data.append(df, ignore_index=True)
注意四点:
第一个需要使用sorted方法对文件列表进行排序
第二个encoding是utf-8还是gbk
第三个别忘了ingnore_index=True
第四个skiprows视情况而定,一般都等于1
4、对导入的数据再次排序
all_data.sort_values(by=['candle_begin_time'], inplace=True)
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
by | 指定列名(axis=0或’index’)或索引值(axis=1或’columns’) |
axis | 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0 |
ascending | 是否按指定列的数组升序排列,默认为True,即升序排列 |
inplace | 是否用排序后的数据集替换原来的数据,默认为False,即不替换 |
na_position | {‘first’,‘last’},设定缺失值的显示位置 |
5、将批量读取的数据存储进一个H5文件
all_data.to_hdf(
r'E:\Digitalcurrencyquant\part3\data\eos_1min_data.h5',
key='all_data',
format=table,
mode='w'
)
这里要注意的是出现warning就加一个format=table