【问题标题】:Value Error: Label must be of length 'x' python 3值错误:标签的长度必须为“x”python 3
【发布时间】:2019-08-23 02:50:25
【问题描述】:

我知道有人问了一些类似的问题,但我已经测试了所有解决方案,但它仍然给我同样的错误,即 Value error: Label must be of length 'x'。以下是代码和数据集的sn-ps,以备不时之需。

data=[['E001', 'M', 34, 123,'Normal',350],
      ['E002', 'F', 40, 114, 'Overweight', 450],
      ['E003', 'F', 37, 135, 'Obesity', 169],
      ['E004', 'M', 30, 139, 'Underweight',189],
      ['E005', 'F', 44, 117, 'Underweight',183],
      ['E006', 'M', 36, 121, 'Normal', 80],
      ['E007', 'M', 33, 133, 'Obesity', 166],
      ['E008', 'F', 26, 140, 'Normal', 120],
      ['E009', 'M', 32, 133, 'Normal', 75],
      ['E0010','M', 36, 133, 'Underweight', 40]]

df=pd.DataFrame(data,columns=['EMPID','Gender','Age','Sales','BMI','Income'])

label=list(df.columns.values)
print(label)
plt.pie(df['Age'],labels=label,autopct='%1.1f%%', shadow=True)
plt.show()

【问题讨论】:

  • 这个错误出现在哪一行?
  • 它在 plt.pie(df['Age'],labels=label,autopct='%1.1f%%', shadow=True) 行上得到错误@Bartek跨度>
  • 啊,这是因为您将labels 指定为label,其中应该是`labels=df['Age']。 x 和标签的长度不匹配。

标签: python python-3.x dataframe matplotlib


【解决方案1】:

您的 df["age"] 需要与标签列表的长度相同。 在下面运行这段代码,看看它是如何工作的。

import pandas as pd
import matplotlib.pyplot as plt

data=[['E001', 'M', 34, 123,'Normal',350],
          ['E002', 'F', 40, 114, 'Overweight', 450],
          ['E003', 'F', 37, 135, 'Obesity', 169],
          ['E004', 'M', 30, 139, 'Underweight',189],
          ['E005', 'F', 44, 117, 'Underweight',183],
          ['E006', 'M', 36, 121, 'Normal', 80],
          ['E007', 'M', 33, 133, 'Obesity', 166],
          ['E008', 'F', 26, 140, 'Normal', 120],
          ['E009', 'M', 32, 133, 'Normal', 75],
          ['E0010','M', 36, 133, 'Underweight', 40]]

df=pd.DataFrame(data,columns=['EMPID','Gender','Age','Sales','BMI','Income'])
df.head()
label=list(df.columns.values)
print(label)
new_list = list(df['Age'])
plt.pie(new_list[4:],labels=label,autopct='%1.1f%%', shadow=True)
plt.show()

【讨论】:

    【解决方案2】:

    在标签中你需要传递df['Age'],这样它才能显示每个年龄的百分比

    data=[['E001', 'M', 34, 123,'Normal',350],
          ['E002', 'F', 40, 114, 'Overweight', 450],
          ['E003', 'F', 37, 135, 'Obesity', 169],
          ['E004', 'M', 30, 139, 'Underweight',189],
          ['E005', 'F', 44, 117, 'Underweight',183],
          ['E006', 'M', 36, 121, 'Normal', 80],
          ['E007', 'M', 33, 133, 'Obesity', 166],
          ['E008', 'F', 26, 140, 'Normal', 120],
          ['E009', 'M', 32, 133, 'Normal', 75],
          ['E0010','M', 36, 133, 'Underweight', 40]]
    
    df=pd.DataFrame(data,columns=['EMPID','Gender','Age','Sales','BMI','Income'])
    
    label=list(df.columns.values)
    print(label)
    plt.pie(df['Age'],labels=df['Age'],autopct='%1.1f%%', shadow=True)
    plt.show()
    

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      相关资源
      最近更新 更多