如何在 Seaborn 中绘制 Pandas .groupby() 对象 - 使用方法链
How to plot Pandas .groupby() objects in Seaborn - using method chaining
如果有任何关于如何将 Pandas .groupby() 对象通过管道传输到 Seaborn
的建议,我将不胜感激
我试图绘制 .groupby() 对象,但它给我一条错误消息:
ValueError:如果使用所有标量值,则必须传递索引
gapminder.\
groupby('year').\
agg({'pop' : ['sum'],
'lifeExp' : ['mean']}).\
reset_index().\
pipe((sns.relplot, "data"), x = "pop", y = "lifeExp", kind = "scatter").\
set(xscale = "log")
plt.show()
传递一个lambda,然后你就可以随意调用函数了:
.pipe(lambda d: sns.relplot(data=d, x="pop", y="lifeExp", kind="scatter"))
其中 d
代表您的 DataFrame,作为唯一参数整体传递给 .pipe
。
答案得益于 0.25 版 Pandas "Named aggregation with .groupby()" 中添加的一项新功能。这允许通过 .agg() 函数创建变量,并输出到具有统一索引的整洁数据帧,而不是 Pandas <= 0.24 版本中的多索引 groupby 对象。
下面显示了如何通过 Pandas 链接查询并无缝地进入 Seaborn。
gapminder.\
groupby('year').\
agg(pop_sum = ('pop', sum),
lifeExp_mean = ('lifeExp', 'mean')).\
reset_index().\
pipe((sns.relplot,"data"), x="pop_sum", y="lifeExp_mean", kind="scatter").\
set(xscale = "log")
plt.show()
如果有任何关于如何将 Pandas .groupby() 对象通过管道传输到 Seaborn
的建议,我将不胜感激我试图绘制 .groupby() 对象,但它给我一条错误消息: ValueError:如果使用所有标量值,则必须传递索引
gapminder.\
groupby('year').\
agg({'pop' : ['sum'],
'lifeExp' : ['mean']}).\
reset_index().\
pipe((sns.relplot, "data"), x = "pop", y = "lifeExp", kind = "scatter").\
set(xscale = "log")
plt.show()
传递一个lambda,然后你就可以随意调用函数了:
.pipe(lambda d: sns.relplot(data=d, x="pop", y="lifeExp", kind="scatter"))
其中 d
代表您的 DataFrame,作为唯一参数整体传递给 .pipe
。
答案得益于 0.25 版 Pandas "Named aggregation with .groupby()" 中添加的一项新功能。这允许通过 .agg() 函数创建变量,并输出到具有统一索引的整洁数据帧,而不是 Pandas <= 0.24 版本中的多索引 groupby 对象。 下面显示了如何通过 Pandas 链接查询并无缝地进入 Seaborn。
gapminder.\
groupby('year').\
agg(pop_sum = ('pop', sum),
lifeExp_mean = ('lifeExp', 'mean')).\
reset_index().\
pipe((sns.relplot,"data"), x="pop_sum", y="lifeExp_mean", kind="scatter").\
set(xscale = "log")
plt.show()