列字段内向量的箱线图 Pandas

Box Plot Pandas of a vector within columns fields

我在 pandas 中有一个像这样的 DataFrame:

                 rank                                 array_for_box_plot  \
 sequence                                                                
    1         1.111111       [0, 1, 1, 1, 2, 0, 1, 4, 4, 0, 1, 0, 2, 0, 2, ...   

    2         0.714286         [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 3, 1]   
    3         0.900000                     [2, 1, 2, 0, 2, 0, 1, 1, 0, 0]   
    4         1.300000                     [3, 2, 2, 0, 2, 1, 0, 2, 1, 0]   
    5         0.111111                        [0, 1, 0, 0, 0, 0, 0, 0, 0]   
    6         0.444444                        [2, 0, 0, 0, 1, 1, 0, 0, 0]

我会绘制一个箱线图,其中在 x 轴上我应该有相对 'sequence' 和每个 'array'

列的箱线图 'array_for_box_plot'

你能帮帮我吗?

谢谢

如果您执着于该数据结构,那么您将需要遍历每一行并构建您的绘图:

但这不是很 pandas-esque。更 pandas 风格的解决方案是对箱线图数据中的每个观察结果重复 rank,然后按 rank

分组

尝试如下操作:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(columns=['frequency', 'array_for_box_plot'], data=data)

fig = plt.figure(1, figsize=(15, 15))
ax = fig.add_subplot(111)
boxplot = ax.boxplot(df.array_for_box_plot.values.tolist())

产生:

使用的数据:

data = [
    [1, [0, 1, 1, 1, 2, 0, 1, 4, 4, 0, 1, 0, 2, 0, 2]],
    [2, [1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 3, 1]],
    [3, [2, 1, 2, 0, 2, 0, 1, 1, 0, 0]],
    [4, [3, 2, 2, 0, 2, 1, 0, 2, 1, 0]],
    [5, [0, 1, 0, 0, 0, 0, 0, 0, 0]],
    [6, [2, 0, 0, 0, 1, 1, 0, 0, 0]],
]