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

#python #pandas #dataframe #mean

Вопрос:

У меня есть такой набор данных:

введите описание изображения здесь

Я хочу брать среднее значение LCR в каждом году для WFR=1 и WFR=0 отдельно, например, в 2018 году у меня 4 WFR=0, поэтому возьмите среднее значение LCR для него, а для WFR=1 у меня есть только один. есть идеи? Спасибо

Комментарии:

1. можете ли вы вставить данные в виде текста и отформатировать в виде кода? Затрудняет копирование вставку с изображениями

Ответ №1:

Вы можете сгруппироваться по годам и годам. Это создаст все комбинации, существующие в вашем наборе данных. Если в вашем фрейме данных отсутствуют все условия, вы можете создать базовый фрейм данных со всеми условиями и объединить его с ним.

 df = data_new4.groupby(['CLOSDATE_year', 'WFR'])['LCR'].mean()  

для построения графика данных вы можете использовать библиотеку seaborn.

 import seaborn as sns  sns.lineplot(data=df, hue='WFR', x='CLOSDATE_year', y='LCR')  

Комментарии:

1. как я могу построить эти LCR(среднее значение LCR) в соответствии с WFR(0 или 1) в разные годы? Я имею в виду 2 линейных графика на одном графике

2. Я добавил код, чтобы вы могли отображать данные. Не могли бы вы, пожалуйста, проголосовать и принять мой ответ.

Ответ №2:

Попробуйте с groupby :

 gt;gt;gt; data.groupby(["CLOSDATE_year", "WFR"])["LCR"].mean()  CLOSDATE_year WFR 2011 1 268.750000 2012 1 235.533333 2018 0 192.775000  1 186.000000 Name: LCR, dtype: float64  

Комментарии:

1. могу ли я добавить там название для среднего значения LCR? потому что у столбца нет имени

2. Это возвращает серию под названием LCR. Посмотрите на последнюю строку вывода. Если вам нужен фрейм данных, вы можете сделать data.groupby(["CLOSDATE_year", "WFR"])["LCR"].mean().reset_index()