Я не могу нанести среднюю линию на гистограмму, которую я сделал методом unstack - PullRequest
1 голос
/ 12 мая 2019
total_group_sum.unstack().plot(kind='bar')

Я могу построить свою гистограмму, однако теперь я хочу нарисовать горизонтальную среднюю линию над ней.Я пытаюсь использовать axhline(), но получаю ошибку:

ValueError: Истинное значение Series является неоднозначным.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Как мне нарисовать горизонтальную среднюю линию поверх моих уже существующихгистограмма?

total_group_sum.unstack().plot(kind='bar')

<IMAGE OF BAR GRAPH (I AM NOT ABLE TO POST PHOTO HERE)>

mean = total_group_sum.mean()
plt = total_group_sum.unstack().plot(kind='bar')
plt.axhline(mean)

ValueError: The truth value of a Series is ambiguous. Use a.empty, 
a.bool(), a.item(), a.any() or a.all().

PS - я использую ноутбук Jupyter

1 Ответ

0 голосов
/ 12 мая 2019

Итак, я попытался воссоздать, как мне кажется, вашу проблему, используя случайные данные:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


np.random.seed(123)
df = pd.DataFrame(
    {
        'a':np.random.randint(0,10,100),
        'b':np.random.randint(0,10,100),
        'c':np.random.randint(0,10,100),}
)

df.groupby('a').sum().unstack().plot(kind='bar')

barplot

Я думаю, что ваша проблема в том, чтоэта строка:

mean = df.groupby('a').sum().mean()

возвращает среднее значение для каждой группы:

b    48.7
c    42.1
dtype: float64

Затем вы вызываете

plt.axhline(mean)

, который хочет построить ровно одну линию, ноВы даете это несколько.Вы можете сделать две вещи:

  1. либо построить среднее значение для каждой группы:

    for m in mean:
        plt.axhline(m)
    
  2. или вычислить среднее значение для среднихи заговор что:

    plt.axhline(np.mean(mean))
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...