博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[统计学笔记三] 整理和显示数据
阅读量:4041 次
发布时间:2019-05-24

本文共 4900 字,大约阅读时间需要 16 分钟。

[统计学笔记三] 整理和显示数据


数据的预处理

数据的预处理是在对数据分类或分组之前所做的必要处理,内容包括:数据的审核、筛选、排序等。

数据审核:就是检查数据中是否存在错误。包括:完整性审核和正确性审核。

数据筛选:根据需要找出符合特定条件的某类数据。

数据排序:按一定的顺序将数据排列,以便于研究者通过浏览数据发现一些明显的特征或趋势,找到解决问题的线索。

大家都比较熟悉的Excel可以帮助实现上述功能。在工作中,Excel可能算得上是最常用的数据预处理工具了。

行业数据挖掘标准过程(CRISP-DM)—目前数据挖掘模型开发的标准过程。这个过程指出了数据挖掘过程的第一阶段为业务理解,或称为研究理解,其中企业和研究人员首先阐明项目目标,然后将这些目标转化为数据挖掘的问题定义,最后为完成这些目标制定初步策略。数据挖掘工作的展开,对于数据需要经过预处理,包括数据清理和数据变换两种形式。

为什么需要对数据进行清理呢?

因为各种来源收集的数据,可能存在如下的问题:

  • 过时或冗余数据
  • 缺失值
  • 离群值
  • 其它形式不适合数据挖掘模型的数据
  • 与策略或常识不一致的数据
  • 等等

所以需要对将要进行数据分析和数据挖掘的数据进行预处理。


数据可视化表示的常用图


图例说明

可以使用Python,或者直接使用 工具Anaconda方便的制作各种统计图。

我喜欢的工具是:Anaconda。它已经自带了以下库:Numpy,Scipy,Maplotlib,Pandas和Scikit-Learn。

Anaconda 的下载地址:

下面的图例就是通过Anaconda制作的,当然开发语言是使用Python。

 

Python数据挖掘相关扩展库

Python数据挖掘相关扩展库
扩展库

简介

Numpy 提供数组支持,以及相应的高效的处理函数
Scipy 提供矩阵支持,以及矩阵相关的数值计算模块
Matplotlib 强大的数据可视化工具、作图库
Pandas 强大、灵活的数据分析和探索工具
StatsModels 统计建模和计量经济学,包括描述统计、统计模型估计和推断
Scikit-Learn 支持回归、分类、聚类等的强大的机器学习库
Keras 深度学习库,用于建立神经网络以及深度学习模型
Gensim 用来做文本主题模型的库,文本挖掘可能用到

 


数据特征分析

对数据进行质量分析以后,接下来可以通过绘制图表、计算某些特征量等手段进行数据的特征分析。


茎叶图

茎叶图的思路是将数组中的数按位数进行比较,将数的大小基本不变或变化不大的位作为一个主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面,这样就可以清楚地看到每个主干后面的几个数,每个数具体是多少。

 

与直方图的比较编辑

茎叶图是一个与直方图相类似的特殊工具,但又与直方图不同,茎叶图保留原始资料的资讯,直方图则失去原始资料的讯息。将茎叶图茎和叶逆时针方向旋转90度,实际上就是一个直方图,可以从中统计出次数,计算出各数据段的频率或百分比。从而可以看出分布是否与正态分布或单峰偏态分布逼近。

茎叶图在质量管理上用途与直方图差不多,但它通常是作为更细致的分析阶段使用。由于它是用数字组成直方图,所以在做的时候比直方图时,通常我们常使用专业的软件进行绘制。

优点
(1)从统计图上没有原始数据信息的损失,所有数据信息都可以从茎叶图中得到;
(2)茎叶图中的数据可以随时记录,随时添加,方便记录与表示。

缺点

茎叶图只便于表示个位之前相差不大的数据,而且茎叶图只方便记录两组的数据。两个以上的数据虽然能够记录,但是没有表示两个记录那么直观、清晰。


合理使用图表

一个精心设计的图形是展示数据的有效工具。

一张好的图表应具有以下基本特征:

(1)显示数据

(2)让看图的人把注意力集中在图形的内容上,而不是制作图形的程序上。

(3)避免歪曲

(4)强调数据之间的比较

(5)服务于一个明确的目标

(6)有对图形的统计描述和文字说明


用Python绘制简单的数据图例子

散点图

import numpy as npN=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)x=np.random.randn(N)y=np.random.randn(N)plt.scatter(x,y,s=50,c='r',marker='o',alpha=0.5)plt.show()

 

 

x = range(20) y = x + np.random.randn(20)*1.05  plt.figure(figsize=(10,8)) #plt.scatter(x,y)plt.plot(x,y,'*') plt.plot(x,x) plt.title('x VS y') plt.xlabel('X') plt.ylabel('Y') plt.legend(('real data','fitted line')) plt.show()

条形图

N=5y=[20,10,30,25,15]y1=np.random.randint(10,50,5)x=np.random.randint(10,1000,N)index=np.arange(N)plt.bar(x=index,height=y,color='red',width=0.3)plt.bar(x=index+0.3,height=y1,color='black',width=0.3)plt.show()

 

条形图样例二

N=5y=[20,10,30,25,15]y1=np.random.randint(10,50,5)x=np.random.randint(10,1000,N)index=np.arange(N)#plt.bar(x=index,height=y,color='red',width=0.3)#plt.bar(x=index+0.3,height=y1,color='black',width=0.3)#plt.barh() 加了h就是横向的条形图,不用设置orientationplt.bar(x=0,bottom=index,width=y,color='red',height=0.5,orientation='horizontal')plt.show()

直方图

m1=100sigma=20x=m1+sigma*np.random.randn(2000)plt.hist(x,bins=50,color="green",normed=True)plt.show()

plt.figure(figsize=(10,8)) plt.hist(y1) plt.title('Weight change in 15 months')plt.xlabel('Weight(kg)') plt.ylabel('frequency') plt.show()

 

plt.figure(figsize=(10,8)) gaussian_numbers = np.random.randn(1000) plt.hist(gaussian_numbers, 30 ,color = 'navy',alpha = 0.5) plt.title('Gaussian Histogram') plt.xlabel('value') plt.ylabel('frequency') plt.show()

 

#双变量的直方图#颜色越深频率越高#研究双变量的联合分布x=np.random.rand(1000)+2y=np.random.rand(1000)+3plt.hist2d(x,y,bins=40)plt.show()

 

饼形图

labes=['A','B','C','D']fracs=[15,30,45,10]explode=[0,0.1,0.05,0]#设置x,y轴比例为1:1,从而达到一个正的圆plt.axes(aspect=1)#labels标签参数,x是对应的数据列表,autopct显示每一个区域占的比例,explode突出显示某一块,shadow阴影plt.pie(x=fracs,labels=labes,autopct="%.0f%%",explode=explode,shadow=True)plt.show()

箱线图样例

import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 点的形状,whis虚线的长度plt.boxplot(data,sym="o",whis=1.5)plt.show()

 

plt.figure(figsize=(10,5)) plt.boxplot([y1,y2]) plt.xticks([1,2],['A','B'])plt.xlabel('Different objects')plt.show()

误差线图

import pandas as pdimport numpy as npimport matplotlib.pylab as plterror=np.random.randn(10)y=pd.Series(np.sin(np.arange(10)))y.plot(yerr=error)plt.show()

折线图

x=np.linspace(-10000,10000,100) #将-10到10等区间分成100份y=x**2+x**3+x**7plt.plot(x,y)plt.show()

 

线形图

 

import matplotlib.pyplot as plt import numpy as np import seaborn as sns import warnings warnings.filterwarnings("ignore") x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] y = [102,134,154,122,143,243,355,342,276,299,241,287,260,231,100] plt.figure(figsize=(10,5)) plt.plot(x,y) plt.title('Weight change in 15 months') plt.xlabel('Month') plt.ylabel('kg') plt.show()

import matplotlib.pyplot as plt import numpy as np import seaborn as sns import warnings warnings.filterwarnings("ignore")y1 = [102,134,154,122,143,243,355,342,276,299,241,287,260,231,100] y2 = [244,250,245,256,234,241,230,267,266,255,248,239,233,221,227]  plt.figure(figsize=(10,5)) plt.plot(x,y1,label = 'A') plt.plot(x,y2,label = 'B') plt.title('Weight change in 15 months') plt.xlabel('Month') plt.ylabel('kg') plt.legend(fontsize = 10) plt.show()

 

 


附:CRISP-DM 资源

CRISP-DM方法论(跨行业数据挖掘标准流程、Cross-Industry Standard Process for Data Mining) 

链接:

 

转载地址:http://hsvdi.baihongyu.com/

你可能感兴趣的文章
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex中设置Label标签文字的自动换行
查看>>
Flex 中的元数据标签
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-13. if分支语句的灵活使用
查看>>
01Java基础语法-15.for循环结构
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-17. do..while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>