欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kaggle爬梯之路

程序员文章站 2022-05-18 10:01:20
...

一 数据质量分析

脏数据:不符合要求,不能进行分析的数据

  1. 缺失值
  2. 异常值
  3. 不一致的值
  4. 重复的数据
  5. 含有特殊符号的数据(&×%¥)

数据缺失值分析

  • 删除
  • 可能值进行插补
  • 不处理

> 异常值分析的三种方法

简单的统计量的分析

数据应该有实际意义,手工去除不符合实际的数据

3σ原则

异常值:一组测定值中与平均值的偏差超过3倍标准差的值
排除P(|x-u|>3σ)<= 0.003的值

箱形图分析

第一四分位数(Q1),又称“较小四分位数”或“下四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。

第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。

第三四分位数(Q3),又称“较大四分位数”或“上四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

第三四分位数与第一四分位数的差距又称四分位间距(InterQuartile Range,IQR)。

Kaggle爬梯之路

#pandas 用describe()函数查看数据基本情况
import pandas as pd

catering_sale = 'Data/catering_sale.xls'

data = pd.read_excel(catering_sale,index_col= u'日期')#指定‘日期’为索引列

data.describe()

print(data.describe())
#输出最大值 最小值等信息
     销量

count 200.000000
mean 2755.214700
std 751.029772
min 22.000000
25% 2451.975000
50% 2655.850000
75% 3026.125000
max 9106.440000

有min max mean(平均值) std(标准差) 1/4 分位数

#箱式模型分析数据
import pandas as pd

catering_sale = 'Data/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列

import matplotlib.pyplot as plt #导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

plt.figure() #建立图像
p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()#[0]用来标注第一个异常值数值
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() #展示箱线图



Kaggle爬梯之路

  • 异常值个数为1
  • 结合实际 865 4065 4060 归为正常值
  • 60 22 51 6670 9106归为异常值

annotate注释详解

#!/usr/bin/python
# coding: utf-8

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10, 11, 1)
y = x * x

plt.plot(x, y)

# 添加注释
# 第一个参数是注释的内容
# xy设置箭头尖的坐标
# xytext设置注释内容显示的起始位置
# arrowprops 用来设置箭头
# facecolor 设置箭头的颜色
# headlength 箭头的头的长度
# headwidth 箭头的宽度
# width 箭身的宽度
plt.annotate(u"here is note", xy=(0, 1), xytext=(0, 50), \
             arrowprops=dict(facecolor="b", headlength=15, headwidth=30, width=20))
# 可以通过设置xy和xytext中坐标的值来设置箭身是否倾斜

plt.show()

Kaggle爬梯之路

相关标签: kaggle