【问题标题】:How to create a seaborn scatterplot with multiple values per datframe cell如何创建每个 datframe 单元格具有多个值的 seaborn 散点图
【发布时间】:2020-08-10 21:46:25
【问题描述】:

我厌倦了创建一个散点图,每个 x 值在 y 轴上有多个点。我的数据框是多个系列的串联组合,所以它看起来像:

        sample 1
var A   [6.1348741][5.98921666][5.98921666]
var B   [6.06300458][6.14294531][6.14294531]
var C   [6.18084289][6.33433549 8.36140445 8.8569102 ][6.33433549 8.36140445 8.8569102 ]
var D   [6.20022251][2.99138873 6.19556828 8.36455137][2.99138873 6.19556828 8.36455137]
var E   [6.1560241][6.30790417][6.30790417]
var F   [6.17638675][6.34667509 8.74861151][6.34667509 8.74861151]

我尝试使用正则表达式来提取数据,但我只得到第一个值,并且无论如何都希望理想地独立处理每个乡绅括号列表。有人知道如何去做吗?

我想最终得到一个散点图,其中 x 轴上的索引和 y 轴上的点。

【问题讨论】:

    标签: python pandas numpy seaborn


    【解决方案1】:

    您可以遍历行,并将每个字符串转换为浮点数列表。然后绘制这些列表:

    from matplotlib import pyplot as plt
    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame(data={"sample 1": ['[6.1348741][5.98921666][5.98921666]',
                                         '[6.06300458][6.14294531][6.14294531]',
                                         '[6.18084289][6.33433549 8.36140445 8.8569102 ][6.33433549 8.36140445 8.8569102 ]',
                                         '[6.20022251][2.99138873 6.19556828 8.36455137][2.99138873 6.19556828 8.36455137]',
                                         '[6.1560241][6.30790417][6.30790417]',
                                         '[6.17638675][6.34667509 8.74861151][6.34667509 8.74861151]']},
                      index=['var A', 'var B', 'var C', 'var D', 'var E', 'var F'])
    
    for idx, val in df.iterrows():
        ys = [float(v) for v in str(val[0]).replace('[', ' ').replace(']', ' ').split()]
        plt.scatter(np.repeat(idx, len(ys)), ys, c='crimson')
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2022-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      相关资源
      最近更新 更多