在 Seaborn/其他库中聚合的 FacetGrid 图
Posted
技术标签:
【中文标题】在 Seaborn/其他库中聚合的 FacetGrid 图【英文标题】:FacetGrid plot with aggregate in Seaborn/other library 【发布时间】:2021-10-12 09:44:08 【问题描述】:我有这样的玩具数据框:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame('cat': ['a', 'a', 'a', 'b', 'b', 'b'], 'n1': [1,1,1,4,5,6], 'n2': [6,5,2,2,2,1])
我想按cat
分组并为n1
和n2
绘制直方图,另外我想在不分组的情况下绘制这些直方图,所以首先将数据转换为seaborn 格式:
df2 = pd.melt(df, id_vars='cat', value_vars=['n1', 'n2'], value_name='value')
第二次添加“全部”:
df_all = df2.copy()
df_all['cat'] = 'all'
df3 = pd.concat([df2, df_all])
最后绘制:
g = sns.FacetGrid(df2, col="variable", row="cat")
g.map(plt.hist, 'value', ec="k")
我想知道,是否可以以更优雅、更简洁的方式完成,而无需创建 df3
或 df2
。可以使用不同的库。
【问题讨论】:
这对我来说似乎很干净。如果您必须经常这样做,请构建一个以 df 作为输入的函数,执行熔化并输出最终的 df3 或直接输出绘图。 【参考方案1】:正如我在评论中提到的,我认为您所做的一切都很好。如果需要经常执行,请制作一个函数。不过,您可能对pandas_profiling 感兴趣。这以交互方式详细描述了您的数据配置文件。在我看来,这对于您想要做的事情来说可能是矫枉过正,但我会让您来判断;)
import pandas_profiling
df.profile_report()
交互式输出的摘录:
【讨论】:
谢谢,我在想 seaborn 提供了像“include_aggregate=True”这样的参数,我不知道。这样解决方案将更具声明性。以上是关于在 Seaborn/其他库中聚合的 FacetGrid 图的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以正确聚合时间序列数据以使用 matplotlib/seaborn 制作散点图?