【问题标题】:Data Preprocessing with python使用python进行数据预处理
【发布时间】:2016-10-27 11:03:16
【问题描述】:

我正在使用 python 读取 Unicode 数据,然后对其进行预处理并将其存储在数据库中(Postgres)

现在数据库有 3 个表,每个表有 4 个属性和 700,000 个元组。我读取数据并根据我需要使用它的方式将其映射到 python 字典和列表。

现在我必须遍历所有这些元组,进行一些计算并再次写入数据库。

我必须像这样进行 1000 次迭代。问题是 1 次迭代大约需要 50 分钟,这使得不可能进行这么多次迭代。

有没有办法让这些迭代更快?

欢迎任何新想法。在 python 中不需要。

【问题讨论】:

  • 对我来说,这听起来好像使用单个 UPDATE 而不是 700.000 个单个更新更好。 Edit 您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted 文本no screen shots
  • 数据集不是英文的。我仍将使用虚拟数据集编辑帖子。现在关于更新。我只更新一次。没有单一的更新。我将整个数据作为 python 列表(很快将更改为 pandas),然后迭代并进行所有计算,并一次使用串联的更新命令更新数据库。单次迭代所花费的时间是我关心的问题。 :)

标签: python-3.x postgresql-9.1


【解决方案1】:

您没有说明每次“迭代”执行什么更新,但显然您正在读取和写入 700 万行。是否可以使用数据库来执行更新?

【讨论】:

  • 感谢您的帮助。首先,我的数据库中有 70 万行。只是给出一个模糊的数据概念。其次关于更新 - 我拿了一个元组。查看其属性之一(例如 A )并获取具有相同属性值的所有元组。然后用所有值的平均值更新元组的另一个属性(比如 B )值(其他元组中的 B 与 A 相同)。这发生在 2 个表中。
  • 在获得两个新的更新值后,我将它们相乘并存储在第三个表中的适当位置。
  • 我的想法和你建议的一样。但我不知道数据库中的迭代会快多少。使用 python 迭代需要 50 分钟。使用 DB 将其减少到 40 不是我想要的。我想要一个小时大约 6-8 次迭代。
猜你喜欢
  • 2021-04-26
  • 2017-03-16
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多