【python】pythonvsExcel(将Excel⽂件转pickle⽂件存储)⼀,什么是Pickle⽂件
提到Pickle⽂件想必很多⼈⼀开始都跟我⼀样的反应。这是个什么⿁???
这个⽂件类型只有在Python中存在。pickle提供了⼀个简单的持久化功能。可以将对象以⽂件的形式存放在磁盘上。
pickle模块只能在python中使⽤,python中⼏乎所有的数据类型(列表,字典,集合,类等)都可以⽤pickle来序列化,
pickle序列化后的数据,可读性差,⼈⼀般⽆法识别。说⽩了Pickle⽂件就是把数据转成⼆进制进⾏存储,是给机器看的不是给⼈看的。
⼆,为什么⽤Pickle⽂件
上述我们已经说过了pickle序列化后的数据是⼆进制,那也就是说把⽂件作为⼆进制存储后,对于⽂件的读取会⾮常的快。如果有⼀个每个sheets为上万⾏的Excel,当我们直接读取这个excel⽂件后果你懂得。。有的⼩伙伴可能会说转成csv后进⾏读取,是的转csv后确实会⽐之前的xlsx格式的读取来的快些。但是读取之前计算机依然需要编译后再读取。⽂件⼀⼤还是很慢。那么这时候Pickle的优点就显现出来了。三,如何转换Pickle⽂件
注释:以下代码是通过jupyther来进⾏运⾏的。如果您使⽤的是.py的⽂件。那么if __name__ == "__main__": 这个⼊⼝函数请只写⼀个另外写了⼀个use_time的装饰器,为了测试每个函数运⾏后所话费的时间。
#%%
import pandas as pd
from time import time
def use_time(func):
"""
:param func: 设置时间装饰器
:return: 返回func函数及wrapper对象
"""
def wrapper(*args,**kwargs):
start = time()
result = func(*args,**kwargs)
use = round(time() - start,3) #保留3位
print("%s()⽤时: %s秒" %(func.__name__,use))
return result
return wrapper
@use_time
def read_excel(fn):
df =pd.read_excel(fn)
return df
@use_time
def write_to_pickle(df,path):
<_pickle(path)
@use_time
def read_pickle_file(fn):
df = pd.read_pickle(fn)
return df
if __name__ == '__main__':
file_path = R"C:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200721\source_file\按照班级分离⽂件.xlsx"
#直接读取excel⽂件
file01 = read_excel(file_path)import pickle
print(file01)
write_to_pickle(file01,R"C:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200727\output_pickle.pkl")
#%%
if __name__ == '__main__':
file02 = read_pickle_file(R"C:\Users\Administrator\PycharmProjects\python_Basic\Pandas_to_Excel\20200727\output_pickle.pkl")
print(file02)
执⾏read_excel函数的⽤时:
执⾏write_to_pickle函数的⽤时:
执⾏read_pickle_file函数的⽤时:
上述脚本运⽤过后的时间可以看出,转pickle⽂件后再读取所话费的时间是没有转之前读取的好⼏倍。我的数据量只有226⾏所以看不太出效果。如果数据量很⼤的情况下效果就很显著了。所以当我们读取Excel,csv等数据量⽐较的的表格⽂件时,建议转pickle⽂件后再读取。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论