使用pandas以十进制增量计算装箱平均值



我有一个pandas数据帧,我想为它计算装箱平均值。为了对我的数据进行分类,我正在寻找一个可以指定分类大小的解决方案(可能是在线(,而不是使用分类的数量。例如,来自此数据的示例:

A     B
0.1   4.2
0.15  2.0
0.17  3.0 
0.2   6.4
0.3   1.0
0.35  5.0
0.4   10.0
0.43  2.0
0.5   8.0

我想为列A指定bin_size=0.1,获取以下数据帧作为我的装箱平均值:

A       B                          
(0.1,0.2)     0.14     3.06
(0.3,0.4)     0.35     5.33
(0.4,0.5)     0.44     6.66

如果我要指定垃圾箱的数量,我会通过以下方式解决:

groups = df.groupby(pd.cut(df.A, bins))
df2 = pd.DataFrame(groups.mean())

但,正如我所说,我正在寻找一个解决方案,在其中我指定了垃圾箱的大小。也许需要强调的是,我的数据集有33961行。

您可以使用由0.1 相等分隔的numpy数组来定义bins

ranges = np.arange(df.A.min() - 0.1, df.A.max() + 0.1, 0.1)  #[0, 0.1, 0.2, 0.3 ...] 
groups = df.groupby(pd.cut(df.A, ranges))
groups.mean()

#               A           B
#  A        
# (0.0, 0.1]    0.100000    4.2
# (0.1, 0.2]    0.173333    3.8
# (0.2, 0.3]    0.300000    1.0
# (0.3, 0.4]    0.375000    7.5
# (0.4, 0.5]    0.465000    5.0

最新更新