Python 从GroupBy中为箱线图选择列
我有一个数据集,我想按某个字段分组,然后画一个或多个单列的箱线图。我试图进行一次分组,然后依次选择每一列,但不管怎样,boxplot似乎都会绘制所有列 下面是一个例子:Python 从GroupBy中为箱线图选择列,python,pandas,Python,Pandas,我有一个数据集,我想按某个字段分组,然后画一个或多个单列的箱线图。我试图进行一次分组,然后依次选择每一列,但不管怎样,boxplot似乎都会绘制所有列 下面是一个例子: import pandas as pd import matplotlib.pyplot as plt animals = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog', 'cat', 'dog'], 'height': [9
import pandas as pd
import matplotlib.pyplot as plt
animals = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog', 'cat', 'dog'],
'height': [9.1, 6.0, 9.5, 34.0, 8.0, 30.0],
'weight': [7.9, 7.5, 9.9, 198.0, 8.0, 150.0]})
按“种类”分组,然后按箱线图按预期给我四个方框(猫,身高)(猫,体重)(狗,身高)(狗,体重)
grouped = animals.groupby('kind')
grouped.boxplot(subplots=False)
现在,如果我只想要这个高度,我想这是可行的:
grouped[["height"]].boxplot(subplots=False)
但我只得到同样的四个盒子
我知道我能行
animals.boxplot(column="height", by="kind")
这给了我想要的,但这似乎效率低下;如果我有10个专栏,我会做10次分组
澄清一下,我想要的是
grouped = mydata.groupby('something')
for col_name in [...column_names...]:
grouped[[col_name]].boxplot(...)
...save plot to file
i、 e.一个分组操作和多个箱线图
从DataFrameGroupBy
中选择列的正确方法是什么
使用pandas 0.25.1和Python 3.7.3,您可能需要这样的东西吗
grouped_df = animals.groupby('kind')[['height']].apply(lambda x: x.reset_index(drop=True)).reset_index(level=0)
grouped_df.groupby('kind').boxplot(subplots=False)
plt.show()
我不这么认为;不确定
apply
部分做什么,但这不是按种类分组两次吗?我澄清了这个问题,这将有助于hope@PeterHull第一个groupby获取任意多的列(如果在绘制boxplot时有许多列需要分隔),并在apply函数的帮助下使其成为dataframe。现在,您将只拥有箱线图所需的列,然后您可以简单地使用plotting功能。我以为这就是你想要的。