背景:
一般比赛或者本地的表格文件多为.csv文件,这类文件动辄数个G,甚至上百G,并且读取的时间也较慢;因此有必要思考新型的存储文件格式来解决csv文件的问题; 下面也从存储空间和读取时间进行测试;
方式1:.csv 转 .feather
1 安装:
pip install feather -format
2 效果实测
2.1 存储空间
代码
def memory_cost(filePath):
for i in filePath:
fsize = os.path.getsize(i)
fsize = fsize / float(1024 * 1024)
if i == './M1/M10.csv':
print('csv文件占比大小:'+str(round(fsize, 2))+'MB')
else:
print('feather文件占比大小:'+str(round(fsize, 2))+'MB')
结论
原始csv文件大小:576MB,转化为feather后大小为79MB,所占存储空间占比高达86%;
本地实测:
原始csv文件
本地feather文件
2.2 运行时间与转化前后数据情况
代码
def time_cost(func):
def core(*args):
start = time()
func(*args)
end = time()
if args == './M1/M10.csv':
print('csv文件读取时间为:'+str(end-start)+' S')
else:
print('feather文件读取时间为:'+str(end-start)+' S')
return core
@time_cost
def read_data1(data_path1):
df1 = pd.read_csv(data_path1)
print("csv文件数据情况:",df1.shape)
2.3 结论
- 文件转化前后数据行业没有变化,木有影响数据质量;
- csv文件读取时间11s,feather文件读取时间为0.6s,读取速度快了近20倍;
- 文件存储所占空间大小减少了86%;
方式2:转化为h5文件
效果一般这里不做介绍了