鱼C论坛

 找回密码
 立即注册
查看: 807|回复: 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`。以下是我修改后的代码:
# 基于箱型图,检测异常值
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']

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

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

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

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

plt.show()

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

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

使用道具 举报

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

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

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

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

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

plt.show()

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 19:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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