当绘制在seaborn barp上时,列值的总和是不同的

2024-04-18 17:43:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,其中有一列显示某个站点的车辆数量(count)。代码给出了这个列的正确和,当我在seaborn条形图上绘制它时,它给出了错误的值。在

# 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,但是它给出的值不同

生成数据框“ac”的数据帧示例(df_ras_1)

^{pr2}$

Tags: the数据df站点countexitpltac
1条回答
网友
1楼 · 发布于 2024-04-18 17:43:36

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

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()使您的数据更清晰、更易于分析和可视化。在

^{pr2}$

因此,您可以根据自己的需求轻松绘制图表。在

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

enter image description here

您可能会注意到Ps的值现在是12.5。这是因为它从第0行和第2行计算车辆计数的平均值。在

因此22+3=25,那么25/2=12.5

退出天空保持不变,因为它只有一个值


最后,为了解决您的问题,您可以添加estimator=sum
ax = sns.barplot(x='EXIT', y='VEH_COUNT', data=df_grp, ci=None, estimator=sum)

enter image description here

相关问题 更多 >