Как отобразить сводную статистику рядом с графиком, используя matplotlib или seaborn? - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь создать функцию, которая будет перебирать список числовых функций в кадре данных для отображения гистограммы и сводной статистики рядом с ней.Я использую plt.figtext() для отображения статистики, но получаю сообщение об ошибке

num_features=[n1,n2,n3]

for i in num_features:
    fig, ax = plt.subplots()
    plt.hist(df[i])
    plt.figtext(1,0.5,df[i].describe() )
    ax.set_title(i)
    plt.show()

Когда я это делаю, я получаю сообщение об ошибке / предупреждение:

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

Работает нормально, если использовать df[n].mean() вместо describe()

Что я делаю не так?Есть ли лучший способ напечатать график и показать статистику рядом с ним?

Ответы [ 2 ]

3 голосов
/ 07 мая 2019

Вы можете «упростить» свой код, отформатировав возвращенный describe() фрейм данных в виде строки, используя to_string():

df = pd.DataFrame(np.random.normal(size=(2000,)))
fig, ax = plt.subplots()
ax.hist(df[0])
plt.figtext(0.1,0.5, df.describe().to_string())
plt.figtext(0.75,0.5, df.describe().loc[['mean','std']].to_string())

enter image description here

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

Добавил, основываясь на отзывах, и теперь работает нормально.

for i in num_cols:
#calculate number of bins first based on Freedman-Diaconis rule
    n_counts=df[i].value_counts().sum()
    iqr=df[i].quantile(0.75)-df[i].quantile(0.25)
    h = 2 * iqr * (n_counts**(-2/3))
    n_bins=(df[i].max()-df[i].min()).round(0).astype(np.int64)

    fig, ax = plt.subplots()
    plt.hist(df[i],bins=15)
    plt.figtext(1,0.5,s=t[i].describe().to_string())
    plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...