数据分析入门导读


  数据分析和挖掘是一个最近几年很热的话题,而且随着企业数据化进程的加快,各种数据分析人员的需求也在日益剧增。本栏就关于数据分析的学习做一个笔记,作为自己后续复习的资料,同时也希望能为刚入门的“道友”提供一点点帮助。

  数据分析有很多的工具,或者说是语言,根据各自的需求选择不同的工具,简单的、数据量不大的甚至使用excel都可以完成相应的分析,而要是考虑数据安全和各种更加高深的分析,SAS是必然是不二的选择,但是,它是收费的,而且相当的昂贵(当然贵的东西最大的缺点就是贵,功能完胜其他),所以,结合实际,我们选择居中的Python作为分析工具,其优点是免费、高效(相对而言)、能完成几乎所有的分析,对于分析一般的公司需求,绰绰有余。

一、Python 简介

1、Python

  Python是Guido van Rossum于1989年开发的一个编程语言。它是一种面向对象的解释型高级编程语言,其结构简单、语法和代码定义清晰明确、易于学习和维护、可移植性和可扩展性非常强。python提供了非常完善的基础代码库(内置库),覆盖了数据结构、语句、函数、类、网络、文件、GUI、数据库、文本处理等大量内容。用python进行数据分析和功能开发,许多功能可由现成的包(packages)或模块(modules)直接实现,极大的提升了效率。
  除了内置库外,python还有大量的第三方库,如numpy、scipy、matplotlib、pandas、statsmodels、sklearn等主要用于数据分析的库,提供了向量、矩阵和数据表的操作、可视化、统计计算、统计推断、统计分析与建模、数据挖掘和机器学习、深度学习等几乎全部数据分析的功能。

  Python可应用于多系统平台,如Linux、macOS、Windows等,用户可以直接在其官网:https://www.python.org,下载最新版本的python。用户也可以下载其他发行版本的python进行使用,如anoconda、enthought canopy等,这些发行版本的python已经包含一些特定的分析库,用户可以直接在它们提供的环境中使用。

  笔者这里建议使用anoconda,好处在于它集成,基本不需要考虑其他的环境问题,而且关于编译环境也有Jupyter Notebook和Spyder可以选择,前者对初学者很友好,代码可以看成是基于句的,后者可以看成是升级,基于段(函数、类等),当然也可以使用更加好的Pycharm,这里的好是个模糊的概念,读者自行把握。我是两个都在用,根据不同的需求选择不一样的环境。

2、常用的数据分析包

  前文已经讲了,python的分析,都是基于各种库(也叫包)实现的,而这些库又分为内置库和第三方库,这里就对数据分析中必须的几个库进行讲解。

1.Python的数据结构

  python作为一个语言,和其他语言一样,都有自己的数据结构,介绍如下:

  • 数字(number):用于存储数值,分整数、单精度、双精度、复数等;
  • 字符串(string):由数字、字母、下划线组成的一串字符;
  • 列表(list):一维序列,变长、其内容可进行修改,用“[ ]”标识;
  • 元组(tuple):一维序列,定长、不可变,内容不能修改,用“()”标识;
  • 字典(dict):最重要的内置结构之一,大小可变的键值对集,其中键(key)和值(value)都是python对象,用“{ }”标识;
  • 集合(set):由唯一元素组成的无序集,可看成是只有键没有值的字典,也是使用{}。

  列表、集合以及字典都可以用推导式来生成,这是最具特色的python语言特性之一,可以使用上述数据结构括号中的英文对应的python内置函数可以执行序列类型之间的转换。

2.必须掌握的基本库

  正如我们日常使用的excel数据一样,我们分析挖掘的数据最主要的还是表格数据,对于表格数据来说,Python中有很多库都可以处理这种数据,但是最经典也最好用的还是Pandas库。

Pandas

  Pandas,python+data+analysis的组合缩写,是python中基于numpy和matplotlib的第三方数据分析库,与后两者共同构成了python数据分析的基础工具包,享有数分三剑客之名。

  正因为pandas是在numpy基础上实现,其核心数据结构与numpy的ndarray十分相似,但pandas与numpy的关系不是替代,而是互为补充。pandas就数据处理上比numpy更加强大和智能,而numpy比pandas更加基础和强大。个人感觉,它们关系很像excel和wps。

  Pandas的导入也很简单,语法如下:

import pandas as pd

  关于pandas的知识点,总结如下图:
  
在这里插入图片描述

更多关于pandas的使用更i详细介绍说明,请参考 Pandas知识点超全总结

Numpy

  NumPy 是 Python 语言的一个第三方库,其支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。在机器学习中,由于大多数要进行大量对数组的变换和运算,所以,NumPy 就成了必不可少的工具之一。**也就是说它的强大在于出色的计算能力。**这里作为了解,只提一下,后续用到再深入讲解。

  NumPy 的主要对象是多维数组 Ndarray。在 NumPy 中维度 Dimensions 叫做轴 Axes,轴的个数叫做秩 Rank。关于数据的创建如下:

一维数组:
np.array([1, 2, 3])
二维数组:
np.array([(1, 2, 3), (4, 5, 6)])

  numpy中的数据可以执行很多运算,诸如:加减乘除、还有点乘,这里要和乘区分开;它还有个很方便的计算方法----广播。

3.数据分析用到的三方库

scipy

  scipy是python中用于科学计算的重要工具,在numpy基础上扩展了诸如积分计算、求解微分方程、优化、信号处理和稀疏矩阵等方便用户使用的数理算法和函数。scipy的主要功能模块有:

  • scipy.cluster:矢量量化/K-均值
  • scipy.constants:物理和数学常数
  • scipy.fftpack:傅里叶变换
  • scipy.integrate:积分
  • scipy.interpolate:插值
  • scipy.io:数据输入输出
  • scipy.linalg:线性代数程序
  • scipy.misc:杂项例程,多用于图形图像处理
  • scipy.ndimage:n维图像包
  • scipy.odr:正交距离回归
  • scipy.optimize:优化
  • scipy.signal:信号处理
  • scipy.sparse:稀疏矩阵
  • scipy.spatial:空间数据结构和算法
  • scipy.special:特殊数学函数
  • scipy.stats:统计

  我们在数据分析中,用的最多的是scipy.stats,导入stats模块可使用如下语句如下:

from scipy import stats

statsmodels

  statsmodels(原名scikits.statsmodels)提供了在python环境中进行探索性数据分析、统计检验以及统计模型估计的类和函数。其主要功能包括:线性回归、广义线性模型、广义估计方程、稳健线性模型、线性混合效应模型、离散因变量回归、方差分析、时间序列分析、生存分析、统计检验、非参数检验、非参数计量、广义矩方法、经验似然法、计数模型、常用分布等。此外还可以绘制拟合曲线图、盒须图、相关图、时间序列图形、因子图、马赛克图等用于探索性数据分析和模型构建诊断的常用图形。自0.5.0版本之后的statsmodels可以使用R语言风格对pandas的DataFrame对象拟合模型,广大统计工作者可以快速掌握statsmodels的编程语法和方式。

  statsmodels可供进行科学计算和统计分析的模块非常多,每个模块下包含的方法或函数也极其繁杂。因此,调用statsmodels进行数据分析时,往往使用其数据分析接口(api)的方式来进行:

import statsmodels.api as sm

sklearn

  sklearn的全称为scikit-learn,主要用于实现python中的机器学习功能。它建立在numpy、scipy和matplotlib基础上(所以安装scikit-learn之前必须事先安装有这3个模块),提供了一系列简单高效及最新的数据挖掘和数据分析工具。其主要功能包括:广义线性模型、线性及二次判别、核岭回归、支持向量机、随机梯度下降、最近邻法、贝叶斯分类、决策树、特征提取、定序回归、聚类、异常值检测、密度估计、神经网络等监督和半监督及无监督学习方法、模型选择和诊断方法、以及数据挖掘过程中的预处理方法等

  除了提供这些机器学习算法的接口之外,scikit-learn还内置了经典的机器学习数据集,如iris、digit等用于分类的数据集,boston house prices等用于回归的数据集,便于读者应用实际的数据集来学习这些数据挖掘和机器学习算法。

  由于scikit-learn提供了太多算法和功能,在调用具体机器学习算法时,往往也是采用“from sklearn import 模块名”的方式

from sklearn import svm #调用支持向量机进行分类

  该模块也是后续学习的主要模块。

  
  
关于数据结构和包的更详细的介绍,可以参考笔者之前的文章,Python基础知识总结,该文章讲解了相应的方法、以及实际中的使用场景等;关于Pandas的详细介绍,参考。

二、数据分析流程

  数据分析、挖掘的对象是各种各样的数据,针对不同的数据其我们选择的算法和分析逻辑也是不同的。但是并不是说数据分析、挖掘没有章法,而是有一般流程的,如下图:

在这里插入图片描述
  关于上图中的步骤,大体的解释如下:

  1. 在当今信息爆炸的时代,我们可以从日常社会经济生活和工作中获得的数据有多种存在形式。音频、视频、文本、图片、数字等等都是数据的不同表现形式,也就是我们进行数据分析与数据挖掘的对象。但是只有将这些数据首先都转成数字,才能成为计算机实现各种运算的对象。通常我们把这样的转换步骤统称为数据预处理。

  2. 当数据都以数字的形式表达后,我们就可以进一步对数据进行探索性分析。这一步很重要,这将帮助我们初步选用建模方法,另外还可帮助我们对数据挖掘的结果进行进一步的解释。

  3. 接下来需要确定模型结果的评估指标。这一步将在数据预处理与探索性分析之后,根据实际问题的需要,初步确定模型后,决定选用哪种模型评估指标。因为不同的模型可能评估指标是不同的,所以这里实际上该步骤也有模型选择的功能。

  4. 最后是确定最终模型。这里实际上和上一步确定结果的评估指标会重复几次,多次设定模型,反复比较,最终选择一个较好的模型。

  5. 最后还需要将模型结果进行可视化,与探索性分析的一些结果进行分析、解释、对比,最终得出有价值的结论,从而实现从数据到结论、从结论到价值的全过程。

  

三、结语

  这一节,虽然感觉讲的不多,但是,要求读者掌握的东西很多,出了Python的所有基础知识(这是最基础的部分,大家需要认真掌握),还有好几个库的作用、应用场景、以及优势等。同时,也给出了数据处理的一般流程,让读者对数据分析有了一个大概的了解。当掌握好基础知识,了解的流程,也就算是数据分析入门了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值