计算大熊猫的活动持续时间

时间:2019-02-28 15:05:58

标签: python pandas data-science

我正在尝试参考此SO post,在该答案中,某人创建了一些代码来分析降雨的时间序列数据,并为每个降雨事件按小时总计。我想做类似的事情,只是从时间序列数据中汇总每天几小时内泵运行(事件)的频率。我不需要在活动的持续时间上累计其他任何信息。

#read CSV file
df = pd.read_csv('C:\\Users\\desktop\\data.csv', index_col='Date', parse_dates=True)

# Converting the index as date
df.index = pd.to_datetime(df.index)

df

我的数据如下:

                    ChWaterPrs
Date                                                                    
1/0/00 12:45 AM          0.0
1/0/00 12:50 AM          0.0
1/0/00 12:55 AM          0.0
1/0/00 12:00 AM          0.0
1/0/00 1:05 AM           0.0

我知道每次df['ChWaterPrs']大于5时泵都在运行,因此我正在尝试建立SO文章中提到的这些辅助柱:

# create helper columns, a block would be anytime value is > 5
df['block'] = df['ChWaterPrs'] >= 5
df['day'] = df.index.normalize()

# group by day to get unique block count and value count
session_map = df[df['ChWaterPrs'].astype(bool)].groupby('day')['block'].nunique()
hour_map = df[df['ChWaterPrs'].astype(bool)].groupby('day')['ChWaterPrs'].count()

# map to original dataframe
df['sessions'] = df['day'].map(session_map)
df['hours'] = df['day'].map(hour_map)

# calculate result
res = df.groupby(['day', 'hours', 'sessions'], as_index=False)['ChWaterPrs'].sum()
res['duration'] = res['hours'] / res['sessions']
res['amount'] = res['ChWaterPrs'] / res['sessions']

但是,如果我打印res,就搞砸了……持续时间超过一天24小时就没有意义。基本上,我想拥有的唯一信息是泵运行的resample的时间序列数据中的hours,其中df['ChWaterPrs']大于5。我认为数据将每天显示(一个会话),其中df['ChWaterPrs']为零,否则在运行时大于5。任何提示都可以帮助您。

enter image description here

0 个答案:

没有答案