首页 > 解决方案 > 如何在barplot python中取平均值

问题描述

我有一个由 330 个值组成的数据集,我想在其中显示速度和错误之间的相关性。如果我按原样显示情节,则很难检查相关性。然后,我想根据速度范围平均误差。我的意思是,每个条形代表 0 和 1、1 和 2 之间的平均速度,依此类推。我现在的代码是这样的。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure

figure(figsize=(24, 12), dpi=80)
# Make a random dataset:
height = summ['Error']
bars = summ['MeanSpeed']
y_pos = np.arange(len(bars))

# Create bars
plt.bar(y_pos, height)

# Create names on the x-axis
plt.xticks(y_pos, bars)

# Show graphic
plt.show()

如何平均每个速度范围的值?

我想要这样的东西:

在此处输入图像描述

我通过这样做来创建它:

m1=np.mean(summ[(summ['MeanSpeed']>=0)&(summ['MeanSpeed']<=1)])[4]
m2=np.mean(summ[(summ['MeanSpeed']>=1)&(summ['MeanSpeed']<=2)])[4]
m3=np.mean(summ[(summ['MeanSpeed']>=2)&(summ['MeanSpeed']<=3)])[4]
m4=np.mean(summ[(summ['MeanSpeed']>=3)&(summ['MeanSpeed']<=4)])[4]
plt.bar([1,2,3,4], [m1,m2,m3,m4])
plt.show()

标签: pythonmatplotlibbar-chartaverage

解决方案


MeanSpeed假设您在列(0.12、2.25、2.77 等)中有浮点平均速度数据并且您正在使用数据框,您可以:

  • 添加新列MeanSpeedInt
df['MeanSpeedInt'] = int(df['MeanSpeed'])
  • MeanSpeedInt按列分组并取平均值
df.groupby(by=['MeanSpeedInt']).mean()

它将导致列中的mean errorErrorMeanSpeed组 0、1​​、2、3 等分组。类似的东西。代码未经测试,从内存中编写。


推荐阅读