python - 散点图问题 - 不确定如何为我想要的结果构建图?
python - scatter plot issue - not sure how to structure the plot for the results i want?
我有一个跨多个平台发布的视频游戏名称的数据框,以及它们的总销售额。它看起来像这样:
name total_sales platform
0 Frozen: Olaf's Quest 0.51 DS
1 Frozen: Olaf's Quest 0.59 3DS
2 007: Quantum of Solace 0.02 PC
3 007: Quantum of Solace 0.13 DS
4 007: Quantum of Solace 0.43 PS2
5 007: Quantum of Solace 0.65 Wii
6 007: Quantum of Solace 1.15 PS3
7 007: Quantum of Solace 1.48 X360
8 007: The World is not Enough 0.92 PS
9 007: The World is not Enough 1.56 N64
10 11eyes: CrossOver 0.02 PSP
11 18 Wheeler: American Pro Truc 0.11 GC
12 18 Wheeler: American Pro Truc 0.40 PS2
13 187: Ride or Die 0.06 XB
14 187: Ride or Die 0.15 PS2
15 2 in 1 Combo Pack: Sonic Heroes 0.11 X360
16 2 in 1 Combo Pack: Sonic Heroes 0.53 XB
17 2002 FIFA World Cup 0.05 GC
18 2002 FIFA World Cup 0.19 XB
19 2002 FIFA World Cup 0.60 PS2
我正在使用以下内容来组织数据框:
df = yearly_sales.groupby(['name','total_sales']).last()
df = yearly_sales.reset_index()
然后将其绘制在 seaborn 散点图上:
sns.scatterplot(data=yearly_sales, x="total_sales", y="name")
现在,它不会按名称绘制(我猜是因为有 7400 个值)
所以我想我会尝试计算平台之间的偏差:
df.groupby(['name','platform'])['total_sales'].std()
但是,这主要给了我 NaN 值,因为几乎没有游戏跨所有平台。
我不确定我的下一步应该是什么。最后,我想展示的是每个游戏的总销量在不同平台上有何不同。我什至不完全相信我是以正确的方式开始的。
任何输入将不胜感激!
提前感谢您的时间,
贾里德
我认为 histplot
将是一个更好的可视化问题的方法,如果 “最终,我想展示的是每个标题的总销量在不同平台上的差异” 这显示了具有标准偏差(按游戏分组)的游戏在 0.1 箱中的频率。您可以将 ddof=0
传递给非 return NaN
值,但这会改变所有值的标准偏差。
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
plt.style.use('dark_background')
fig, ax = plt.subplots(dpi=150)
df = df[['name', 'total_sales']].groupby('name', as_index=False).std(ddof=0)
sns.histplot(data=df, x='total_sales', kde=True, bins=np.arange(0,1,0.1))
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
我有一个跨多个平台发布的视频游戏名称的数据框,以及它们的总销售额。它看起来像这样:
name total_sales platform
0 Frozen: Olaf's Quest 0.51 DS
1 Frozen: Olaf's Quest 0.59 3DS
2 007: Quantum of Solace 0.02 PC
3 007: Quantum of Solace 0.13 DS
4 007: Quantum of Solace 0.43 PS2
5 007: Quantum of Solace 0.65 Wii
6 007: Quantum of Solace 1.15 PS3
7 007: Quantum of Solace 1.48 X360
8 007: The World is not Enough 0.92 PS
9 007: The World is not Enough 1.56 N64
10 11eyes: CrossOver 0.02 PSP
11 18 Wheeler: American Pro Truc 0.11 GC
12 18 Wheeler: American Pro Truc 0.40 PS2
13 187: Ride or Die 0.06 XB
14 187: Ride or Die 0.15 PS2
15 2 in 1 Combo Pack: Sonic Heroes 0.11 X360
16 2 in 1 Combo Pack: Sonic Heroes 0.53 XB
17 2002 FIFA World Cup 0.05 GC
18 2002 FIFA World Cup 0.19 XB
19 2002 FIFA World Cup 0.60 PS2
我正在使用以下内容来组织数据框:
df = yearly_sales.groupby(['name','total_sales']).last()
df = yearly_sales.reset_index()
然后将其绘制在 seaborn 散点图上:
sns.scatterplot(data=yearly_sales, x="total_sales", y="name")
现在,它不会按名称绘制(我猜是因为有 7400 个值) 所以我想我会尝试计算平台之间的偏差:
df.groupby(['name','platform'])['total_sales'].std()
但是,这主要给了我 NaN 值,因为几乎没有游戏跨所有平台。
我不确定我的下一步应该是什么。最后,我想展示的是每个游戏的总销量在不同平台上有何不同。我什至不完全相信我是以正确的方式开始的。
任何输入将不胜感激!
提前感谢您的时间,
贾里德
我认为 histplot
将是一个更好的可视化问题的方法,如果 “最终,我想展示的是每个标题的总销量在不同平台上的差异” 这显示了具有标准偏差(按游戏分组)的游戏在 0.1 箱中的频率。您可以将 ddof=0
传递给非 return NaN
值,但这会改变所有值的标准偏差。
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
plt.style.use('dark_background')
fig, ax = plt.subplots(dpi=150)
df = df[['name', 'total_sales']].groupby('name', as_index=False).std(ddof=0)
sns.histplot(data=df, x='total_sales', kde=True, bins=np.arange(0,1,0.1))
ax.yaxis.set_major_locator(MaxNLocator(integer=True))