• 数据分析入门导读



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

      数据分析有很多的工具,或者说是语言,根据各自的需求选择不同的工具,简单的、数据量不大的甚至使用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的所有基础知识(这是最基础的部分,大家需要认真掌握),还有好几个库的作用、应用场景、以及优势等。同时,也给出了数据处理的一般流程,让读者对数据分析有了一个大概的了解。当掌握好基础知识,了解的流程,也就算是数据分析入门了。

  • 相关阅读:
    使用nvm管理多版本node.js
    k8s--基础--23.3--认证-授权-准入控制--授权
    PDF格式分析(七十四)——自由文本注释(Free Text)
    (续)SSM整合之spring笔记(AOP 基于注解的AOP切点表达式的语法,获取连接点的信息, 重用切入点表达式)(P102)
    C. Madoka and Childish Pranks
    C语言的const函数修饰指针
    [附源码]计算机毕业设计校园招聘系统Springboot程序
    “批量随机字母命名文件,轻松管理你的文件库“
    【云原生kubernetes从入门到实践系列教程 ] 二.docker操作
    gcc: -O2 优化选项的一个副作用:可以掩盖链接,符号未定义错误 undefined reference to
  • 原文地址:https://blog.csdn.net/Itsme_MrJJ/article/details/126097094