构建直方图并找到 5 个最大值的问题

Problem with building a histogramm and finding 5 biggest values

提问人:krmbla 提问时间:11/5/2023 更新时间:11/5/2023 访问量:22

问:

white = df.loc[df['winner'] == 'white']

whitestrat = white.groupby(white['opening_name']).agg({'opening_name': 'count'})

display(whitestrat)

所以,问题是我得到了一个对构建直方图没有帮助的数据帧。

                           opening_name
opening_name                           
Alekhine Defense                     34
Alekhine Defense #2                   1
Amar Opening                          2
Amazon Attack                         2
Anderssen Opening                     5
...                                 ...
Wade Defense                          1
Ware Defense                          5
Ware Opening                          1
Yusupov-Rubinstein System             8
Zukertort Opening                    64

wwin = whitestrat.opening_name.nlargest(5)

sb.histplot(data = wwin)

我尝试制作一个具有 5 个最大值的数据帧,但无法正确绘制

wwin 看起来像这样

opening_name
Sicilian Defense     588
French Defense       321
Italian Game         233
Queen's Pawn Game    214
King's Pawn Game     205
Name: opening_name, dtype: int64

enter image description here

如何制作一个包含 whitestrat 中 5 个最大值及其名称的数据帧,并制作一个包含名称为 x 轴和值为 y 轴的直方图?

Python Pandas DataFrame 数据科学

评论


答:

0赞 user19077881 11/5/2023 #1

我不确定您的数据形式,或者您是否想要直方图或条形图(正如您提到的值)。将最后 5 个数据项作为 DF,您可以获得如下图,这可能是您想要的 - 否则请指教。该方法在链接中讨论enter image description here

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'Opening Name': ["Sicilian Defense", "French Defense", "Italian Game", "Queen's Pawn Game", "King's Pawn Game"],
                  'Value' : [588, 321, 233, 214, 205]
                   })

print(df)

x = df['Opening Name']
y = df['Value']

plt.figure(figsize = (10, 5))

def addlabels(x,y):
    for i in range(len(x)):
        plt.text(i, y[i], y[i], ha = 'center')

plt.bar(x, y)
addlabels(x, y)

plt.show()

指纹

        Opening Name  Value
0   Sicilian Defense    588
1     French Defense    321
2       Italian Game    233
3  Queen's Pawn Game    214
4   King's Pawn Game    205