一個線上 <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,如需轉載請自行聯系原作者