【问题标题】:pandas.read_csv vs other csv libraries for loading CSV into a Postgres Databasepandas.read_csv 与其他用于将 CSV 加载到 Postgres 数据库中的 csv 库
【发布时间】:2016-06-28 22:51:03
【问题描述】:

我是一个相对较新的 Python 用户。解析和处理 CSV 并将其加载到本地 Postgres 数据库(在 Python 中)的最佳方法是什么?

建议我使用 CSV 库来解析和处理 CSV。特别是,手头的任务说:

数据可能有错误(某些行可能无法解析), 数据可能重复,数据可能非常大。

我不能在这里使用pandas.read_csv 有什么原因吗?使用 CSV 库是否可以更轻松地解析并将其加载到本地 Postgres 数据库中?特别是,如果我只使用 pandas,如果行不可解析、数据非常大或数据重复,我会遇到问题吗? (最后一点,我知道 pandas 提供了一些相对干净的去重复解决方案)。

我觉得 pandas.read_csv 和 pandas.to_sql 可以在这里为我做很多工作,但我不确定使用 CSV 库是否还有其他优势。

就速度而言,这篇帖子:https://softwarerecs.stackexchange.com/questions/7463/fastest-python-library-to-read-a-csv-file 似乎暗示 pandas.read_csv 表现最好?

【问题讨论】:

  • “最佳”未定义,因此将像现在一样基于意见关闭。
  • 对不起,我想这不是最好的标题,但问题更多地在于 cmets。例如,使用csv 库是否让我有更多能力处理非常大的数据集而不是熊猫?还是使用csv 库可以更轻松地处理重复项?
  • 您的困境的一个基石问题可能是找出您的顾问在建议“使用 CSV 库”时的意思。他们很可能只是敦促您不要尝试手动解析它。

标签: python postgresql csv pandas python-3.5


【解决方案1】:

上周我有一个学校项目,要求我从 csv 加载数据并将其插入到 postgres 数据库中。所以当我告诉你这个的时候相信我:除非你使用 pandas,否则它比它必须的要困难得多。问题是嗅探数据类型。好的,所以如果你的数据库都是字符串数据类型,忘记我说的,你是金子。但是,如果您有一个包含各种数据类型的 csv,您可以自己嗅探它们,或者您可以使用 pandas 来高效且自动地进行嗅探。另外,pandas 有一个漂亮的写入 sql 方法,它也可以通过 sql alchemy 连接轻松适应 postgres。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html

【讨论】:

    【解决方案2】:

    快速谷歌搜索并没有发现pandas.read_csv 在其功能(解析正确性、支持的类型等)方面的任何严重缺陷。此外,由于您似乎也在使用pandas 将数据加载到数据库中,因此直接读入DataFrame 可以极大地提高性能和内存(没有冗余副本)。

    对于非常大的数据集只有内存问题 - 但这不是库的错。 How to read a 6 GB csv file with pandas 提供了有关如何使用 pandas 分块处理大型 .csv 的说明。

    关于“数据可能有错误”, read_csv 有一些设施,如 converterserror_bad_linesskip_blank_lines(具体的操作过程取决于是否以及有多少损坏你应该能够恢复)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2015-03-21
      • 2021-07-21
      • 1970-01-01
      相关资源
      最近更新 更多