【问题标题】:Parse CSV in 2D Python Object在 2D Python 对象中解析 CSV
【发布时间】:2022-01-20 13:16:37
【问题描述】:

我正在尝试对如下所示的 CSV 文件进行分析:

timestamp value
1594512094.39 51
1594512094.74 76
1594512098.07 50.9
1594512099.59 76.80000305
1594512101.76 50.9

我正在使用 pandas 导入每一列:

dataFrame = pandas.read_csv('iot_telemetry_data.csv')
graphDataHumidity: object = dataFrame.loc[:, "humidity"]
graphTime: object = dataFrame.loc[:, "ts"]

我的问题是我需要为两列创建一个元组,以过滤特定时间范围的值,例如,我的 timestampBeginn 为“1594512109.13668”,我的 timestampEnd 为“1594512129.37415”,我想要生成相应的值,例如特定时间范围的值的平均值。

我没有在网上找到任何解决方案,也不知道有什么库可以解决这个问题。

【问题讨论】:

  • 您在 DataFrame 中读取它,然后使用它,不要为列创建单独的变量。您可能希望使用timestamp 作为索引

标签: python pandas csv


【解决方案1】:

您可以先过滤时间戳值介于“开始”和“结束”之间的行。然后您可以计算过滤后的行的值,如下所示: (但是,在示例数据中,似乎没有行,时间戳在 1594512109.13668 到 1594512129.37415 的范围之间。您可以根据需要编辑范围值。

import pandas as pd

df = pd.read_csv('iot_telemetry_data.csv')

start = 159451219.13668
end = 1594512129.37415

df = df[(df['timestamp'] >= start) & (df['timestamp'] <= end)]

average = df['value'].mean()
print(average)

【讨论】:

  • 您好,谢谢您的回答。我得到结果“NaN”我猜不是一个数字?这可能是因为 CSV 中的错误吗? CSV 实际更大,有 405k 行编辑:实际上这会返回一个空数据框
  • @cpp_student 正如我提到的,数据集中没有时间戳值介于 1594512109.13668 和 1594512129.37415 之间。检查您的范围值。当没有剩余行时,将打印 NaN。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2021-08-25
  • 2014-04-22
  • 2020-04-15
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
相关资源
最近更新 更多