【问题标题】:How to calculate difference between rows of csv file with python如何用python计算csv文件行之间的差异
【发布时间】:2014-10-20 02:12:30
【问题描述】:

我是 Python 新手。当它们具有相同的 id 时,我想对 csv 文件的两行进行区分。这个 csv 数据集是从一个包含超过 300 万行的 sql 表导出构建的。

这是我的时间序列数据集的示例:

DATE -  Product ID - PRICE 

26/08  - 1 -  4
26/08 - 2 - 3
27/08 - 1 - 5
27/08 - 2 - 3

例如,我想计算 2008 年 8 月 26 日 id 为 1 的产品的价格与第二天(27 年 8 月)同一产品的价格之间的差异,以估计价格随时间的变化。我想知道在 Python 中操作和计算这些数据以进行计算的最佳方法是什么,无论是使用 Python 的 csv 模块还是代码中的 SQL 查询。我也听说过 Pandas 库...感谢您的帮助!

【问题讨论】:

  • 这个问题似乎跑题了,因为 Stack Overflow 不是代码编写服务。
  • 您可以先查看 python csv 模块docs.python.org/2/library/csv.html
  • 能否请您查看我对您的问题所做的一些修改。同时,您应该尝试通过考虑上面的各种 cmets 来改进它(顺便说一句,您的数据中的“空行”部分是吗?)

标签: python csv time-series date-arithmetic


【解决方案1】:

尝试按产品 ID 构建字典并在加载后分析每个 ID

dd = {}
with open('prod.csv', 'rb') as csvf:
    csvr = csv.reader(csvf, delimiter='-')
    for row in csvr:
        if if len(row) == 0 or row[0].startswith('DATE'):
            continue
        dd.setdefault(int(row[1]), []).append((row[0].strip(), int(row[2])))

dd

{1: [('26/08', 4), ('27/08', 5)], 
 2: [('26/08', 3), ('27/08', 3)]}

这将使进行比较变得非常容易

【讨论】:

  • 这是一个很棒的技巧,我在我的数据集的一小块上尝试过它并且它有效。但是,如果我尝试在有 300 万行 python 的整个数据集上执行此操作,我认为这是一个内存问题。
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多