使用 Python 在 CSV 文件中平均每 6 分钟的特定时间范围
Averaging a specific time range for every 6 minutes in a CSV file with Python
我希望你们能帮我解决一个 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 命令(我似乎做错了),
以及首先将所有时间转换为秒,然后从那里计算(但这似乎工作量太大)。有人知道我应该做什么吗?
谢谢!
我不知道你了解多少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'))
我希望你们能帮我解决一个 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 命令(我似乎做错了), 以及首先将所有时间转换为秒,然后从那里计算(但这似乎工作量太大)。有人知道我应该做什么吗?
谢谢!
我不知道你了解多少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'))