数据分析(4)

本文详细介绍数据质量分析方法,包括缺失值、异常值的处理及利用箱型图进行异常值检测。并通过实例展示了如何进行数据特征分析,涵盖分布分析、对比分析、统计量分析等多种分析手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据质量分析:

主要针对缺失值、异常值、不一致的值、重复数据以及含有特殊符号

异常值的查明箱型图统计

利用箱型图对数据异常值进行查明

import os
path=os.path.abspath('.')#当前所处文件夹的绝对路径
import pandas as pd
catering_sale = './data/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale)
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的方法,p为字典类型,其中键值为'fliers'的元素储存有异常值的信息
x=p['fliers'][0].get_xdata()#fliers为异常值的标签,[0]为销量的异常值
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() #展示箱线图
数据特征分析:

1分布分析

1.1定量数据分析(利用频率分布直方图)

步骤:(1)求极差;(2)决定组距与组数;(3)决定分点;(4)列出频率分布表;(5)绘制频率分布直方图

1.2定性数据分析(饼图或条形图)

主要是各对象的分类

2对比分析

2.1绝对数比较

绝对数比较是利用绝对数进行对比,从而寻找差异的方法

2.2相对数比较

分类:

(1)结构相对数:即同一总体内部的部分数值与全部数值对比求比重,如支出额占消费支出总额比重

(2)比例相对数:将同一总体内部不同部分的数值进行对比,如投资与消费比例

(3)比较相对数:将同一时期两个性质相同的指数进行对比

(4)强度相对数:将性质不同但有一定联系的总量指标进行对比,如人口密度

(5)计划完成程度相对数:某一时期实际完成数与计划完成数的对比

(6)动态相对数:将同一现象在不同时期的指数数值进行对比,如发展速度

3统计量分析

3.1集中趋势度量

均值,中位数,众数(数据集中出现最频繁的值)

3.2离中趋势度量

极差(最大值-最小值),标准差(多个数据集与平均值的差的累加的和,再求平均数),

变异系数CV(标准差/平均值)

四分位数间距(上四分位数与下四分位数的差)

4周期性分析

5贡献性分析

例子:对于一个公司来讲,80%的利润常来自于20%最畅销的产品,而其他80%产品则产生了20%的利润

菜单盈利帕累托图

import pandas as pd 

dish_profit='./data/catering_dish_profit.xls'
data=pd.read_excel(dish_profit,index_col=u'菜品名')
data=data[u'盈利'].copy()#这里创建副本,是想保持原本数据的结构
data.sort_values(ascending=False)

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

plt.figure()
data.plot(kind='bar')#画柱状图
plt.ylabel(u'盈利(元)')#标记Y轴
p = 1.0*data.cumsum()/data.sum()#.cumsum()为累加函数
p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)#画线性图
#标注
plt.annotate(format(p[6], '.4%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) #添加注释,即85%处的标记。这里包括了指定箭头样式。
plt.ylabel(u'盈利(比例)')
plt.show()

6相关性分析

6.1绘制散点图

6.2计算相关系数

(1)Pearson相关系数(用于分析两连续变量间的关系)


(2)Spearman秩相关系数(分类或等级变量间,非线性情况下使用)


餐饮数据相关性分析

import pandas as pd

catering_sale='./data/catering_sale_all.xls'#餐饮数据,含有其他属性
data=pd.read_excel(catering_sale,index_col=u'日期') #读取数据,指定“日期”列为索引列

data.corr()#相关系数矩阵,即给出了任意两款菜式之间的相关系数
corr_analy=data.corr()[u'生炒菜心'] #只显示'生炒菜心'与其他菜式的相关系数
data[u'生炒菜心'].corr(data[u'乐膳真味鸡'])
print(corr_analy.sort_values(ascending=False)[:3])

统计函数:

1统计作图函数:

在作图前,先创建原始图:


底图有了以后,则通过plot(kind="作图类型")、pie()、hist()、boxplot()等作图,如:

plt.plot(x,y,S)....plt.hist()....plt.pie()
#绘制y对于x,S定义绘制图形的类型
D.plot(kind=box)
#Series与DataFrame内置函数,没指定kind则默认线性图






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值