鱼C论坛

 找回密码
 立即注册
查看: 1432|回复: 1

[已解决]报错了,检查没发现不对

[复制链接]
发表于 2023-6-17 09:19:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
考点5:绘制data表中7列数据的箱型图,检测异常值

# 基于箱型图,检测异常值
import matplotlib.pyplot as plt
# 数据
d1 = data['distance_from_home']
d2 = data['distance_from_last_transaction']
d3 = data['ratio_to_median_purchase_price']
d4 = data['repeat_retailer']
d5 = data['used_chip']
d6 = data['used_pin_number']
d7 = data['online_order']
​
# 绘制各类别异常值分析箱型图
fig = plt.figure(figsize=(16, 8))
plt.title('各类别异常值分析箱型图', fontsize=15)
label = 'distance_from_home', 'distance_from_last_transaction', 'ratio_to_median_purchase_price', 'repeat_retailer', 'used_chip', 'used_pin_number', 'online_order'
plt.xlabel([d1, d2, d3, d4, d5, d6, d7], labels=label)  # label设置横轴每个箱图对应的横坐标
plt.xticks(rotation=45, fontsize=13)
plt.ylabel([d1, d2, d3, d4, d5, d6, d7], labels=label)
plt.yticks(rotation=45, fontsize=13)
plt.xlabel('变量', fontsize=13)
plt.ylabel('变量值', fontsize=13)

plt.show()
最佳答案
2023-6-17 09:26:07
你的代码有几个问题。首先,箱型图应该使用`plt.boxplot`来创建,而不是直接使用`plt.xlabel`和`plt.ylabel`。另外,你在绘制箱型图时需要传入一个包含所有要绘制的数据的列表。最后,你不能同时设置两个`xlabel`和`ylabel`。以下是我修改后的代码:

  1. # 基于箱型图,检测异常值
  2. import matplotlib.pyplot as plt

  3. # 数据
  4. d1 = data['distance_from_home']
  5. d2 = data['distance_from_last_transaction']
  6. d3 = data['ratio_to_median_purchase_price']
  7. d4 = data['repeat_retailer']
  8. d5 = data['used_chip']
  9. d6 = data['used_pin_number']
  10. d7 = data['online_order']

  11. # 组织所有数据到一个列表中
  12. data_to_plot = [d1, d2, d3, d4, d5, d6, d7]

  13. # 绘制各类别异常值分析箱型图
  14. fig = plt.figure(figsize=(16, 8))
  15. plt.title('各类别异常值分析箱型图', fontsize=15)

  16. # 创建箱型图,使用data_to_plot作为数据源
  17. plt.boxplot(data_to_plot)

  18. # 设置横轴和纵轴的标签
  19. labels = ['distance_from_home', 'distance_from_last_transaction', 'ratio_to_median_purchase_price', 'repeat_retailer', 'used_chip', 'used_pin_number', 'online_order']
  20. plt.xticks(range(1, len(labels) + 1), labels, rotation=45, fontsize=13)
  21. plt.xlabel('变量', fontsize=13)
  22. plt.ylabel('变量值', fontsize=13)

  23. plt.show()
复制代码


以上代码首先把所有需要绘制的数据放到一个列表中,然后调用`plt.boxplot`来创建箱型图。然后用`plt.xticks`设置了箱型图的x轴标签。最后,`plt.xlabel`和`plt.ylabel`分别设置了x轴和y轴的名称。

注意:如果你的数据中含有NaN或者无穷大的值,你需要在绘制箱型图之前处理掉这些值,否则可能会导致错误。你可以使用pandas的`dropna`函数来去除包含NaN的行,或者使用numpy的`isfinite`函数来检查数据中是否有无穷大的值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-6-17 09:26:07 | 显示全部楼层    本楼为最佳答案   
你的代码有几个问题。首先,箱型图应该使用`plt.boxplot`来创建,而不是直接使用`plt.xlabel`和`plt.ylabel`。另外,你在绘制箱型图时需要传入一个包含所有要绘制的数据的列表。最后,你不能同时设置两个`xlabel`和`ylabel`。以下是我修改后的代码:

  1. # 基于箱型图,检测异常值
  2. import matplotlib.pyplot as plt

  3. # 数据
  4. d1 = data['distance_from_home']
  5. d2 = data['distance_from_last_transaction']
  6. d3 = data['ratio_to_median_purchase_price']
  7. d4 = data['repeat_retailer']
  8. d5 = data['used_chip']
  9. d6 = data['used_pin_number']
  10. d7 = data['online_order']

  11. # 组织所有数据到一个列表中
  12. data_to_plot = [d1, d2, d3, d4, d5, d6, d7]

  13. # 绘制各类别异常值分析箱型图
  14. fig = plt.figure(figsize=(16, 8))
  15. plt.title('各类别异常值分析箱型图', fontsize=15)

  16. # 创建箱型图,使用data_to_plot作为数据源
  17. plt.boxplot(data_to_plot)

  18. # 设置横轴和纵轴的标签
  19. labels = ['distance_from_home', 'distance_from_last_transaction', 'ratio_to_median_purchase_price', 'repeat_retailer', 'used_chip', 'used_pin_number', 'online_order']
  20. plt.xticks(range(1, len(labels) + 1), labels, rotation=45, fontsize=13)
  21. plt.xlabel('变量', fontsize=13)
  22. plt.ylabel('变量值', fontsize=13)

  23. plt.show()
复制代码


以上代码首先把所有需要绘制的数据放到一个列表中,然后调用`plt.boxplot`来创建箱型图。然后用`plt.xticks`设置了箱型图的x轴标签。最后,`plt.xlabel`和`plt.ylabel`分别设置了x轴和y轴的名称。

注意:如果你的数据中含有NaN或者无穷大的值,你需要在绘制箱型图之前处理掉这些值,否则可能会导致错误。你可以使用pandas的`dropna`函数来去除包含NaN的行,或者使用numpy的`isfinite`函数来检查数据中是否有无穷大的值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 22:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表