使用Python在CSV文件中每6分钟平均一个特定的时间范围

时间:2016-12-19 22:13:16

标签: python csv pandas spyder

我希望你们能帮我解决Python编码问题。我有一个CSV文件,在24小时内获取了超过500万个数据点。该文件包含两列 - UTC时间和强度值。我想将所有强度数据平均每6分钟分成3分钟范围(例如平均值(x-1.5分钟:x + 1.5分钟),其中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命令(我似乎无法正确), 以及首先将所有时间转换为秒,然后从那里进行计算(但这似乎是太多的工作)。有谁知道我应该做什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道您对熊猫有多了解,但假设您可以将数据从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'))