创建测试Dataframe
首先创建一个包含不同类型数据的测试Pandas Dataframe。
import pandas as pd
import random
import string
import numpy as np
# Config DF
df\_length= 10\*\*6
start\_date= '2023-01-01'
all\_string= list(string.ascii\_letters + string.digits)
string\_length= 10\*\*1
min\_number= 0
max\_number= 10\*\*3
# Create Columns
date\_col= pd.date\_range(start= start\_date, periods= df\_length, freq= 'H')
str\_col= \[''.join(np.random.choice(all\_string, string\_length)) for i in range(df\_length)\]
float\_col= np.random.rand(df\_length)
int\_col= np.random.randint(min\_number,max\_number, size = df\_length)
# Create DataFrame
df= pd.DataFrame({'date\_col' : date\_col,
'str\_col' : str\_col,
'float\_col' : float\_col,
'int\_col' : int\_col})
df.info()
df.head()
以不同的格式存储
接下来创建测试函数,以不同的格式进行读写。
import time
import os
def check\_read\_write\_size(df, file\_name, compression= None) :
format= file\_name.split('.')\[\-1\]
# Write
begin= time.time()
if file\_name.endswith('.csv') : df.to\_csv(file\_name, index= False, compression= compression)
elif file\_name.endswith('.parquet') : df.to\_parquet(file\_name, compression= compression)
elif file\_name.endswith('.pickle') : df.to\_pickle(file\_name, compression= compression)
elif file\_name.endswith('.orc') : df.to\_orc(file\_name)
elif file\_name.endswith('.feather') : df.to\_feather(file\_name)
elif file\_name.endswith('.h5') : df.to\_hdf(file\_name, key= 'df')
write\_time= time.time() - begin
# Read
begin= time.time()
if file\_name.endswith('.csv') : pd.read\_csv(file\_name, compression= compression)
elif file\_name.endswith('.parquet') : pd.read\_parquet(file\_name)
elif file\_name.endswith('.pickle') : pd.read\_pickle(file\_name, compression= compression)
elif file\_name.endswith('.orc') : pd.read\_orc(file\_name)
elif file\_name.endswith('.h5') : pd.read\_hdf(file\_name)
read\_time= time.time() - begin
# File Size
file\_size\_mb = os.path.getsize(file\_name) / (1024 \* 1024)
return \[format, compression, read\_time, write\_time, file\_size\_mb\]
然后运行该函数并将结果存储在另一个Pandas Dataframe中。
test\_case= \[
\['df.csv','infer'\],
\['df.csv','gzip'\],
\['df.pickle','infer'\],
\['df.pickle','gzip'\],
\['df.parquet','snappy'\],
\['df.parquet','gzip'\],
\['df.orc','default'\],
\['df.feather','default'\],
\['df.h5','default'\],
\]
result= \[\]
for i in test\_case :
result.append(check\_read\_write\_size(df, i\[0\], compression= i\[1\]))
result\_df= pd.DataFrame(result, columns= \['format','compression','read\_time','write\_time','file\_size'\])
result\_df
测试结果
下面的图表和表格是测试的结果。
我们对测试的结果做一个简单的分析:
CSV
-
未压缩文件的大小最大
-
压缩后的尺寸很小,但不是最小的
-
CSV的读取速度和写入速度是最慢的
Pickle
-
表现得很平均
-
但压缩写入速度是最慢的
Feather(再见 CSV,速度提升 150 倍!)
- 最快的读写速度,文件的大小也是中等,非常的平均
ORC
-
所有格式中最小的
-
读写速度非常快,几乎是最快的
Parquet
- 总的来说,快速并且非常小,但是并不是最快也不是最小的
以上就是“Pandas DataFrame 存储格式性能对比!”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。