Python数据分析之路如何走?

数据分析准备工作

1.数据分析工具

  • 工欲善其事,必先利其器,网上有很多关于数据剖析的文章,置信大家一定听过R言语和Python之争,而且各有所长,R言语在学术界更盛行,但是在做项目上面我个人比拟喜欢Python,Python更通用,更简约,文档也很多,而且有大量的库特别是Google,Facebook都开源了很多功用强大的库,十分不错.所以言语我们选Python.
  • 开发工具的话,建议大家用Anaconda,是一个强大的科学计算的Python发行版,首推数据分析开发工具.支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本Python并存、切换以及各种第三方包安装问题。推荐使用里面的spyder和Jupyter Notebook非常不错,界面美观而且调试方便

2.数据分析的库

Python数据分析这么流行,其中跟两个第三方的库非常相关,一个是Numpy,一个是Pandas,这两个库如果你要做数据分析,必须要熟练掌握使用~~

  • Numpy偏数组多一点,特别是多维数组,矩阵,非常灵活方便.内置了大量的矩阵的操作,对于科学计算来说简直就是神器.
  • Pandas偏series多一点,而且跟时序相关,内置了大量库和一些标准的数据模型,特别是对于大型的数据的处理,非常的高效和快捷.
  • 比如对于一个1000万行的CVS数据的处理,用字典去处理大概需要60几秒,而pandas只需要4秒,而且代码行更少.以后我们会用实战例子去证明这一点

当然上面都是一些入门必学技能,继续修炼的话需要了解大数据的处理,以及一些机器学习的库sk-learn和深度学习的一些框架

Python数据分析之路如何走?

初探numpy

3.什么是NumPy

1).Numpy全称叫Numeric Python,听名字就知道跟数值有关,没错numpy,提供了许多高级的数值编程工具,如:矩阵运算、多维数组,矢量运算,线性代数,随机数的生成,均方差等这些科学计算操作非常方便.

2).Ndarray 对象

Numpy里面有一个最最有名的Ndarray对象,几乎所有的操作都围绕这个Ndarray来,也叫多维数组.

数组是主流语言的标配数据结构,Python中的列表其实也是这样的一种数据结构,但是列表跟数组不一样;比如列表的元素可以是任意的类型,列表需要保存每个对象的指针和对象,很浪费内存空间,而且不支持多维数组

Ndarray会支持多维数组,而且数组之间的转换非常方面,内置了很多高效的内建函数,都是用C写的,有利于节省内存和提高CPU的计算时间.比如需要计算一百万数据的正弦函数用numpy比Python里的标准函数要快近10倍~~

4.Ndarray和Python list的相似之处

Python数据分析之路如何走?

import numpy

n1=numpy.array(['AA','BB','CC','DD','EE'])

list1=['AA','BB','CC','DD','EE']

a).都可以通过下标去访问

print n1[0]

>>'AA'

print list1[0]

>>'AA'

b).都可以切片去访问

n1=numpy.array(['AA','BB','CC','DD','EE'])

list1=['AA','BB','CC','DD','EE']

print n1[1:3]

>>['BB' 'CC']

print list1[1:3]

>>['BB', 'CC']

c).都可以用循环处理

n1=numpy.array([1,2,3,4])

for n in n1:

print n

>>

1

2

3

4

5.Ndarray和Python list的不同之处

a).Ndarray里面的元素必须是同一种类型

(int,float,string_,bool, ...)

要么都是int,要么都是float,要么都是字符串

n1=np.array(['a','b','c',100])

>>

['a' 'b' 'c' '100']

因为ndarray要求所以的类型必须一样,你会发现100变成了字符串'100'

b).矢量运算

比如相加

a1=np.array([1,2,3])

a2=np.array([4,5,6])

print a1+a2

>>[5,7,9]

而类似的加操作在list中

list1=[1,2,3]

list2=[4,5,6]

print list1+list2

>>[1,2,3,4,5,6]

比如相乘

a1=np.array([1,2,3])

print a1*3

>>[3,6,9]

而类似的操作在list中

a1=[1,2,3]

print a1*3

>>[1,2,3,1,2,3,1,2,3]

比如乘方

先产生3*3矩阵,每个数字都是0-9之间

arr1=np.random.randint(0,10,(3,3))

print arr1

>>

[[6 7 5]

[9 6 0]

[5 5 9]]

arr2=arr1**2

print arr2

>>

[[36 49 25]

[81 36 0]

[25 25 81]]

c).内置了一些通用(ufunc)函数

比如max(),min(),argmax(),argmin(),mean()计算中位数,std()计算均方差等函数

Python数据分析之路如何走?

留一个思考题

题目一:

a=np.array([1,2,3,4,5])

b=a

a+=np.array([1,1,1,1,1])

print b

题目二:

a=np.array([1,2,3,4,5])

b=a

a=a+np.array([1,1,1,1,1])

print b

看看题目一和题目二的print b的结果是什么,会一样吗?


Python数据分析起航篇就讲到这里,是不是觉得numpy蛮强大的~~这只是开始,今天的文章希望能给初学者一些启发。

 

马哥学习交流群

马哥教育-Python开发-1群 335068227

马哥教育-Python开发-2群 608459685

 

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!