Python 无法使用matplotlib重新创建catplot

Python 无法使用matplotlib重新创建catplot,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我有一个数据框: df=pd.DataFrame(数据={'X':['Jason','Molly','Tina','Jason','Tina','Tina'],'Y':[13,19,52,14,12,12]} 我想在matplotlib中重新创建seaborn library的catplot功能,如: sns.catplot(x='X', y='Y', kind="box", data=df) 因此,我: plt.boxplot(df.X, df.Y) 但这不起作用,我得到一个错误: Typ

我有一个数据框:

df=pd.DataFrame(数据={'X':['Jason','Molly','Tina','Jason','Tina','Tina'],'Y':[13,19,52,14,12,12]}

我想在matplotlib中重新创建seaborn library的catplot功能,如:

sns.catplot(x='X', y='Y', kind="box", data=df)
因此,我:

plt.boxplot(df.X, df.Y)
但这不起作用,我得到一个错误:

TypeError:无法使用灵活类型执行reduce

如何在matplotlib中获得相同的结果


我是在matplotlib中这样做的,因为使用seaborn,我必须手动更改x,并且我希望使用for循环动态更改x,因为seaborn首先按x对数据进行分组。使用matplotlib时,需要手动进行分组

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(data = {'X':['Jason', 'Molly', 'Tina', 'Jason', 'Tina', 'Tina'],
                          'Y': [13,19,52,14,12,12]})

plt.boxplot([col.Y.values for n, col in df.groupby("X")])
plt.show()

您可以尝试
df.boxplot(column='Y',by='X')
。您可以解释一下如何使用:col.Y.values for n,col in df.groupby(“X”)?这将按名称对值进行分组。结果将是一个列表
[[13,14],[19],[52,12,12]]
。我理解。然而,我是一个有点呆头呆脑的人,你能给我指一些我可以自己参考的链接吗,你用来分组的技巧?我从未见过这种用法,这里有文档记录。这基本上就是引擎盖下的内容(尽管
.unique
确实如此)
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(data = {'X':['Jason', 'Molly', 'Tina', 'Jason', 'Tina', 'Tina'],
                          'Y': [13,19,52,14,12,12]})

plt.boxplot([col.Y.values for n, col in df.groupby("X")])
plt.show()