Python_箱型图绘制与特征值获取
它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较
如何利用Python绘制箱型图
需要的import的包
1 import matplotlib.pyplot as plt 2 from matplotlib.font_manager import FontProperties 3 import numpy as np 4 import pandas as pd
该函数是绘制多箱型图,且数据长度不一致的情况,input_dict = {filename1:[a1,a2,...,an],filename2:[b1,b2,...,bn]...} Y_label = 'Img_name'
1 def DrawMultBoxPic(input_dict,Y_label): 2 dict_list_length = [] 3 for item in input_dict: 4 temp_length = len(input_dict[item]) 5 dict_list_length.append(temp_length) 6 # 获取最长列表长度 7 max_length = max(dict_list_length) 8 # 每个列表在后面追加None 9 for item in input_dict: 10 diff_length = max_length - len(input_dict[item]) 11 if diff_length > 0: 12 for i in range(diff_length): 13 input_dict[item].append(None) 14 # else: 15 # print('{}文件列表长度最长'.format(item)) 16 # 绘制箱型图 17 zhfont = FontProperties(fname='C:/Windows/Fonts/simsun.ttc', size=16) 18 data = pd.DataFrame.from_dict(input_dict) 19 data.boxplot(widths=0.3,figsize=(30,15),fontsize=16) 20 plt.xlabel(u'煤质文件名称', fontproperties=zhfont) 21 plt.ylabel(Y_label, fontproperties=zhfont) 22 plt.title(Y_label, fontproperties=zhfont) 23 # plt.axis([0, 6, 0, 90]) 24 plt.grid(axis='y', ls='--', lw=2, color='gray', alpha=0.4) 25 plt.grid(axis='x', ls='--', lw=2, color='gray', alpha=0.4) 26 imgname = 'E:\\' + Y_label + '.png' 27 plt.savefig(imgname, bbox_inches = 'tight') 28 # plt.show()
结果显示
如何获取箱型图特征
1 """ 2 【函数说明】获取箱体图特征 3 【输入】 input_list 输入数据列表 4 【输出】 out_list:列表的特征[下限,Q1,Q2,Q3,上限] 和 Error_Point_num:异常值数量 5 【版本】 V1.0.0 6 【日期】 2019 10 16 7 """ 8 def BoxFeature(input_list): 9 # 获取箱体图特征 10 percentile = np.percentile(input_list, (25, 50, 75), interpolation='linear') 11 #以下为箱线图的五个特征值 12 Q1 = percentile[0]#上四分位数 13 Q2 = percentile[1] 14 Q3 = percentile[2]#下四分位数 15 IQR = Q3 - Q1#四分位距 16 ulim = Q3 + 1.5*IQR#上限 非异常范围内的最大值 17 llim = Q1 - 1.5*IQR#下限 非异常范围内的最小值 18 # llim = 0 if llim < 0 else llim 19 # out_list = [llim,Q1,Q2,Q3,ulim] 20 # 统计异常点个数 21 # 正常数据列表 22 right_list = [] 23 Error_Point_num = 0 24 value_total = 0 25 average_num = 0 26 for item in input_list: 27 if item < llim or item > ulim: 28 Error_Point_num += 1 29 else: 30 right_list.append(item) 31 value_total += item 32 average_num += 1 33 average_value = value_total/average_num 34 # 特征值保留一位小数 35 out_list = [average_value,min(right_list), Q1, Q2, Q3, max(right_list)] 36 # print(out_list) 37 out_list = Save1point(out_list) 38 return out_list,Error_Point_num
posted on 2019-10-22 14:07 wangxiaobei2019 阅读(4018) 评论(0) 编辑 收藏 举报