分组数据框的Seaborn缩图

时间:2018-12-10 11:50:19

标签: python pandas seaborn pandas-groupby

当我有一个数据框时,这里是这样的:

import pandas as pd
import seaborn as sns
import random

random.seed(0)

df = pd.DataFrame({"Data":[random.random() for i in range(100)], "Cluster":[random.randint(0,10) for i in range(100)]})

我可以轻松地绘制出带有seaborn作为箱形图的簇:

sns.boxplot(df["Data"], groupby=df["Cluster"])

这给了我这样的东西: enter image description here

不幸的是,seaborn swarmplot没有groupby关键字。那么,如何才能轻松地将此数据框绘制为成组的swarmplots?我想要的图与仅用实线图而不是盒图显示的图相同。我玩过groupby对象本身:

df.groupby(by="Cluster")

到目前为止,我无法说服seaborn接受它。

1 个答案:

答案 0 :(得分:3)

我认为您不需要groupby-您只想将集群指定为x值,将数据指定为y:

sns.swarmplot(data=df, x="Cluster", y="Data")

给你:

swarm plot in seaborn

但是,如果您想使用其他类别作为颜色,例如

df = pd.DataFrame({"Data":[random.random() for _ in range(100)],
                   "Cluster":[random.randint(0,10) for _ in range(100)],
                   "Category": [random.choice(("A", "B")) for _ in range(100)]})

然后您可以像这样使用hue参数:

sns.swarmplot(data=df, x="Cluster", y="Data", hue="Category")

并获得:

swarm plot with categories