首页 > 解决方案 > 为什么我在尝试制作箱形图时得到 ValueError?

问题描述

我正在尝试制作箱线图,因此我创建了连接到箱线图标签的数据框列表,但仍然得到 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

和列:

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

谢谢

标签: pythonpandasmatplotlib

解决方案


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()

这导致了这个图表:


推荐阅读