pandas 绘制列的直方图,颜色表示属于基于另一列的类别的计数分数

pandas plot histogram of column with color indicating the fraction of counts belonging to a category based on another column

为简单起见,假设我有一个包含两列的数据框 'annual income' 和 'gender'

我想绘制每个箱子的年收入直方图,颜色表示该箱子中 male/female 的分数。

import numpy as np
import pandas as pd
df = {'annual_income':np.random.randint(0,10,(1000,)),'gender':np.random.randint(0,2,(1000,))}
df = pd.DataFrame(df)

df.hist(column='annual_income')

到目前为止,我只能绘制年收入的直方图,但我希望每个箱子都由构成箱子的 male/female 的分数着色。 如果有更经典的方法来可视化相同的想法,我也会很感激

使用pd.cutvalue_counts进行分箱,然后按照评论中的建议pd.crosstab

# pass your bins here, you can also pass an array
(pd.crosstab(pd.cut(df['annual_income'], bins=5),
             df['gender'], normalize='index')
   .plot.bar(stacked=True)
)

输出: