【问题标题】:Averaging a specific time range for every 6 minutes in a CSV file with Python使用 Python 在 CSV 文件中每 6 分钟平均特定时间范围
【发布时间】:2017-05-05 01:15:35
【问题描述】:

我希望你们能帮助我解决 Python 编码问题。我有一个 CSV 文件,在 24 小时内收集了超过 500 万个数据点。该文件包含两列 - UTC 时间和强度值。我想每 6 分钟将所有强度数据平均到 3 分钟范围内(例如 mean(x-1.5 min : x+1.5 min),其中 x 是 0、6、12、18 等的数组)。我尝试了多种途径,但似乎没有任何效果。

我正在使用以下方法调用数据:

df=pd.read_csv("file.csv",names=['Date','Intensity'], na_values='nan') 

数据示例:

df=
'Date'                                   'Intensity'
2016-06-17 00:00:00.054951500            15299
2016-06-17 00:00:00.056950500            13248
2016-06-17 00:00:00.058948500            12838
2016-06-17 00:00:00.060942500            8920
2016-06-17 00:00:00.062947500            12631
2016-06-17 00:00:00.064942500            13455 
... (continues on for 24 hours)....

这个想法是每 6 分钟做一个 3 分钟的平均值(不包括第一个和最后一个平均值)。例如,结果数据应计算如下:

df=
                         'Date'                 'Intensity'
average(0 : 1.5 min)=        2016-06-17 00:00:00     14554              
average(4.5 : 7.5 min)=      2016-06-17 00:06:00     18243              
average (10.5 : 13.5 min)=   2016-06-17 00:12:00     20244              
average (16.5 : 19.5 min)=   2016-06-17 00:18:00     10722  
... 

到目前为止,我已经尝试过使用: pd.Timedelta 命令(我似乎无法正确), 以及首先将所有时间转换为秒,然后从那里计算(但这似乎工作量太大)。有人知道我应该怎么做吗?

谢谢!

【问题讨论】:

  • 如果您想要一个有用的答案以及预期的输出(也许也是您尝试的多种途径中的至少一种,(感觉正确))
  • 感谢您的建议。该帖子已被编辑。

标签: python csv pandas spyder


【解决方案1】:

我不知道你对pandas了解多少,但假设你可以从CSV加载数据到DataFrame,你可以做的是:

import pandas as pd

# load data from csv into intesity_df
...

# group by time
intensity_df = intensity_df.groupby(pd.Grouper(key='date', freq='3min'))

【讨论】:

猜你喜欢
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 2020-02-14
相关资源
最近更新 更多