我有一些及时测量的事件数据,因此数据格式类似于
Time(s) Pressure Humidity
0 10 5
0 9.9 5.1
0 10.1 5
1 10 4.9
2 11 6
此处第一列是自实验开始以来经过的时间,以秒为单位。其他两个cols是一些观察。当某些条件为真时,会创建一行,这些条件超出了此处讨论的范围。由分号分隔的每组3个数字是一行数据。由于此处时间分辨率的最低粒度仅为秒,因此您可以使用相同时间戳但具有不同观察值的两行。基本上这些是时间无法区分的两个不同事件。
现在我的问题是汇总数据系列,通过二次采样说每10或100秒或1000秒。所以我想从原始的更高粒度数据系列中获取一个脱脂数据系列。有几种方法可以决定你要使用哪一行,比如说你每10秒进行一次子采样,当经过10秒时,你可以有多行,时间戳为10秒。你可以采取
1) first row
2) mean of all rows with the same timestamp of 10
3) some other technique
我希望在熊猫中这样做,任何想法或开始的方式都将非常感激。感谢。
答案 0 :(得分:1)
这是一个显示如何执行的简单示例 大熊猫请求的操作。
使用数据分级对样本进行分组 重新抽样数据。
import pandas as pd
# Creation of the dataframe
df = pd.DataFrame({\
'Time(s)':[0 ,0 ,0 ,1 ,2],\
'Pressure':[10, 9.9, 10.1, 10, 11],\
'Humidity':[5 ,5.1 ,5 ,4.9 ,6]})
# Select time increment
delta_t = 1
timeCol = 'Time(s)'
# Creation of the time sampling
v = xrange(df[timeCol].min()-delta_t,df[timeCol].max()+delta_t,delta_t)
# Pandas magic instructions with cut and groupby
df_binned = df.groupby(pd.cut(df[timeCol],v))
# Display the first element
dfFirst = df_binned.head(1)
# Evaluate the mean of each group
dfMean = df_binned.mean()
# Evaluate the median of each group
dfMedian = df_binned.median()
# Find the max of each group
dfMax = df_binned.max()
# Find the min of each group
dfMin = df_binned.min()
dfFirst
Humidity Pressure Time(s)
Time(s)
(-1, 0] 0 5.0 10 0
(0, 1] 3 4.9 10 1
(1, 2] 4 6.0 11 2
dfMean
Humidity Pressure Time(s)
Time(s)
(-1, 0] 5.033333 10 0
(0, 1] 4.900000 10 1
(1, 2] 6.000000 11 2