如何使用 group by 用 pandas DataFrame.hist() 绘制直方图?
我有一个包含 5 列的数据框:“A”、“B”、“C”、“D”和“Group”
有两个组类别:“是”和“否”
Using:
df.hist()
我获取了 4 列中每一列的历史记录。
现在我想得到相同的 4 个图表,但带有蓝色条(group=“yes”)和红色条(group=“no”)。
我尝试了这个但没有成功:
df.hist(by = "group")
使用Seaborn
如果您愿意使用 Seaborn,则可以使用以下命令轻松制作具有多个子图和每个子图中多个变量的图seaborn.FacetGrid
.
import numpy as np; np.random.seed(1)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(300,4), columns=list("ABCD"))
df["group"] = np.random.choice(["yes", "no"], p=[0.32,0.68],size=300)
df2 = pd.melt(df, id_vars='group', value_vars=list("ABCD"), value_name='value')
bins=np.linspace(df2.value.min(), df2.value.max(), 10)
g = sns.FacetGrid(df2, col="variable", hue="group", palette="Set1", col_wrap=2)
g.map(plt.hist, 'value', bins=bins, ec="k")
g.axes[-1].legend()
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)