天天看點

能看懂的Pandas教程

一個線上 <code>Python</code> 程式設計環境,每行的代碼在敲擊 <code>Shift + Enter</code> 後單獨執行,便于初學者快速掌握程式設計語言。 Jupyter 可以完美利用 Python 豐富的資料分析和科學計算的工具庫,實作一些非大資料的分析計算需求。

用于操作行列資料,友善地實作各種資料分析的形式。

由于 Python 本身的限制,如果需要計算的資料太大,而無法一次載入記憶體,則需要分塊導入資料,并對查詢做相應的修改。

在指令行中輸入:

cd到指定目錄,啟動:

在 Jupyter Notebook 中,Pandas 是操作資料的工具,matplotlib 是執行作圖的工具。

在 Cell 中輸入并執行:

由于線上環境無法建立檔案,也可以執行以下語句建立一個 <code>DataFrame</code>:

<code>index_col</code>的作用是索引,是為了高效查詢建立的特殊資料結構,簡單說(不準确)是黃頁

現在想象你手邊有Excel(當然你也可以真的開一個)顯示如下表格:

date(索引)

A

B

C

D

2013-01-01

0.469112

-0.282863

-1.509059

-1.135632

2013-01-02

1.212112

-0.173215

0.119209

-1.044236

2013-01-03

-0.861849

-2.104569

-0.494929

1.071804

2013-01-04

0.721555

-0.706771

-1.039575

0.271860

2013-01-05

-0.424972

0.567020

0.276232

-1.087401

2013-01-06

-0.673690

0.113648

-1.478427

0.524988

行的選取

選擇第0行至第3行,結果如灰色區域所示:

2.列的選取

選擇列A,B,C,結果如灰色區域所示:

3.塊的選取

選擇行和列組成的資料塊,結果如灰色區域所示:

Pandas 中的基本資料結構有二,<code>Series</code> 和 <code>Dataframe</code>。 <code>Series</code> 用來建立行,也可以了解為一維數組。 <code>Dataframe</code> 用來建立塊,或稱為矩陣,表格。

建立一個數組[1,1,2,3,5]:

建立一個 <code>6x4</code> 的表格塊,單元格内容為随機數列名為 A,B,C,D。

從已有的列建立一個新的列

<code>df['A'] + df['B']</code>表示兩列對應單元格的相加
<code>df['A']*10</code>表示列A每個單元格 *10
運算後df的值如下:

sumAB

10A

0.186249

4.69112

1.038897

12.12112

-2.966418

-8.61849

0.014784

7.21555

0.142048

-4.24972

-0.560042

-6.73690

在方括号中加入判斷條件來過濾行,條件必需傳回 <code>True</code> 或者 <code>False</code>

為了快速了解資料的結構,一些值得掌握的指令如下:

# 檢視表末5行 df.tail(5) # 檢視列的名字 df.columns # 檢視表格目前的值 df.values # 檢視所有列的統計描述,包括平均值,标準差,最大最小值,以及25%,50%,75%的 percentile 值 df.describe() # 對表按照A列升序排序 df.sort_values(by=’A’)

Pandas 與 matplotlib 配合使用,可以支援幾乎所有常用的圖表形式,這裡以常用的直方圖為例,來觀察一個典型的獨立随機變量的正态分布:

結果如圖所示:

經過了這幾節,想必現充們僅僅學會了例子中的代碼,如果想進一步了解,請參考以下文檔:

進一步的使用需要對 Python 和 Pandas 做全面的了解,可以參考以下書籍:

/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ var disqus_shortname = 'chenhfblog'; // required: replace example with your forum shortname /* * * DON'T EDIT BELOW THIS LINE * * */ (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();

本文轉自 chengxuyonghu 51CTO部落格,原文連結:http://blog.51cto.com/6226001001/1880920,如需轉載請自行聯系原作者