pandas 如何使其在条形图上,x>30之后的值被求和

im9ewurl  于 2023-06-20  发布在  其他
关注(0)|答案(2)|浏览(104)

在这种情况下,我需要所有用户,谁有超过total_noise_sent > 5的地方总结,我不明白我应该如何做在我的代码,在那里我分组或做它在图形的代码

graph_noise = df.groupby(['total_noise_sent','gr']).agg({'uid':'count'})
graph_noise = graph_noise.reset_index()
sb.barplot(x="total_noise_sent", y="uid", hue="gr", data=graph_noise)
plt.show()

huwehgph

huwehgph1#

在您的数据框架中,您可以将所有超过5的值替换为另一个值,例如“>5”:

graph_noise.loc[graph_noise.total_noise_sent > 5, 'total_noise_sent'] = ">5"

以将它们与其他列区分开来,并在条形图中创建另一列。请考虑修改列的所有值,使其作为字符串。

xfyts7mz

xfyts7mz2#

通常更容易更新数据,然后用更新后的数据绘图。首先,获取uid的值(new和old)的和,然后删除噪声大于5的行。添加新的求和值并绘图。

    • 样本数据**
>>> graph_noise
total_noise_sent    gr  uid
0   0   new 20
1   0   old 18
2   1   new 18
3   1   old 20
4   2   new 15
5   2   old 15
6   3   new 12
7   3   old 10
8   5   new 10
9   5   old 12
10  6   new 5
11  6   old 5
12  85  new 1
13  96  old 1
14  106 old 1
15  147 new 1
16  280 new 1
    • 更新代码**
## Noise with new - get sum
noise_new = graph_noise[(graph_noise.total_noise_sent > 5) & (graph_noise.gr=='new')].uid.sum()
## Noise with new - get sum
noise_old = graph_noise[(graph_noise.total_noise_sent > 5) & (graph_noise.gr=='old')].uid.sum()
## Remove all values where noise > 5
graph_noise = graph_noise[graph_noise.total_noise_sent <= 5]

## Add new rows for new and old with values
graph_noise.loc[len(graph_noise.index)] = ['>5', 'new', noise_new]
graph_noise.loc[len(graph_noise.index)] = ['>5', 'old', noise_old]
##Plot the graph
sns.barplot(x='total_noise_sent', y='uid',hue='gr',data=graph_noise)
    • 剧情**

相关问题