gpt4 book ai didi

python - 在 seaborn barplot 上绘制时,列值的总和不同

转载 作者:行者123 更新时间:2023-12-05 03:00:25 24 4
gpt4 key购买 nike

我有一个数据框,其中有一列没有。某站的车辆(计数)。代码给出了该列的正确总和,当我将它绘制在 seaborn barplot 上时,它给出了错误的值。

# this is the dataframe
ac=df_ras_1.loc[(df_ras_1['ENTRY_STATION']=='Ras') & (df_ras_1['EXIT_STATION']=='Ps')&(df_ras_1['VEHICLETYPE']=='Car')]

# sum of VEHICLETYPE
ac['VEH_COUNT'].sum() ##gives the right value
391992

# when plotted it on the graph shows
plt.figure(figsize=(20,10))
plt.xticks(rotation=90)

cp = sns.barplot(x="EXIT_STATION", y='VEH_COUNT',hue="VEHICLETYPE", data=ac)

link to the graph此图应给出 391992,但它给出不同的值

生成 df 'ac' 的数据帧样本 (df_ras_1)

DATE        ENTRY_STATION    EXIT_STATION   VEHICLETYPE  VEH_COUNT
2016-01-01 Ras Ps Car 1
2016-01-02 Ras Ps Car 9
2016-01-03 Ras Ps Car 12
2016-01-04 Ras Ps Car 3

最佳答案

好吧,假设您有以下数据框:

data = {'ENTRY': ['Ras', 'Ras', 'Ras', 'Mordor', 'Mordor'],
'EXIT': ['Ps', 'Ps', 'Ps', 'Ps', 'Sky'],
'TYPE': ['Car', 'Car', 'Car', 'Car', 'Car'],
'VEH_COUNT': [1, 9, 12, 3, 7]}

df = pd.DataFrame(data)
df.head()


# ENTRY EXIT TYPE VEH_COUNT
#0 Ras Ps Car 1
#1 Ras Ps Car 9
#2 Ras Ps Car 12
#3 Mordor Ps Car 3
#4 Mordor Sky Car 7

我建议您使用 groupby()sum() 使您的数据更清晰,更易于分析和可视化。

df_grp = df.groupby(['ENTRY', 'EXIT', 'TYPE'])['VEH_COUNT'].sum().reset_index()
df_grp.head()


# ENTRY EXIT TYPE VEH_COUNT
#0 Mordor Ps Car 3
#1 Mordor Sky Car 7
#2 Ras Ps Car 22

因此,您可以根据需要轻松绘制图表。

# Seaborn Visualisation
ax = sns.barplot(x='EXIT', y='VEH_COUNT', data=df_grp)

enter image description here

您可能会注意到 Ps 的值现在是 12.5。这是因为它计算了 ROW#0 和 ROW#2VEH_COUNT 的平均值。

因此 22 + 3 = 25,然后 25/2 = 12.5

EXIT Sky 保持不变,因为它只有一个值


最后,要解决您的问题,您可以添加 estimator=sum

ax = sns.barplot(x='EXIT', y='VEH_COUNT', data=df_grp, ci=None, estimator=sum)

enter image description here

关于python - 在 seaborn barplot 上绘制时,列值的总和不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com