1. 程式人生 > >Python資料分析之路| 入門起航篇

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和深度學習的一些框架

 

初探numpy

3.什麼是NumPy

1).Numpy全稱叫Numeric Python,聽名字就知道跟數值有關,沒錯numpy,提供了許多高階的數值程式設計工具,如:矩陣運算、多維陣列,向量運算,線性代數,隨機數的生成,均方差等這些科學計算操作非常方便.

2).Ndarray 物件

Numpy裡面有一個最最有名的Ndarray物件,幾乎所有的操作都圍繞這個Ndarray來,也叫多維陣列.

陣列是主流語言的標配資料結構,Python中的列表其實也是這樣的一種資料結構,但是列表跟陣列不一樣;比如列表的元素可以是任意的型別,列表需要儲存每個物件的指標和物件,很浪費記憶體空間,而且不支援多維陣列

Ndarray會支援多維陣列,而且陣列之間的轉換非常方面,內建了很多高效的內建函式,都是用C寫的,有利於節省記憶體和提高CPU的計算時間.比如需要計算一百萬資料的正弦函式用numpy比python裡的標準函式要快近10倍~~

 

4.Ndarray和Python list的相似之處

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()計算均方差等函式

留一個思考題

題目一:

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蠻強大的~~這只是開始,今天的文章希望能給初學者一些啟發,若有什麼不懂的,也可以留言跟我探討交流.後面一篇會介紹numpy的一些高階用法,以及一些實戰例子來綜合運用.

給大家整理了Python很全面的資料和教程可以下載,加群943752371即可