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.cut
或value_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)
)
输出:
为简单起见,假设我有一个包含两列的数据框 '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.cut
或value_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)
)
输出: