如何绘制一列平均值的直方图,而箱由 Pandas 中的另一列定义

How to plot histogram of mean of one column while bins are defined by another column in Pandas

我想为 Pandas DataFrame 的两列绘制直方图。虽然 bin 由列 ratio 的值定义,例如[0-0.1, 0.1-0.2,...,0.9-1.0],而不是像常规直方图那样的计数,我需要为每个 bin 绘制另一列 feet 的平均值。我可能可以创建另一个列,将 ratio 列分类,并通过在新列上分组来计算 feet 的平均值。但是有没有一种方法可以在不生成新列的情况下绘制它

你不需要创建一个新的列,只需要传递一个函数给groupby:

示例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'ratio':np.random.rand(100), 'feet': np.random.rand(100)*10})
df.groupby(pd.cut(df.ratio, np.linspace(0,1,11))).feet.mean().plot.bar()

PS:从pandas的1.1.0版本开始可以直接指定y标签,如...plot.bar(ylabel='Mean feet')