python数据分析

python数据分析(1)——数据质量分析 1, 前言 数据质量分析是数据挖掘中数据预处理的前提,主要任务是检查脏数据, 脏数据包括: 缺失值 异常值 不一致的值 重复数据或者含有特殊符号(#

本文包含相关资料包-----> 点击直达获取<-------

python数据分析(1)——数据质量分析

1. 前言

数据质量分析是数据挖掘中数据预处理的前提,主要任务是检查脏数据。

脏数据包括:

  • 缺失值
  • 异常值
  • 不一致的值
  • 重复数据或者含有特殊符号(#、*、¥)的数据

2. 缺失值

缺失值的处理分为删除存在缺失值的记录、对可能值的插补和不处理。

3. 异常值(离群点)

3.1 简单统计量分析

可以先对变量做一个描述性的统计,进而查看哪些数据是不合理的。 最常用的统计量是最大值和最小值:eg:客户年龄一般在0-150岁

3.2 正态分布分析

如果数据服从正态分布,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。

回忆一下初中的知识点,正态分布图,当时老师告诉我们,99.7%的数据都会落在平均值的偏差超过3倍标准差范围之间。

其他的0.3%就作为异常值了。

3.3 箱型图分析

箱线图(Box-plot)又称盒须图、盒式图或箱形图,是一种用作显示一组数据分散情况资料的统计图,在数据分析中经常被使用到,可以被用于异常值的检测。

3.3.1下四分位数Q1

  • 确定四分位数的位置。Qi所在位置=i(n+1)/4,其中i=1,2,3。n表示序列中包含的项数。
  • 根据位置,计算相应的四分位数。

3.3.2 中位数(第二个四分位数)Q2

中位数,即一组数由小到大排列处于中间位置的数。若序列数为偶数个,该组的中位数为中间两个数的平均数。

3.3.3 上四分位数Q3

计算方法同下四分位数。

3.3.4 上限

上限是非异常范围内的最大值。 首先要知道什么是四分位距如何计算的? 四分位距IQR=Q3-Q1,那么上限=Q3+1.5IQR

3.3.5 下限

下限是非异常范围内的最小值。 下限=Q1-1.5IQR

4. 一致性

不一致数据主要发生在数据集成的过程中,可能是由于被挖掘数据是来自于从不同的数据源、对于重复存放的数据未能进行一致性更新造成的。 例如两张存储用户电话的表只有一张更新。

5. 实例

数据

餐饮日销额数据

时间 2015/2/10 2015/2/11 2015/2/12 2015/2/13 2015/2/14
销售额(元) 2742.8 2014.3 865 3036.8

首先,我们用describe来查看数据的基本情况

python import pandas as pd dinnersale = 'dinnersale.xlsx'#数据文件地址 data=pd.read_excel(dinnersale,index_col=u'时间')#读取数据,指定索引列 describe=data.describe()#查看数据的基本情况 print(describe)

结果如下

其中count是非空值数,通过 len(data) 可以知道数据记录为多少条,这样就得到了缺省值数。

此外,提供的基本参数还有平均值(mean),标准差(std),最小值(min),1/4位数(25%),1/2位数(50%),3/4位数(75%)及最大值(max)。这样其实方便了大家使用箱型图排除异常值。

```python import pandas as pd import matplotlib.pyplot as plt dinnersale='dinnersale.xlsx' data=pd.read_excel(dinnersale,index_col=u'时间') plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False#用来正常显示负号

plt.figure() #建立图像 p=data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法

要指定返回类型否则下面下标获取不到

'fliers'即为异常值的标签

x=p['fliers'][0].get_xdata() y=p['fliers'][0].get_ydata() y.sort()#从小到大排序,该方法直接改变原对象

annotate添加注释

第一个参数是注释的内容

xy设置箭头尖的坐标

xytext设置注释内容显示的起始位置

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()#展示箱线图 ```

图片如下,异常值就是上下限外的(还需要结合实际情况)

Tips:

  • 安装matplotlib包

python -m pip install -U matplotlib

  • 数据质量分析很重要,记得老师说过数据70%在于前期的处理

参考文献

  • 基于网络爬虫的计量数据分析系统开发(吉林大学·邹思宇)
  • 数据挖掘在烟草行业质量管理中的应用(武汉理工大学·陶永峰)
  • 股票数据库管理系统的设计与实现(电子科技大学·卢火)
  • 基于数据挖掘的学生数据剖析系统研究(哈尔滨师范大学·李晓楠)
  • CLARANS改进算法在音乐网站智能推荐系统中的应用(吉林大学·魏佳)
  • 基于网络爬虫的计量数据分析系统开发(吉林大学·邹思宇)
  • 网络流量统计分析系统(吉林大学·石景龙)
  • 生物农药智能推荐系统的设计与实现(电子科技大学·彭亚飞)
  • 一个数据需求管理系统的设计与实现(华中科技大学·陈志)
  • 股票交易系统的设计与实现(吉林大学·王文卓)
  • 制造业数据交互式分析平台的设计与实现(西安电子科技大学·杨妍)
  • 基于Web使用挖掘的在线报名推荐系统的研究与实现(电子科技大学·王玥)
  • 基于商品名称的电商平台商品自动分类的研究与实现(西南交通大学·黄超)
  • 基于数据挖掘的用户上网行为分析(中央民族大学·丰玄霜)
  • 基于网络爬虫的论坛数据分析系统的设计与实现(华中科技大学·黎曦)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设港湾 ,原文地址:https://bishedaima.com/yuanma/35375.html

相关推荐

发表回复

登录后才能评论