pandas 比 ETL 的 csv 模块更有效吗
Is pandas more efficient than the csv module for ETL
我写了一些 python 脚本,可以将包含数十万行的 csv 文件加载到数据库中。它工作得很好,但我想知道使用 csv 模块将 csv 提取为列表列表是否比创建 pandas 数据框更有效?
Pandas DataFrame 的内存效率绝对高于常规 Python 列表。
你应该使用Pandas.
查看 Jeffrey Tratner Pandas Under The Hood
演讲中的幻灯片
我只是比较使用 pandas 和列表方法的几个关键点:
- DataFrames 具有灵活的接口。如果您选择基本的 Python 列表方法,您将需要自己创建必要的函数。
- pandas 中的许多数字运算例程是用 C 或使用专门的数字库 (Numpy) 实现的,它们总是比您在列表中编写的代码要快
- 决定使用列表还意味着对于大型数据列表,内存布局会降低性能,而 Dataframe 则将数据拆分为相同类型的块
- Pandas Dataframe 具有索引,可根据您选择的条件帮助您轻松 lookup/combine/split 数据。索引是用 C 实现的,并且专门针对每种数据类型。
- Pandas可以轻松read/write数据到不同的格式
还有更多我可能不知道的优点。关键是:不要重新发明轮子,如果有就使用正确的工具
我写了一些 python 脚本,可以将包含数十万行的 csv 文件加载到数据库中。它工作得很好,但我想知道使用 csv 模块将 csv 提取为列表列表是否比创建 pandas 数据框更有效?
Pandas DataFrame 的内存效率绝对高于常规 Python 列表。
你应该使用Pandas.
查看 Jeffrey Tratner Pandas Under The Hood
演讲中的幻灯片我只是比较使用 pandas 和列表方法的几个关键点:
- DataFrames 具有灵活的接口。如果您选择基本的 Python 列表方法,您将需要自己创建必要的函数。
- pandas 中的许多数字运算例程是用 C 或使用专门的数字库 (Numpy) 实现的,它们总是比您在列表中编写的代码要快
- 决定使用列表还意味着对于大型数据列表,内存布局会降低性能,而 Dataframe 则将数据拆分为相同类型的块
- Pandas Dataframe 具有索引,可根据您选择的条件帮助您轻松 lookup/combine/split 数据。索引是用 C 实现的,并且专门针对每种数据类型。
- Pandas可以轻松read/write数据到不同的格式
还有更多我可能不知道的优点。关键是:不要重新发明轮子,如果有就使用正确的工具