当前位置:   article > 正文

数据探索-离群值分析Python_python离群值处理代码

python离群值处理代码

数据建模前需要了解数据基本情况,尤其是是否存在离群值,离群值需要进行处理后才能更好的拟合模型。

以下是基于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
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84

执行步骤:

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

打开资源管理器选择文件夹

# -*- 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
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

以上就是“数据探索-离群值分析Python”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/301888
推荐阅读
相关标签
  

闽ICP备14008679号