【问题标题】:Pandas for large(r) datasets用于大型(r)数据集的 Pandas
【发布时间】:2015-11-15 08:29:09
【问题描述】:

我有一个相当复杂的数据库,我以 CSV 格式提供给我的客户。到达该数据库的逻辑是 Python 处理和在 sqlite3 中完成的 SQL 连接的复杂组合。

有大约 15 个源数据集,范围从几百条记录到多达几百万条(但相当短)的记录。

为了清晰、可维护性和其他几个原因,我不想混合使用 Python / sqlite3 逻辑,而是希望将所有逻辑转移到一组高效的 Python 脚本中并完全绕过 sqlite3。

我知道答案和要走的路是 Pandas,但您能否告知这是否是像上面描述的那样相当大的数据库的正确路径?

【问题讨论】:

  • pandas 中答案的复杂性将取决于它们的大小。特别是如果它们适合记忆(我假设不是?)
  • 谢谢约翰。我需要做一些计算,我也许可以把它放在内存中......但是让我们假设最坏的情况——不适合 RAM 的大型数据库。还值得学习和追求 Pandas 吗?
  • 我不能说。肯定有可能,但值得只有您自己才能弄清楚。
  • 不错,pandas还是值得学习的。您可以使用 chunksize 参数分块读取 csv 并加载任何大小的数据。也就是说,使用本机导入功能加载它可能会更快 - 对于大文件,这通常会快 10 倍左右。如果您的系统支持并行化操作,您仍然可以重新格式化和管道输出。

标签: python database sqlite pandas


【解决方案1】:

我一直在使用具有 > 20 GB 数据集的 Pandas(在具有 8 GB RAM 的 Mac 上)。

我的主要问题是有一个已知的bug in Python 使得在 OSX 上无法写入大于 2 GB 的文件。但是,使用 HDF5 可以避免这种情况。

我在thisthis 文章中找到了足以让一切顺利运行的提示。主要课程是检查数据框的内存使用情况并将列的类型转换为可能的最小数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-14
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2018-03-31
    • 2011-12-11
    • 2014-09-26
    相关资源
    最近更新 更多