Python数据分析与挖掘第三章数据探索学习笔记

一、数据质量分析:

**意义:**数据质量分析是数据准备过程中重要的一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础。

**主要任务:**检查原始数据中是否存在脏数据。

**脏数据:**一般指不符合要求以及直接进行相应分析的数据;包括缺失值、异常值、不一致的值、重复数据及含特殊符号(¥、#、*)的数据。

1.1缺失值分析:

产生原因:

  1. 有些信息暂时获取不了,或获取代价太大。
  2. 有些信息被遗漏。(可能输入时认为该信息不重要、忘记填写或对该信息理解错误等人为因素;或由于数据采集设备故障、存储介质故障、传输媒体故障等非人为原因而丢失。)
  3. 某些属性值不存在。(如未婚者的配偶名字,儿童的固定收入)

影响:

1、数据挖掘建模将丢失大量有用的信息。

2、数据挖掘模型所表现出的不确定性更加显著、模型中蕴含的规律更难把握。

3、包含空值的数据会使建模过程陷入混乱,导致不可靠的输出。

如何分析:

分两个方面:

1、通过简单的统计分析,得到含有缺失值的属性个数以及每个属性的未缺失数、缺失数与缺失率等。

2、对缺失值进行处理,主要有:删除存在缺失值的记录、对可能值进行插补和不处理。

1.2异常值分析(离群点分析):

**目的:**异常值分析是检验数据是否录入错误,是否有不合常理的数据,分析其出现的原因。

**异常值(离群点):**样本中的个别值,其数值明显偏离其他的观测值。

异常值分析的方法:

1、简单统计量分析:在进行异常值分析时,可以先对变量做一个描述性分析,进而查看那些数据不合理。最常用的统计量为最大值、最小值,如客户的年龄最大值为199岁,若年龄超过199岁的客户信息存在异常

2、3σ原则:数据服从正态分布,则在3σ原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。
P ( ∣ x − μ ∣ > 3 σ ) ≦ 0.003 , 属 于 极 个 别 的 小 概 率 事 件 P(|x-μ|>3σ)≦0.003,属于极个别的小概率事件 P(xμ>3σ)0.003,
3、箱型图分析:

箱型图识别异常值的标准:>上四分位+1.5IQR || <下四分位-1.5IQR(四分位数间距)

IQR=上四分位-下四分位

#用describe()方法查看数据的基本情况
import pandas as pd
catering_sale = '../data/catering_sale.xls'
data = pd.read_excel(catering_sale,index_col = "日期")
print(data.describe())

#画出箱型图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']          #用来正常显示中文标签
plt.reParams['axes.unicode_minus'] = False            #用来正常显示符号
plt.figure()
#选择箱型图
p = data.boxplot(return_type="dict")
#代入数据,y按大小排序
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()
y.sort()
#用annoate添加注释
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]))   #(显示y[i]值,标记显示值y[i]所在的位置,显示的文字所在处)
    else:
        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))
plt.show() 

4、一致性分析:

数据不一致性是指数据的矛盾性、不相容性。如两张表都存储了用户的电话号码,但在用户的电话号码改变时只更新了一张表的数据,那么这两张表中就有了不一致的数据。

二、数据特征分析:

一、分布分析

1、分布分析能揭示数据的分布特征和分布类型,能了解数据的分布情况(对称、不对称、发现某些特大或特小的可疑值等)

2、定量数据一般以频率分布图、频率分布直方图、茎叶图进行直观展示;(看数量)

3、定性数据一般以饼图、条形图展示(看类别占比)

4、以频率直方图为例,定量数据的分析步骤:1求极差;2决定组距和组数;3决定分点;4列出频率分布表;5绘制频率直方图;

​ 遵循原则:1各组之间必须相互排斥;2各组必须将所有数据包含在内;3各组的组宽最好相等;

二、对比分析

1、方法:

​ 1绝对数比较

​ 2相对数比较

​ 结构相对数:将同一总体内的部分数值与全部数值进行对比求比重,用以说明事物的性质、结构或质量如产品合格率

​ 比例相对数:将同一总体内的不同部分的数值进行对比,表明总体内各部分的比例关系,如人口性别比例

​ 比较相对数:将同一时期两个性质相同的指标数值进行对比,说明同类现象在不同空间条件下的数量对比关系,如不同地区的商品价 格对比

​ 强度相对数:将两个性质不同但有一定联系的总量指标进行对比,用以说明现象的强度、密度和普遍程度,如人均国内生产总值

​ 计划完成程度相对数:将某一时期实际完成数与计划数进行对比,用以说明计划完成程度

​ 动态相对数:将同一现象不同时期的指标数值进行对比,用以说明发展方向和变化速度,如发展速度、增长速度等。

三、统计量分析

1、集中趋势度量

(1)均值,mean

(2)众数

(3)中位数

2、离中趋势度量

(1)极差

(2)标准差

(3)变异系数

(4)四分位间距

3、贡献度分析(帕累托分析)

4、相关性分析(散点图、散点矩阵图、计算相关系数)

三、Python主要数据探索函数:

一、基本统计特征函数(data可以是DataFrame或Series对象)

方法名 函数功能 用法
sum() 计算数据样本的总和(按列) data.sum()
mean() 计算数据样本的算术平均数 data.mean()
var() 计算样本数据的方差 data.var()
std() 计算样本数据的标准差 data.std()
corr() 计算数据样本的Sperman(Pearson)相关系数矩阵 data.corr()
cov() 计算数据样本的协方差矩阵 data.cov()
skew() 样本值的偏度(三阶矩) data.skew()
kurt() 样本值的峰度(四阶矩) data.kurt()
describe() 给出样本的基本描述(均值、标准差、四分位、中位数) data.describe()

二、拓展统计特征函数

1累积计算统计特征函数(data可以是DataFrame或Series对象)

方法名 函数功能 用法
cumsum() 依次给出前1,2,……,n个数的和 data.cumsum()
cumprod() 依次给出前1,2,……,n个数的积 data.cumprod()
cummax() 依次给出前1,2,……,n个数的最大值 data.cummax()
cummin() 依次给出前1,2,……,n个数的最小值 data.cummin()

2滚动计算统计特征函数(import pandas as pd)

方法名 函数功能 用法
rolling(n).sum() 计算数据样本的总和(按列) data.rolling(2).sum()
rolling_mean() 计算数据样本的算术平均数 data.rolling().mean()
rolling_var() 计算数据样本的方差 data.rolling().var()
rolling_std() 计算样本数据的标准差 data.rolling().std()
rolling_corr() 计算数据样本的Sperman(Pearson)相关系数矩阵 data.rolling().corr()
rolling_cov() 计算数据样本的协方差矩阵 data.rolling().cov()
rolling_skew() 样本值的偏度(三阶矩) data.rolling().skew()
rolling_kurt() 样本值的峰度(四阶矩) data.rolling().kurt()

三、统计绘图函数(import matplotlib.pyplot as plt)

函数名 函数功能 用法
plot() 绘制线性二维图、折线图 plt.plot(x,y,s)#s为图形样式、颜色、符号如plt.plot(x,y,‘bp–’) data.plot(kind=‘box’)#line、bar、hist、barh、box、kde、area、pie
pie() 绘制饼图 plt.pie(size,explode=,labels=,colors=,autopct=,shadow=,startangle=)#size为列表,记录各个扇形的面积比例,colors颜色,explode为数组突出那些模块,autopct是数据的形式,shadow阴影
hist() 绘制二维条形直方图,可显示数据的分配情形 plt.hist(x,y)
boxplot() 绘制样本数据的箱型图 plt.boxplot()
plot(logy=True) 绘制y轴的对数图形 data.plot(logy=True)/data.plot(logx=True)
plot(yerr=error) 绘制误差条形图 data.plot(yerr=error)
#数据探索函数使用
# %%
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt 

data = pd.DataFrame(data = np.random.randint(0,100,size=(8,4)),columns=['A','B','C','D'])

#查看数据基本描述
data.describe()


# %%
data.sum()

# %%
data.mean()

# %%
data.var()

# %%
data.corr()

# %%
data.cov()

# %%
#偏度
data.skew()

# %%
data.kurt()#峰度

# %%
data.cumsum()

# %%
data.rolling(2).sum()

# %%
data.cumprod()

# %%
data.cummax()

# %%
data.cummin()

# %%
data.rolling(2).mean()

# %%
print(data.rolling(8).std())
print(data.std())

# %%
#正弦曲线图
x = np.linspace(0,2*np.pi,50)
y = np.sin(x)
plt.plot(x,y,'g--')
plt.show()

# %%
#饼图
labels = ['A','B','C','D']
sizes = [30,40,25,5]
colors = ['yellowgreen','gold','lightskyblue','lightcoral']
explode = (0.2,0.1,0,0)
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=90)
plt.axis('equal')#显示为圆
plt.show()


# %%
#直方图
x = np.random.randn(1000)#一千个服从正态分布的随机数
plt.hist(x,10)#十组
plt.show()

# %%
#箱型图
x = np.random.randn(1000)
data = pd.DataFrame([x,x+1]).T#构造两列的DataFrame
data.plot(kind='box')
plt.show()

# %%
#箱型图
x = np.random.randn(1000)
data = pd.DataFrame([x,x+1]).T#构造两列的DataFrame
data.boxplot()

# %%
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = pd.Series(np.exp(np.arange(20)))
plt.figure(figsize = (8, 9))  # 设置画布大小 
ax1 = plt.subplot(2, 1, 1)
x.plot(label = '原始数据图', legend = True)
ax1 = plt.subplot(2, 1, 2)
x.plot(logy = True, label = '对数数据图', legend = True)
plt.show()

# %%
error = np.random.randn(10)  # 定义误差列
y = pd.Series(np.sin(np.arange(10)))  # 均值数据列
y.plot(yerr = error)  # 绘制误差图
plt.show()

关于Python个人常犯问题的解决

#Python更新pip失败后会导致pip丢失,解决方法:
python -m ensurepip

#-----------------------------------------#
#更新pip最好用这行代码
python -m pip install --upgrade pip

#-------------------------------------------------------#
#镜像下载资源
pip3 install keras -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com/pypi/simple/

#--------------------------------------------------------------#
#程序打包的命令
pyinstaller -F -w X:\XXX\XXX.py

你可能感兴趣的:(数据挖掘,python,学习,数据分析)