如何使用for循环为每种类型的前五名游戏绘制条形图
How to plot bar graph for top five game for each genre using for loop
genre_game=group_game.groupby(["Genre","Name"])"Global_Sales"].sum().reset_index().sort_values(["Genre","Global_Sales"],ascending=(True,False))
genre_game
enter image description here
genre_s=df["Genre"].unique()
genre_sorted=sorted(genre_s)
print(f'List of : {genre_sorted}' )
列表:['Action'、'Adventure'、'Fighting'、'Misc'、'Platform'、'Puzzle'、'Racing' , 'Role-Playing', 'Shooter', 'Simulation', 'Sports', 'Strategy']
def f(genre):
for genre in genre_sorted:
plt.bar(genre_game[genre][:5],genre_game["Global_Sales"][genre:genre+5])
plt.xticks(rotation=90)
f("Adventure")
你可以不用循环。此示例按前 2 大销售额分组,但您可以将 2 更改为 5 或任何数字。
import pandas as pd
import matplotlib.pyplot as plt
genre = ['Action', 'Action', 'Action', 'Strategy', 'Strategy', 'Strategy']
name =['GTAV', 'GTAIV', 'FIFA13', 'Worms2', 'Tropico', 'WarOverworld']
sales = [55, 13, 16, 1, 1, 0.5]
df = pd.DataFrame(list(zip(genre, name, sales)),
columns=['genre', 'name', 'sales'])
df2 = df.groupby('genre') \
.apply(lambda x: x.nlargest(2, 'sales')) \
.reset_index(drop=True)
plt.bar(df2.name, df2.sales)
plt.xlabel('x')
plt.ylabel('% global')
plt.show()
这里是来源 df
的样子:
这是前 2 df2
的样子:
genre_game=group_game.groupby(["Genre","Name"])"Global_Sales"].sum().reset_index().sort_values(["Genre","Global_Sales"],ascending=(True,False))
genre_game
enter image description here
genre_s=df["Genre"].unique()
genre_sorted=sorted(genre_s)
print(f'List of : {genre_sorted}' )
列表:['Action'、'Adventure'、'Fighting'、'Misc'、'Platform'、'Puzzle'、'Racing' , 'Role-Playing', 'Shooter', 'Simulation', 'Sports', 'Strategy']
def f(genre):
for genre in genre_sorted:
plt.bar(genre_game[genre][:5],genre_game["Global_Sales"][genre:genre+5])
plt.xticks(rotation=90)
f("Adventure")
你可以不用循环。此示例按前 2 大销售额分组,但您可以将 2 更改为 5 或任何数字。
import pandas as pd
import matplotlib.pyplot as plt
genre = ['Action', 'Action', 'Action', 'Strategy', 'Strategy', 'Strategy']
name =['GTAV', 'GTAIV', 'FIFA13', 'Worms2', 'Tropico', 'WarOverworld']
sales = [55, 13, 16, 1, 1, 0.5]
df = pd.DataFrame(list(zip(genre, name, sales)),
columns=['genre', 'name', 'sales'])
df2 = df.groupby('genre') \
.apply(lambda x: x.nlargest(2, 'sales')) \
.reset_index(drop=True)
plt.bar(df2.name, df2.sales)
plt.xlabel('x')
plt.ylabel('% global')
plt.show()
这里是来源 df
的样子:
这是前 2 df2
的样子: