Как получить среднесуточные измерения в пандах

Я хочу получить среднее значение нескольких столбцов в pandas с течением времени, поэтому, если у меня есть эти данные:

Time                      Country        Server                Load                  
2011-01-01 00:00:00       USA            DNS                   50
2011-01-01 00:15:00       USA            HTTP                  60
2011-01-01 00:37:00       Spain          HTTP                  20
2011-01-01 01:02:00       Spain          DNS                   30
2011-01-01 01:11:00       Italy          DNS                   70
2011-01-01 23:49:00       Italy          File                  15
2011-01-02 00:00:00       USA            File                  74
2011-01-02 00:49:00       Italy          AD                    12
2011-01-02 00:31:00       Italy          AD                    11
2011-01-02 01:13:00       USA            AD                    17
2011-01-02 01:19:00       Spain          File                  18
2011-01-02 23:10:00       Spain          HTTP                  90

Это то, что я хочу вывести

Country                 2011-01-01 - Mean           2011-01-02 - Mean
USA                        55                          45.5
Spain                      25                          54
Italy                      42.5                        11.5  
...

и для сервера

Server                 2011-01-01 - Mean           2011-01-02 - Mean
HTTP                        40                          90
DNS                         50                          NA
FILE                        15                          46  
AD                          NA                          13.3

Оба ответа работают для меня и дают один и тот же результат, поэтому не уверен, какой из них является наиболее правильным, который следует принять.

Sean Nielsen 10.07.2019 11:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте DataFrame.groupby с совокупным средним с Series.dt.date и измените форму на Series.unstack:

df1 = df.groupby(['Country', df['Time'].dt.date])['Load'].mean().unstack()
print (df1)
Time     2011-01-01  2011-01-02
Country                        
Italy          42.5        11.5
Spain          25.0        54.0
USA            55.0        45.5

df2 = df.groupby(['Server', df['Time'].dt.date])['Load'].mean().unstack()
print (df2)
Time    2011-01-01  2011-01-02
Server                        
AD             NaN   13.333333
DNS           50.0         NaN
File          15.0   46.000000
HTTP          40.0   90.000000

Спасибо, добавление к вопросу, как бы вы взяли только пример: «Италия» и построили это?

Sean Nielsen 10.07.2019 11:57
Ответ принят как подходящий

Используйте pivot_table со средним значением за дату, обратившись к элементу даты с помощью dt.date:

piv1 = df.pivot_table(index='Country', columns=df['Time'].dt.date, values='Load')

Time     2011-01-01  2011-01-02
Country                        
Italy          42.5        11.5
Spain          25.0        54.0
USA            55.0        45.5

И для сервера:

piv2 = df.pivot_table(index='Server', columns=df['Time'].dt.date, values='Load')

Time    2011-01-01  2011-01-02
Server                        
AD             NaN   13.333333
DNS           50.0         NaN
File          15.0   46.000000
HTTP          40.0   90.000000

Другие вопросы по теме