Использование python для создания среднего из списка раз в пандах - PullRequest
0 голосов
/ 08 июня 2018

У меня есть большое количество данных.

link

Мне нужно в среднем каждые пятнадцать минут 'w'.

link

Теперь я использую цикл для выполнения, но он такой медленный.

У панд есть какие-нибудь комплекты, которые могут помочь?

Мне действительно нужна ваша помощь. Большое спасибо.

1 Ответ

0 голосов
/ 08 июня 2018

Существует 2 возможных решения: передискретизация по 15Min и агрегирование столбцов по среднему и первому значению:

df = df.resample('15T', on='reporttime').agg({'w':'mean', 'buildingid':'first'})

или группировка по столбцу buildingid с Grouper для повторной выборки:

df = df.groupby(['buildingid', pd.Grouper(key='reporttime',freq='15T')])['w'].mean()

Образец :

rng = pd.date_range('2017-04-03 18:09:04', periods=10, freq='7T')
df = pd.DataFrame({'reporttime': rng, 'w': range(10), 'buildingid':[39] * 5 + [40] * 5})  
print (df)
           reporttime  w  buildingid
0 2017-04-03 18:09:04  0          39
1 2017-04-03 18:16:04  1          39
2 2017-04-03 18:23:04  2          39
3 2017-04-03 18:30:04  3          39
4 2017-04-03 18:37:04  4          39
5 2017-04-03 18:44:04  5          40
6 2017-04-03 18:51:04  6          40
7 2017-04-03 18:58:04  7          40
8 2017-04-03 19:05:04  8          40
9 2017-04-03 19:12:04  9          40

df1 = df.resample('15T', on='reporttime').agg({'w':'mean', 'buildingid':'first'}).reset_index()
print (df1)
           reporttime    w  buildingid
0 2017-04-03 18:00:00  0.0          39
1 2017-04-03 18:15:00  1.5          39
2 2017-04-03 18:30:00  4.0          39
3 2017-04-03 18:45:00  6.5          40
4 2017-04-03 19:00:00  8.5          40

df2 = df.groupby(['buildingid', pd.Grouper(key='reporttime',freq='15T')])['w'].mean().reset_index()
print (df2)
   buildingid          reporttime    w
0          39 2017-04-03 18:00:00  0.0
1          39 2017-04-03 18:15:00  1.5
2          39 2017-04-03 18:30:00  3.5
3          40 2017-04-03 18:30:00  5.0
4          40 2017-04-03 18:45:00  6.5
5          40 2017-04-03 19:00:00  8.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...