|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
你的代码有几个问题。首先,箱型图应该使用`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`函数来检查数据中是否有无穷大的值。
|
|