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即可