如何解决python - 散点图问题 - 不确定如何为我想要的结果构建图?
我有一个在多个平台上发布的视频游戏标题的数据框,以及它们的总销售额。它看起来像这样:
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
以不返回 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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。