Pandas读取文件类型的数据方法有很多,当读取大文件时往往需要一点技巧来提高效率。
简单对比一下csv,parquet,feather和pickle这几类数据的读写效率,正好最近在处理轨迹数据,特别记录在此。
1.csv格式
csv格式可以通过文本形式直接读取,但是读取和存储效率较低。
'''
读取csv文件示例,16828849条数据,1.32GB
'''
pd_csv = pd.read_csv("data.csv") # 最常规的读取方式,也是最慢的
# time 11.286217212677002s
pd_csv_pa = pd.read_csv("data.csv", engine="pyarrow") # 利用pyarrow引擎,可以大幅提高效率
# time 3.797694206237793s
'''
存储csv文件示例
'''
pd_csv.to_csv("data.csv") # 存储csv效率很低
# time 55.74313497543335s
2.parquet格式
parquet被广泛用作表格数据集的主要文件格式,在Hadoop生态中被广泛应用,所以此类格式适用于Java、Scala、Python、R的环境中,兼顾适用范围和效率。
pandas1.4版本之后,使用parquet可以调用pyarrow和fastparquet两个引擎,需要额外安装。
# parrow:
pip install pyarrow
# fastparquet:
pip install fastparquet>=0.8
pip install python-snappy
'''
读取parquet文件示例,16828849条数据,313MB
'''
pd_pq_pa = pd.read_parquet("data.parquet", engine=