为什么会出现ValueError试图绘制箱形图的情况?

时间:2020-06-14 11:03:25

标签: python pandas matplotlib

我正在尝试绘制箱形图,因此出于这个原因,我创建了连接到箱形图标签的数据框列表,但仍然出现ValueError:

ValueError: cannot copy sequence with size 20 to array axis with dimension 2

但是它们确实是连接的,我真的听不懂 我的代码:

    uniq = pd.unique(data[columns[0]]).tolist()
    data_to = []
    for item in uniq:
        data_to.append(data[columns[1] and data[columns[0]] == item])
    fig, ax = ppl.subplots()
    ax.boxplot(data_to, labels=uniq)
    ax.set_ylabel(columns[1])
    ax.set_xlabel(columns[0])
    ax.set_title = 'Диаграмма "Бокса-Вискера" для столбца '+columns[0]
    ppl.show()

我正在尝试绘制箱形图,因此出于这个原因,我创建了连接到箱形图标签的数据框列表,但仍然出现ValueError:

ValueError: Dimensions of labels and X must be compatible

但是它们确实是连接的,我真的听不懂 我的代码:

    uniq = pd.unique(data[columns[0]]).tolist()
    data_to = []
    for item in uniq:
        data_to.append(data[columns[1] and data[columns[0]] == item])
    fig, ax = ppl.subplots()
    ax.boxplot(data, labels=uniq)
    ax.set_ylabel(columns[1])
    ax.set_xlabel(columns[0])
    ax.set_title = 'Диаграмма "Бокса-Вискера" для столбца '+columns[0]
    ppl.show()

那是数据(由于网站而未满)

   Пол  Возраст
0    Ж       18
1    Ж       17
2    Ж       15
3    Ж       15
4    Ж       16
5    M       16
6    M       16
7    Ж       17

和列:

['Пол', 'Возраст']

谢谢

1 个答案:

答案 0 :(得分:0)

for循环不是获取唯一值的最佳方法。这是一种获取所需内容的简单方法:

import pandas as pd
import matplotlib.pyplot as ppl


data = pd.DataFrame({"Пол": ['Ж', 'Ж', 'Ж', 'Ж', 'Ж', 'M', 'M', 'Ж'],
                    "Возраст": [18, 17, 15, 15, 16, 16, 16, 17]})
columns = ['Пол', 'Возраст']


fig, ax = ppl.subplots()
data.boxplot(column=columns[1], by=columns[0], ax=ax)
ax.set_ylabel(columns[1])
ax.set_xlabel(columns[0])
ax.set_title = 'Диаграмма "Бокса-Вискера" для столбца '+columns[0]
ppl.show()

该图的结果: