使用 Pandas 与 MySQL 读取大型 CSV 文件



我有一个500+ MB CSV数据文件。我的问题是,对于数据操作(例如,读取,处理(哪个会更快,因为Python MySQL客户端会更快,因为所有工作都映射到SQL查询中,而优化留给优化器。但是,与此同时,熊猫正在处理一个应该比与服务器通信更快的文件?

我已经检查了使用pandas的"大数据"工作流程,导入大型CSV文件的最佳实践,使用Python编写大型CSV的最快方法以及解析Python中大型.csv的最有效方法?。但是,我还没有真正找到任何关于Pandas和MySQL的比较。

用例:

我正在处理由 1,737,123 行和 8 列组成的文本数据集。我正在将此数据集输入RNN/LSTM网络。我在进料之前做了一些预处理,这是使用定制的编码算法进行编码。

更多详情

我有 250+ 个实验要做,12 个架构(不同的模型设计(要尝试。

我很困惑,我觉得我错过了什么。

网上没有可比性,因为这两种情况会给出不同的结果:

  • 使用Pandas,您最终会在内存中得到一个Dataframe(作为引擎盖下的NumPyndarray(,可作为本机Python对象访问。
  • 使用MySQL
  • 客户端,您最终会在磁盘上的MySQL数据库中获得数据(除非您使用的是内存数据库(,可通过IPC/套接字访问

因此,性能将取决于

  • 低速通道(IPC、磁盘、网络(需要传输多少数据
  • 传输与处理的相对速度(其中哪一个是瓶颈(
  • 您的处理设施更喜欢哪种数据格式(即将涉及哪些额外的转换(

例如:

  • 如果您的处理工具可以驻留在将用于读取它的同一(Python(进程中,则建议将其直接读取为Python类型,因为您不需要将其全部传输到MySQL进程,然后再返回(每次转换格式(。
  • OTOH 如果您的处理工具是用其他进程和/或语言实现的,或者例如驻留在计算集群中,则通过从等式中消除相对较慢的 Python 将其直接挂接到 MySQL 可能会更快,并且因为您需要再次传输数据并将其转换为处理应用程序的本机对象。

最新更新