有很多同学会有疑问“老师我没有编程基础,也没有学习过 Python,我想用 Python 做数据分析,我应该从何处着手呢?”我相信很多的同学都有着相似的疑问,你们的茫然无措我也很理解,那么通过阅读这篇文章,我相信可以让你拨云见日,解开你心中的疑惑。我将给大家介绍,如何在没有任何基础的情况下学习数据分析,给你一些参考意见,帮你找到行之有效的学习方法。我相信正确的方法可以让我们的学习起来事半功倍。
俗语有云“不积跬步,无以至千里”,数据分析属于是 Python 语言的一个就业方向,而且可以说是有一定难度的,所以如果你没有抱着“必死”的决心去学习,建议你就不要往下看了,世界上没有一蹴而就的事情,也没有不付出就可以收获回报的好事,所以要想使用 Python 做数据分析,掌握 Python 语言的基础是必须的,如果没有基础估你连一个脚本怎么运行都不知道,更别提看懂代码了,但是学习基础,我们也要有针对性的学习,这样才能快速提高我们的掌握数据分析的效率。
所谓针对性学习,并不是说我们忽略的知识不重要,只是他在数据分析中可能不重要,你要知道 Python 语言可以是从事很多方向的工作,数据分析只是其中之一。那么对于没有基础的同学应该如何去学习 Python 语言呢,才能和数据分析高度契合?(PS:有基础的小伙伴可以跳过或针对性复习):
这个给大家本网站的 《Python入门基础教程》完全符合我们的上述要求,大家根据章节有选择性的学习,这里给大家再推荐一本书籍《Python编程从入门到实践》,两者搭配起来,效果会更好。
上面介绍了学习 Python 基础时,给大家提出的一点小建议,希望大家根据自己的实际情况安排相应的学习,下面给大家介绍数据分析中经常用到的 Python 相关的重要库,也就是我们提到过的科学计算库,给大家做一下简单的介绍,在后面我们会进行逐一的讲解。
Python 自身的数据分析能力并不强,需要安装一些第三方库扩展库才能最终实现数据分析的目的。NumPy(官网http://numpy.org) 是 Python 语言的一个扩展程序库,是 Numerical Python 的简写,支持大量的维度数组与矩阵运算,它提供了关于数组的大量的数学函数库以及大部分和 Python 数值计算有关的接口,它是 Python 数值计算的基础包,一般配合其他的第三方包使用,比如 matplotlib、Pandas 等。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发。2005 年, Numeric 结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展,从而诞生了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。它主要有以下优势:
示例如下,生成 ndarray 数组:
In [1]: import numpy as np
In [2]: a=np.array([1,2,3,4,5])
In [3]: a
Out[3]: array([1, 2, 3, 4, 5])
In [4]: type(a)
Out[4]: numpy.ndarray
Numpy 在内部数据结构上将数据存储在连续的内存块上,这与其他的 Python 内建数据结构是不同的,它的底层是用 C语言编写的,Numpy 数组使用的内存量也远远小于其他 Python 内建数据类型。
数据分析最后的结果要以可视化的形式呈现,对于 Python 来说 Matplotlib(官网http://matplotlib.org) 是最流行的绘图库,它由 John D.Hunter 创建,主要用于 2D 绘图和一部分3D 绘图。让我们可以非常快捷的使用 Python 完成数据的可视化工作,并且将输出的结果保存为想要的图片格式。所以将 Matplotlib 作为默认的可视化工具是一个不错的选择。代码示例如下所示:
import numpy as np 导入numpy数值计算库
import matplotlib.pyplot as plt 导入matplotlib绘图库
#自变量
x=np.linspace(0,10,1000)
#因变量
y=np.sin(x)+1
#因变量
z=np.cos(x**2)+1
#设置图像大小
plt.figure(figsize=(8,4))
#设置标签、线条颜色,线条大小
plt.plot(x,y,label='sinx + 1',color='red',linewidth=2)
plt.plot(x,z,label='cosx^2 + 1',color='blue',linewidth=1)
#分别设置 x/y名称
plt.xlabel('Time(s)')
plt.ylabel('Volt(v)')
plt.title('Matplotlib Sample')
plt.ylim(0,2.5)#显示的y轴范围
plt.legend()#显示图例
最终运行后可以得到如下所示的绘图效果:
Scipy 是基于 Numpy 在科学计算领域非常强大的科学计算库。它在优化、非线性方程求解、常微分方程等方面应用广泛,Numpy 虽然提供了多维数组功能,但它只是一般的数组, 并不是矩阵。例如,当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。Scipy 提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。
Scipy 包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,显然,这些功能都是挖掘与建模必备的。Scipy 依赖于 Numpy,因此安装它之前得先安装 Numpy。
Pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas 提供了大量能使我们快速便捷地处理数据的函数和方法。它是使 Python 成为强大而高效的数据分析环境的重要因素之一。
Pandas 是 Python 的一个数据分析包,最初由一家著名的量化投资公司 AQR 于 2008 年 4 月开发,并于 2009 年底开源出来,主要开发者是韦斯▪麦金尼 。目前它由专注于 Python 数据包开发的 PyData 开发团队继续开发和维护,属于 PyData 项目的一部分。Pandas 最初被作为金融数据分析工具而开发出来。在后续章节中这将是我们关注的重点模块。
Pandas 的名称来自于面板数据(panel data)和 Python 数据分析(data analysis),panel data 是经济学中关于多维数据集的一个术语。
在 Window 环境下都可以直接使用pip install的方式对上面的第三方包进行安装即可,如果你安装了 Anaconda 科学计算平台,则无需安装了上述第三方包了,它已经为你集成安装好了,不过因此你要了解 Anaconda 使用方法以及常用的一些命令格式,这需要你自己去学习,本教程中不做介绍。如果你是 Linux 平台可以自行百度搜索如何安装,在这里不多赘述了。
在本节我们先介绍了 4 个常用的第三方包,当然还有很多,比如 Scikit-Learn、Keras、StatsModels、Pillow、OpenCV 等等,有兴趣的可以自行了解,不作为本节的介绍重点。在后续章节中我们将以上述 4 个常用模块作为教程重点进行讲解,当然也会穿插介绍一些其他模块,从而帮助大家掌握数据分析的常用模块。