pandas.read_csv与其他csv库相比,用于将CSV加载到Postgres数据库中

时间:2016-03-14 02:03:57

标签: python postgresql csv pandas python-3.5

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

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

  

数据可能有错误(某些行可能不是可解析的),.   数据可能重复,数据可能非常大。

我有什么理由不能在这里使用pandas.read_csv吗?使用CSV库是否可以更容易地解析并将其加载到本地Postgres数据库中?特别是,如果我只使用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表现最佳?

2 个答案:

答案 0 :(得分:2)

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

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

关于"数据可能有错误", read_csv有一些设施,例如converterserror_bad_lines和{{1} (具体的行动方案取决于你应该能够恢复的腐败程度和腐败程度)。

答案 1 :(得分:1)

上周我有一个学校项目要求我从csv加载数据并将其插入postgres数据库。所以当我告诉你的时候请相信我:除非你使用熊猫,否则它会比它更难。问题是嗅出数据类型。好的,所以如果你的数据库都是一个字符串数据类型,忘了我说的话,你就是金色的。但是如果你有一个带有各种数据类型的csv,要么你自己嗅探它们,要么你可以使用pandas高效自动地完成它。另外,pandas对sql方法有一个很好的写法,可以通过sql炼金术连接很容易地适应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