【问题标题】:Seaborn plot per column in a pandas dataframe?熊猫数据框中每列的Seaborn图?
【发布时间】:2017-07-05 17:50:23
【问题描述】:

我有一个看起来有点像这样的小数据框:

csv = [{"Oranges" : 12, "Apples" : 4, "Kiwis" : "Yes"}, {"Oranges" : 1, "Apples" : 8, "Kiwis" : "No"}, {"Oranges" : 1, "Apples" : 14, "Kiwis" : "Yes"}, {"Oranges" : 11, "Apples" : 3, "Kiwis" : "No"}, ]
df = pd.DataFrame(csv)

只是,它有更多的列。我想为每列绘制一个海底小提琴图。如果我手动创建每列的图,它看起来有点像这样:

sns.violinplot(y="Oranges", x="Kiwis", data=df, split=True, inner="quart")
sns.violinplot(y="Apples", x="Kiwis", data=df, split=True, inner="quart")

但是,给定大约 100 个列,我想逐列遍历数据帧 col。

我尝试构建一个小函数,如下所示:

def violin(col):
    sns.violinplot(y=col, x="Kiwis", data=df, split=True, inner="quart")

我的想法是使用apply() 将其用于每一列...但到目前为止它确实有效.. 有什么想法吗?

【问题讨论】:

    标签: python-3.x pandas foreach seaborn


    【解决方案1】:

    您可以将difference 用于列Kiwis,然后使用apply 按子集[] 选择列:

    import matplotlib.pyplot as plt
    
    def violin(col):
        sns.violinplot(y=col, x="Kiwis", data=df, split=True, inner="quart")
        plt.figure()
    
    
    cols = df.columns.difference(['Kiwis'])
    df[cols].apply(violin)
    

    【讨论】:

    • 我收到以下错误:"Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional", 'occurred at index category')"。我开始将df 定义为df_num = df.select_dtypes(include=[np.float])。现在它完美地工作了!谢谢!
    【解决方案2】:

    我认为你只需要稍微重新格式化你的数据框,然后你就可以在一个电话中完成整个情节:

    df = pd.melt(df, "Kiwis", var_name="Fruit", value_name="Value")
    

    让事情看起来像

      Kiwis    Fruit  Value
    0   Yes   Apples      4
    1    No   Apples      8
    2   Yes   Apples     14
    3    No   Apples      3
    4   Yes  Oranges     12
    5    No  Oranges      1
    6   Yes  Oranges      1
    7    No  Oranges     11
    

    绘制起来很简单

    sns.violinplot(x="Fruit", y="Value", hue="Kiwis", data=df,
               split=True, inner="quart")
    

    【讨论】:

    • 非常酷的解决方案!但是,我得到了大约 200 个数字 - 因此在这种情况下,单个地块的解决方案似乎更好。
    猜你喜欢
    • 2022-01-15
    • 2017-09-05
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2015-07-08
    • 2015-11-14
    相关资源
    最近更新 更多