赞
踩
数据建模前需要了解数据基本情况,尤其是是否存在离群值,离群值需要进行处理后才能更好的拟合模型。
以下是基于python进行离群值分析自定函数开发,代码如下:
# -*- coding: utf-8 -*- from __future__ import print_function import pandas as pd from data_file_select import data_file_select from result_path_select import result_path_select import matplotlib.pyplot as plt import numpy as np def explore_box_line(variables, data_select='', path_type=0, data_path='', result_path=''): """ 异常值分析:进行连续变量箱线分析,输出箱线图及相关数据 Parameters: variables - 要分析的变量,必填,列表,举例 ['a22', 'a23'] data_select - 数据筛选,选填,公式,举例 (df.A1==1)&(df.B1==0) path_type - 文件选择类型,选填,数值,默认0 0 资源管理器选择 1 参数提供 data_path - 数据文件地址,选填,文本,默认空 当path_type=1时填写 result_path - 结果输出地址,选填,文本,默认空 当path_type=1时填写 Returns: 返回输出图片及数据文件 """ # 获取数据源目录 if path_type == 0: in_path = data_file_select() else: in_path = data_path # 数据源目录存在 if in_path != '': # 读取数据 df = pd.read_excel(in_path) if data_select != '': data = df.loc[data_select, ] else: data = df # 获取结果输出目录 if path_type == 0: out_path = result_path_select() else: out_path = result_path # 输出结果地址存在 if out_path != '': # 创建写出数据文件表头 out_data_file = out_path + '/check_data.csv' f = open(out_data_file, 'a', encoding='utf-8') f.write('' + '\n') f.write('变量,'+'均值,'+'中位数,'+'最大值,'+'最小值,'+'四分之一分位,'+'四分之三分位,'+'四分位差,'+'下限,'+'上限,'+'离群值\n') f.close() # 需要分析的字段循环 for variable in variables: # 制作箱线图 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 plt.figure(figsize=(10, 10)) # 设置图片大小 plt.boxplot(data[variable], notch=True, sym='*', patch_artist=True, boxprops={'color': '#ffff00'}, capprops={'color': '#ff3333'}, showmeans=True, meanline=True ) # 画箱线图 plt.xlabel(variable) # x轴标签 plt.ylabel("数值") # y轴标签 plt.title(variable + '箱线图') # 标题 out_png_file = out_path + "/" + variable + '箱线图.png' plt.savefig(out_png_file) # 保存箱线图 # 计算相关值 avg_value = np.mean(data[variable]) median_value = np.median(data[variable]) max_value = np.max(data[variable]) min_value = np.min(data[variable]) q1 = np.quantile(a=data[variable], q=0.25) q3 = np.quantile(a=data[variable], q=0.75) qr = q3 - q1 low_limit = q1 - 1.5 * qr up_limit = q3 + 1.5 * qr abnormal_value = data.loc[(data[variable] < low_limit) | (data[variable] > up_limit), [variable]].values.tolist() # 写出数据 out_value = [variable, avg_value, median_value, max_value, min_value, q1, q3, qr, low_limit, up_limit, abnormal_value] data_out1 = pd.DataFrame(out_value) data_out2 = pd.DataFrame(data_out1.values.T, index=data_out1.columns, columns=data_out1.index) # 转置 data_out2.to_csv(out_data_file, header=False, index=False, mode='a', encoding='utf-8') if __name__ == "__main__": explore_box_line(['a22', 'a23']) # help(explore_box_line)
执行步骤:
1.运行代码提示选择要读取的数据文件
2.选择分析结果输出的文件夹位置
3.输出结果如下
4.箱线图如下
5.分析数据如下
附件:
打开资源管理选择数据文件 # -*- coding: utf-8 -*- # 打开资源管理器获取数据文件地址 from __future__ import print_function import tkinter as tk from tkinter import filedialog def data_file_select(): """ 打开资源管理器获取数据文件地址 Returns: 返回路径 """ # 实例化资源管理器 root = tk.Tk() root.withdraw() # 获取文件路径 f_path = filedialog.askopenfilename(title='请选择数据文件') return f_path
打开资源管理器选择文件夹
# -*- coding: utf-8 -*- import tkinter as tk from tkinter import filedialog def result_path_select(): """ 打开资源管理器获取结果输出地址 Returns: 返回路径 """ # 实例化资源管理器 root = tk.Tk() root.withdraw() # 获取文件夹路径 f_path = filedialog.askdirectory(title='请选择结果输出地址') return f_path
以上就是“数据探索-离群值分析Python”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。