现在越来越多的工作都需要用到数据分析,比如说处理一个较大规模的excel数据、可视化一批数据、可视化一批报表。虽然office的excel软件能处理一些简单的数据,同时也能绘制一些简单的图表,但是excel处理数据的函数过于抽象复杂、而且绘制的图标也比较简单,不能对数据进行深入的分析。
那么最好的数据分析模式是什么呢?当然是简单易上手的python,Python是一种解释性脚本语言,他没有c++、java那样的复杂的语法也没有那么多条条框框的编程限制,对于新手而言这一点也非常的友好了。
现在知乎知学堂推出了一个基于Python的数据分析课程,我个人觉得里面的内容是十分合适小白上手的,而且课程的目标也很明确:「自动化办公」、「数据分析」、「数据可视化」,推荐有需要的同学可以入手学习。反正也才一毛钱,直接冲,比淘宝上卖的盗版网课好多了!
深入一点讲,python只是一个编程语言,如果要实现数据分析还需要几个第三方库,那什么是第三方库呢?第三方库就是别人写好的代码集合,你可以直接调用别人写好的代码来简化你的工作流程,通过「拿来主义」减轻你的工作负担,这也是利用python进行数据分析优于c++和java的地方,python拥有大量的第三方库使你只需要专注于你自己想要处理的工作,而不是像一个程序员一样去思考如何实现一个数据结构、编写一个算法;也不是像一个数学家一样要去思考实现一个数学模型,因为python的第三方库已经帮你实现了数据结构、算法、数学模型,你只需要去利用这些东西去完成你需要的工作。接下来,介绍一下利用Python进行数据分析最常用的几个第三方库。最常用的第三方库有四个:「Matplotlib」、「pandas」、「numpy」、「scipy」。下面详细介绍一下他们的功能和用途。
Matplotlib画出来的图片是不是比excel画出来的简易图要高大上很多?如果这些图片出现在你的汇报ppt里是不是就把你的汇报提升了一个档次?Matplotlib能画出来的图片远远不止上面几种如果你现在就想试一试,可以参考Matplotlib的官方https:// matplotlib.org/stable/g allery/index.html
下面就是一个pandas进行数据清洗的例子:
假设我们需要处理下面的数据,把它们进行可视化:
上面的数据中存在大量的缺失值(NA、NAN)和空值,那么我们直接使用pandas就可以清洗掉这这些缺失值、空值。
import pandas as pd
df = pd.read_csv('property-data.csv')
print (df['NUM_BEDROOMS'])
print (df['NUM_BEDROOMS'].isnull())
通过上面的代码,清洗后的数据就是:
这样简简单单的几行代码就直接完成了数据清洗的任务,后面我们就可以用清洗后干净的数据进行数据分析。
上面的数据清洗相关知识内容在这个课程中也是有的:
Numpy最主要的功能是矩阵运算,在矩阵运算上的Numpy的运算速度和计算精度都足以媲美MATLAB,但是相比于MATLAB那复杂抽象的语言,Python简单明了的编程方式会极大的提升你解决问题的速度,同时Numpy还有一个良好的社区环境,如果你的程序报错了又没有办法自己解决,你就可以在百度上查询你的bug,基本上都可以解决你遇到的问题,但是由于MATLAB是一个商业软件,他的社区氛围就要差的很多。下面就是numpy计算几个常见矩阵运算的方法:
- 矩阵转置 mat.T (mat为矩阵变量ndarray类型)
- 矩阵求逆 mat.T (mat为矩阵变量ndarray类型)
- 矩阵的特征值和特征向量 numpy.linalg.det(mat)\np.linalg.eig(mat)
- 矩阵的最大值和最小值以及均值 numpy.max(mat)\numpy.min(mat)
- 矩阵的排序 numpy.sort(mat)
SciPy结合上面提到的Numpy和Pandas就可以解决日常生活中遇到的绝大部分数据分析任务,你可以把SciPy理解成一个数学库,这个数学库中包含了绝大部分的数学模型,优化模型(最小二乘法、梯度下降法),线性代数(高维度矩阵运算),以及其他学科的一些模型(计算机视觉中的图像处理、信号学中的傅里叶变化、信号处理等函数)。
看到这里,你也明白利用SciPy、Numpy、Pandas、Matplotlib进行数据分析是十分容易上手的一件事情,但是容易归容易,如果过没有系统的跟随老师去学习的话还是会走很多弯路的,正好最近知乎知学堂官方开设了一个【数据分析实战训练营】,这里面就会详细的介绍如何利用Python进行数据分析,本回答中的SciPy、Numpy、Pandas、Matplotlib教学也包含在这个课程当中,所以感兴趣的伙伴们可以关注一下,课程链接如下: