Python數據分析入門

原文:http://python.jobbole.com/81133/html

本文由 伯樂在線 - Den 翻譯,toolate 校稿。未經許可,禁止轉載!
英文出處:alstatr.blogspot.ca。歡迎加入翻譯組python

最近,Analysis with Programming加入了Planet Python。做爲該網站的首批特約博客,我這裏來分享一下如何經過Python來開始數據分析。具體內容以下:git

  1. 數據導入
    • 導入本地的或者web端的CSV文件;
  2. 數據變換;
  3. 數據統計描述;
  4. 假設檢驗
    • 單樣本t檢驗;
  5. 可視化;
  6. 建立自定義函數。

數據導入

這是很關鍵的一步,爲了後續的分析咱們首先須要導入數據。一般來講,數據是CSV格式,就算不是,至少也能夠轉換成CSV格式。在Python中,咱們的操做以下:程序員

爲了讀取本地CSV文件,咱們須要pandas這個數據分析庫中的相應模塊。其中的read_csv函數可以讀取本地和web數據。github

數據變換

既然在工做空間有了數據,接下來就是數據變換。統計學家和科學家們一般會在這一步移除分析中的非必要數據。咱們先看看數據:web

對R語言程序員來講,上述操做等價於經過print(head(df))來打印數據的前6行,以及經過print(tail(df))來打印數據的後6行。固然Python中,默認打印是5行,而R則是6行。所以R的代碼head(df, n = 10),在Python中就是df.head(n = 10),打印數據尾部也是一樣道理。數組

在R語言中,數據列和行的名字經過colnames和rownames來分別進行提取。在Python中,咱們則使用columns和index屬性來提取,以下:dom

數據轉置使用T方法,ide

其餘變換,例如排序就是用sort屬性。如今咱們提取特定的某列數據。Python中,可使用iloc或者ix屬性。可是我更喜歡用ix,由於它更穩定一些。假設咱們需數據第一列的前5行,咱們有:函數

順便提一下,Python的索引是從0開始而非1。爲了取出從11到20行的前3列數據,咱們有:

上述命令至關於df.ix[10:20, ['Abra', 'Apayao', 'Benguet']]

爲了捨棄數據中的列,這裏是列1(Apayao)和列2(Benguet),咱們使用drop屬性,以下:

axis 參數告訴函數到底捨棄列仍是行。若是axis等於0,那麼就捨棄行。

統計描述

下一步就是經過describe屬性,對數據的統計特性進行描述:

 

假設檢驗

Python有一個很好的統計推斷包。那就是scipy裏面的stats。ttest_1samp實現了單樣本t檢驗。所以,若是咱們想檢驗數據Abra列的稻穀產量均值,經過零假設,這裏咱們假定整體稻穀產量均值爲15000,咱們有:

返回下述值組成的元祖:

  • t : 浮點或數組類型
    t統計量
  • prob : 浮點或數組類型
    two-tailed p-value 雙側機率值

經過上面的輸出,看到p值是0.267遠大於α等於0.05,所以沒有充分的證聽說平均稻穀產量不是150000。將這個檢驗應用到全部的變量,一樣假設均值爲15000,咱們有:

第一個數組是t統計量,第二個數組則是相應的p值。

可視化

Python中有許多可視化模塊,最流行的當屬matpalotlib庫。稍加說起,咱們也可選擇bokeh和seaborn模塊。以前的博文中,我已經說明了matplotlib庫中的盒須圖模塊功能。

如今,咱們能夠用pandas模塊中集成R的ggplot主題來美化圖表。要使用ggplot,咱們只須要在上述代碼中多加一行,

這樣咱們就獲得以下圖表:

比matplotlib.pyplot主題簡潔太多。可是在本博文中,我更願意引入seaborn模塊,該模塊是一個統計數據可視化庫。所以咱們有:

 

多性感的盒式圖,繼續往下看。

 

建立自定義函數

在Python中,咱們使用def函數來實現一個自定義函數。例如,若是咱們要定義一個兩數相加的函數,以下便可:

順便說一下,Python中的縮進是很重要的。經過縮進來定義函數做用域,就像在R語言中使用大括號{…}同樣。這有一個咱們以前博文的例子:

  1. 產生10個正態分佈樣本,其中u=3o.
  2. 基於95%的置信度,計算x_barx_bar2 ;
  3. 重複100次; 而後
  4. 計算出置信區間包含真實均值的百分比

Python中,程序以下:

上述代碼讀起來很簡單,可是循環的時候就很慢了。下面針對上述代碼進行了改進,這多虧了 Python專家,看我上篇博文的15條意見吧。

 

更新

那些對於本文ipython notebook版本感興趣的,請點擊這裏。這篇文章由Nuttens Claude負責轉換成 ipython notebook 。

相關文章
相關標籤/搜索