当我们得到数据后,接下来就是要考虑样本数据集的数据和质量是否满足建模的要求?是否出现不想要的数据?能不能直接看出一些规律或趋势?每个因素之间的关系是什么?

  通过检验数据集的数据质量,绘制图表,计算某些特征值等手段,对样本数据集的结构和规律进行分析的过程就是数据探索。数据质量检测对后面的数据预处理有很大参考作用,并有助于选择合适的建模方法。

  数据探索大致分为 质量探索 和 特征探索 两方面。

数据质量分析

   定义:数据质量分析是数据预处理的前提,也是对数据挖掘的结果有效性和准确性的保证,只有拥有可信的数据,才能够构建准确的模型。

  主要任务: 检测是否存在脏数据(不符合要求与不能方便地进行分析的数据)。包括缺失的数据,异常的数据,不一致的数据,以及含有其他不标准符号以及重复的数据。

1.缺失值分析

  数据的缺失主要包括 记录的缺失 和 记录中某个字段的缺失 。他们都会造成分析结果的不准确。

  产生原因是一些信息无法获取或者在收集获取的时候出现了遗漏或者设计的时候的一些值在获取的时候并没有。

  数据缺失会丢失大量有用信息,或者造成建模混乱,得到的模型不准确,规律难以得到。

  使用简单的统计分析,可以得到含有缺失值的属性的个数,以及缺失数,缺失率等。

2.异常值分析

  异常值分析是检验数据是否有录入错误以及含有不合常理的数据。通过检测数据是否有异常,发现问题并而找到改进的策略。

  异常值是指样本中的个别值,数值明显偏离其余的观测值,故又叫离群值。

  分析步骤:

  (1)简单统计量分析

  首先可以通过一些常见的检测值对变量做一个探索,查看哪些数据是不合情理的。比如用最大值和最小值,和实际的的现实意义联系判断变量取值是否合理。



  (2)正态分布原则

  正态分布原则就是异常值被定义为一组测试值中与平均值的偏差超过三倍标准差的值。

  (3)箱型图分析

  箱型图提供的一个识别异常值的一个标准,异常值通常被定义为小于Ql - 1.5IQR或大于Qu + 1.5IQR的值。Ql称为下四分位数,表示样本值中有四分之一

比它小;Qu成为上四分位数,表示样本值中有四分之一比它大;IQR是四分位数间距,是QI和Qu的差,包括全部样本的一半。

  实例:

  这里我们首先先爬取华为手机日销量数据,如下:



  我们规定商品的价格的平均值前后一定范围价格为正常值,来分析所有商品的价格情况。

  但是有些数据是缺失的,而且数据多的时候人工识别不出,可以用程序

检测含有缺失值的记录和属性以及个数,来求缺失率。

  数据的基本情况:

  这里可以看到数据一共有147939条,还可以得到平均值(mean),标准差(std),最小值(min),最大值(max)以及四分位数等。

  下面可以用箱型图检测异常值。

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 data = '淘宝天猫.csv'
this_price = pd.read_csv(data,usecols = ['价格'],encoding = 'utf-8') plt.figure() # 建立图像
p = this_price.boxplot(return_type='dict')
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
y.sort() # 用annotate添加注释
for i in range(len(x)):
if i > 0:
plt.annotate(y[i],xy = (x[i],y[i]), xytext = (x[i] + 0.05 - 0.8 / (y[i] - y[i - 1]),y[i]))
else:
plt.annotate(y[i],xy = (x[i],y[i]), xytext = (x[i] + 0.08,y[i])) plt.show()

  之前未处理的图片

  处理后的图片

可以根据不同的需求进行调节,然后按照不同规则进行选取和分析数据。

3.一致性分析

  数据不一致是指数据的矛盾性,不相容性,可能有不同表之间的联系,然后改变了其他表但并未改变与之相连的表。

python数据挖掘之数据探索第一篇的更多相关文章

  1. Python机器学习之数据探索可视化库yellowbrick

    # 背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plot ...

  2. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  3. Python机器学习之数据探索可视化库yellowbrick-tutorial

    背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plotly ...

  4. Python 项目实践二(生成数据)第一篇

    上面那个小游戏教程写不下去了,以后再写吧,今天学点新东西,了解的越多,发现python越强大啊! 数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关,而数据挖掘指的是使用代码来探索数据集的 ...

  5. python成长之路【第一篇】:python简介和入门

    一.Python简介 Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言. 二.安装python windows: 1.下载安装包 https://www.pyt ...

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. Python之路PythonNet,第一篇,网络1

    pythonnet   网络1 ARPAnet(互联网雏形)--->  民用 ISO(国际标准化组织)--->网络体系结构标准 OSI模型 OSI : 网络信息传输比较复杂需要很多功能协同 ...

  8. HTTP/2探索第一篇——概念

    版权声明:本文由张浩然原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/87 来源:腾云阁 https://www.qclou ...

  9. python打怪之路【第一篇】:99乘法表

    需求:实现99乘法表 代码: #!/usr/bin/env python # -*- coding:utf-8 -*- #author chenjing for i in range(10): for ...

随机推荐

  1. 2019年最新阿里Java工程师面试题

    一.单选题(共10题,每题5分) 1 关于设计模式遵循的原则,说法错误的是?   A.组合优于继承 B.针对实现编程 C.对扩展开放,对修改关闭 D.降低对象之间的耦合 参考答案:B 答案解析: 设计 ...

  2. table-layout:fixed

    table-layout: fixed; 在table上设置上面属性后,如果不设置td的宽度,那么所有td的宽度平分总table宽度.如果设置了td的宽度,则以设置的宽度为准. table-layou ...

  3. [Vue warn]: Invalid prop: type check failed for prop "fullscreen"

    fullscreen属性是Dialog弹窗中定义是否为全屏 Dialog的属性,element 官方文档中默认值是false ,于是加入是对其赋值 true,然后报了下面的错误: 解决办法:实际上并不 ...

  4. docker采用Dockerfile安装jdk1.8案例

    1 获取一个简单的Docker系统镜像,并建立一个容器. 这里我选择下载CentOS镜像 docker pull centos 通过docker tag命令将下载的CentOS镜像名称换成centos ...

  5. 并发编程-多线程,GIL锁

    本章内容: 1.什么是GIL 2.GIL带来的问题 3.为什么需要GIL 4.关于GIL的性能讨论 5.自定义的线程互斥锁与GIL的区别 6.线程池与进程池 7.同步异步,阻塞非阻塞 一.什么是GIL ...

  6. Linux下使用 github+hexo 搭建个人博客01-hexo搭建

    为什么要搭建自己的博客系统? 原因有好几个吧,归类如下:1.自己搭建博客系统很有成就感,可以自己选定页面风格和页面排版: 2.自己搭建博客系统可以根据自己的需要添加各种插件功能,因此整体上比网上的第三 ...

  7. Java中如何判断一个字符是否是字母或数字

    使用Java中Character类的静态方法: Character.isDigit(char c) //判断字符c是否是数字字符,如‘1’,‘2’,是则返回true,否则返回false   Chara ...

  8. Android项目模块化/组件化开发(非原创)

    文章大纲 一.项目模块化初步介绍二.项目模块化的两种模式与比较三.大型项目模块化的演进四.项目模块化总结五.参考文章   一.项目模块化初步介绍 1. 前言 在Android开发中,随着项目的不断扩展 ...

  9. Linux:nginx服务器的搭建

    搭建nginx网站服务器 安装nginx yum install nginx 启动服务 安装完成后启动服务 systemctl start nginx 通过浏览器测试 地址栏输入localhost 不 ...

  10. deepin系统右键刷新-解决增删改文件没有变化

    deepin 新建/删除/修改-->文件/文件夹后 目录不刷新解决方案 方法1: F5键刷新 方法2: 通过修改配置文件-->调整最大文件监控数量(建议使用这种方式) sudo vim / ...