Итак, я попытался воссоздать, как мне кажется, вашу проблему, используя случайные данные:
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](https://i.stack.imgur.com/5d8M6.png)
Я думаю, что ваша проблема в том, чтоэта строка:
mean = df.groupby('a').sum().mean()
возвращает среднее значение для каждой группы:
b 48.7
c 42.1
dtype: float64
Затем вы вызываете
plt.axhline(mean)
, который хочет построить ровно одну линию, ноВы даете это несколько.Вы можете сделать две вещи:
либо построить среднее значение для каждой группы:
for m in mean:
plt.axhline(m)
или вычислить среднее значение для среднихи заговор что:
plt.axhline(np.mean(mean))