Как построить среднюю линию за месяц в Python для l oop? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть код, который выглядит примерно так:

for _, d in Country_sim_count.set_index('Week').groupby('Home_Country'):
    fig, ax = plt.subplots()
    d['SIM_total'].plot()
    plt.axhline(y=d['SIM_total'].mean(), color='r', linestyle='--') #the line I would like to alter
    plt.xticks(rotation=90)
    plt.title(f"Weekly Sim Count for {d['Home_Country'].iat[0]}")
    plt.xlabel('Week')

    a = '2020-01-13' #Key dates area
    b = '2020-02-10'

    plt.axvspan(a, b, color='gray', alpha=0.2, lw=0)
    plt.legend()
    #plt.savefig(f"{d['Home_Country'].iat[0]}_plot.png")
    plt.show()

Фрейм данных содержит различные месяцы, однако в строке 4 я хотел построить красную линию, которая вместо этого показывала бы среднее значение, рассчитанное только для февраля для каждой страны. расчета среднего за все месяцы вместе взятые. Среднее значение в феврале будет различным для каждой страны в l oop. В настоящее время мой график выглядит следующим образом:

enter image description here

Значение красной линии - это среднее значение за период с января по май, однако я надеюсь, что значение красной линии показывает среднее значение за февраль за весь период.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 29 мая 2020

Может быть, вы могли бы попробовать включить условие в скобки?

plt.axhline(y=d[d['SIM_total'] == 'February'].mean(), color='r', linestyle='--')

Надеюсь, это поможет!

EDIT:

В этом случае, я думаю, было бы лучше не устанавливать "Неделя" в качестве индекса.

Возможно, это не очень красиво, вы можете использовать что-то вроде кода ниже.

feb_mean = d[d['Week'] == 'February']['SIM_total'].mean()

plt.axhline(y=feb_mean, color='r', linestyle='--')

Позвольте мне знайте, работает ли это для вас!

...