Loading...
墨滴

傲天居士

2022/01/16  阅读:45  主题:默认主题

feather文件及格式转化

pandas 读取文件的效率

我们以一个29.3MB的Excel文件为例,pandas导入该Excel文件的代码如下:

import os
import time
import pandas as pd
###设置工作路径###
path=r"MyPath"
t1=time.time()
daily_excel=pd.read_excel(os.path.join(path+'\\'+'daily.xlsx'))
t2=time.time()
print('程序运行时间:%s' % (t2-t1))

程序运行后显示导入Excel文件用时约126秒 那么我们试着将该Excel文件转化为CSV文件daily_excel.to_csv (os.path.join(path+'\\'+'daily.csv'), index=None, header=True),而后在pandas中导入该CSV文件:

t3=time.time()
daily_csv=pd.read_csv(os.path.join(path+'\\'+'daily.csv'))
t4=time.time()
print('程序运行时间:%s' % (t4-t3))

程序运行后显示导入CSV文件用时约0.6秒 0.6秒似乎已经足够快了,那么还有进一步提速的空间吗?我们试着将文件转化为feather格式daily_excel.to_feather(os.path.join(path+'\\'+'daily.ftr')),而后在pandas中导入该feather文件:

t5=time.time()
daily_feather=pd.read_feather(os.path.join(path+'\\'+'daily.ftr'))
t6=time.time()
print('程序运行时间:%s' % (t6-t5))

程序运行后显示导入ftr文件用时不到0.1秒! pandas导入feather文件还可以开启多线程,只需设置use_threads=Ture:

t7=time.time()
daily_feather=pd.read_feather(os.path.join(path+'\\'+'daily.ftr'),use_threads=True)
t8=time.time()
print('程序运行时间:%s' % (t8-t7))

开启多线程后导入ftr文件的速率进一步提升,只用了不到0.06秒! 由此可见,对于同样内容的文件,pandas导入ftr格式要比导入csv快了10倍,更是比导入xlsx快了2000倍!

Excel或其他文本文件批量转化为ftr

程序的作用就是批量处理。我们可以设计这样一个程序,该程序基于用户传入的路径获取该路径下的全部文件。用户可以指定文件扩展名,程序即可将该路径下指定扩展名的全部文件批量转化成ftr格式。思路非常清晰,代码也很简单。为方便用户使用,这里我设计了一个UI界面,并将程序打包为exe. 目前该项目已经开源,项目地址:https://gitee.com/Wang-AoTian/file2ftr

傲天居士

2022/01/16  阅读:45  主题:默认主题

作者介绍

傲天居士

微信公众号:进击的王傲天