1. 程式人生 > >10分鐘理解pandans

10分鐘理解pandans

本文是對pandas官方網站上《10 Minutes to pandas》的一個簡單的翻譯,原文在這裡。這篇文章是對pandas的一個簡單的介紹,詳細的介紹請參考:Cookbook 。習慣上,我們會按下面格式引入所需要的包:

一、            建立物件

1、可以通過傳遞一個list物件來建立一個Series,pandas會預設建立整型索引:

2、通過傳遞一個numpy array,時間索引以及列標籤來建立一個DataFrame:

3、通過傳遞一個能夠被轉換成類似序列結構的字典物件來建立一個DataFrame:

4、檢視不同列的資料型別:

5、如果你使用的是IPython,使用Tab自動補全功能會自動識別所有的屬性以及自定義的列,下圖中是所有能夠被自動識別的屬性的一個子集:

二、            檢視資料

1、  檢視frame中頭部和尾部的行:

2、  顯示索引、列和底層的numpy資料:

3、  describe()函式對於資料的快速統計彙總:

4、  對資料的轉置:

5、  按軸進行排序

6、  按值進行排序

三、            選擇

雖然標準的Python/Numpy的選擇和設定表示式都能夠直接派上用場,但是作為工程使用的程式碼,我們推薦使用經過優化的pandas資料訪問方式:.at.iat.loc.iloc.ix詳情請參閱Indexing and Selecing DataMultiIndex / Advanced Indexing

l  獲取

1、 選擇一個單獨的列,這將會返回一個Series,等同於df.A

2、 通過[]進行選擇,這將會對行進行切片

l  通過標籤選擇

1、 使用標籤來獲取一個交叉的區域

2、 通過標籤來在多個軸上進行選擇

3、 標籤切片

4、 對於返回的物件進行維度縮減

5、 獲取一個標量

6、 快速訪問一個標量(與上一個方法等價)

l  通過位置選擇

1、 通過傳遞數值進行位置選擇(選擇的是行)

2、 通過數值進行切片,與numpy/python中的情況類似

3、 通過指定一個位置的列表,與numpy/python中的情況類似

4、 對行進行切片

5、 對列進行切片

6、 

獲取特定的值

l  布林索引

1、 使用一個單獨列的值來選擇資料:

2、 使用where操作來選擇資料:

3、 使用isin()方法來過濾:

l  設定

1、 設定一個新的列:

2、 通過標籤設定新的值:

3、 通過位置設定新的值:

4、 通過一個numpy陣列設定一組新值:

上述操作結果如下:

5、 通過where操作來設定新的值:

四、            缺失值處理

在pandas中,使用np.nan來代替缺失值,這些值將預設不會包含在計算中,詳情請參閱:Missing Data Section

1、  reindex()方法可以對指定軸上的索引進行改變/增加/刪除操作,這將返回原始資料的一個拷貝:、

2、  去掉包含缺失值的行:

3、  對缺失值進行填充:

4、  對資料進行布林填充:

五、            相關操作

l  統計(相關操作通常情況下不包括缺失值)

1、  執行描述性統計:

2、  在其他軸上進行相同的操作:

3、  對於擁有不同維度,需要對齊的物件進行操作。Pandas會自動的沿著指定的維度進行廣播:

l  Apply

1、  對資料應用函式:

l  直方圖

l  字串方法

Series物件在其str屬性中配備了一組字串處理方法,可以很容易的應用到陣列中的每個元素,如下段程式碼所示。更多詳情請參考:Vectorized String Methods.

六、            合併

Pandas提供了大量的方法能夠輕鬆的對Series,DataFrame和Panel物件進行各種符合各種邏輯關係的合併操作。具體請參閱:Merging section

l  Concat

l  Append 將一行連線到一個DataFrame上,具體請參閱Appending

七、            分組

對於”group by”操作,我們通常是指以下一個或多個操作步驟:

l  (Splitting)按照一些規則將資料分為不同的組;

l  (Applying)對於每組資料分別執行一個函式;

l  (Combining)將結果組合到一個數據結構中;

1、  分組並對每個分組執行sum函式:

2、  通過多個列進行分組形成一個層次索引,然後執行函式:

八、            Reshaping

l  Stack

可以從這個資料中輕鬆的生成資料透視表:

九、            時間序列

Pandas在對頻率轉換進行重新取樣時擁有簡單、強大且高效的功能(如將按秒取樣的資料轉換為按5分鐘為單位進行取樣的資料)。這種操作在金融領域非常常見。具體參考:Time Series section

1、  時區表示:

2、  時區轉換:

3、  時間跨度轉換:

4、  時期和時間戳之間的轉換使得可以使用一些方便的算術函式。

十、            Categorical

1、  將原始的grade轉換為Categorical資料型別:

2、  將Categorical型別資料重新命名為更有意義的名稱:

3、  對類別進行重新排序,增加缺失的類別:

4、  排序是按照Categorical的順序進行的而不是按照字典順序進行:

5、  對Categorical列進行排序時存在空的類別:

十一、           畫圖

對於DataFrame來說,plot是一種將所有列及其標籤進行繪製的簡便方法:

十二、           匯入和儲存資料

1、  寫入csv檔案:

2、  從csv檔案中讀取:

1、  寫入HDF5儲存:

2、  從HDF5儲存中讀取:

1、  寫入excel檔案:

2、  從excel檔案中讀取:

相關推薦

10分鐘理解pandans

本文是對pandas官方網站上《10 Minutes to pandas》的一個簡單的翻譯,原文在這裡。這篇文章是對pandas的一個簡單的介紹,詳細的介紹請參考:Cookbook 。習慣上,我們會按下面格式引入所需要的包: 一、            建立物件 1、可

10分鐘理解Android數據庫的創建與使用(附具體解釋和演示樣例代碼)

fault 大小 help double 查詢過濾 rem d+ tof red 1.Android數據庫簡單介紹. Android系統的framework層集成了Sqlite3數據庫。我們知道Sqlite3是一種輕量級的高效存儲的數據庫。 Sqli

【安全】10分鐘理解Capability本質

核心定理大公式 (注:man capabilities 7) P'(ambient) = (file is privileged) ? 0 : P(ambient) P'(perm

10分鐘理解代理——JDK動態代理

引子: 在上一篇文章中介紹了什麼是靜態代理。本章繼續為大家講解代理的另外一個領域:JDK動態代理。動態代理的的優勢在於代理物件可以觸發被動理物件的任何方法。動態代理的JDK實現方式很容易使用。 Invoce的意思是呼叫,Invocation是Invoce 的名詞形式,ha

轉:10 分鐘理解什麼是 OAuth 2.0 協議

10 分鐘理解什麼是 OAuth 2.0 協議 預覽目錄 什麼是 OAuth 2.0 OAuth 2.0 是一個行業的標準授權協議。OAuth 2.0 專注於簡化客戶端開發人員,同時為 Web 應用程式,桌面應用程式,手機和客廳裝置提供特定的授權流程。 它的最終目

10分鐘理解JS引擎的執行機制 event loop ---齊梟飛前端構架

首先,請牢記2點: (1) JS是單執行緒語言 (2) JS的Event Loop是JS的執行機制。深入瞭解JS的執行,就等於深入瞭解JS裡的event loop 技術的出現,都跟現實世界裡的應用場景密切相關的。 同樣的,我們就結合現實場景,來回答這三個問題 (

10 分鐘理解 PyTorch 程式碼

PyTorch 是一個新的深度學習框架. 本文的內容基於 Justin Johnson 的 教程, 如果想要有更多瞭解或有更多時間的話建議仔細研究一下. PyTorch 主要包含 4 個包 (package): torch: 一個通用性的陣列庫, 與

10 分鐘理解 BFC 原理(轉載)

在講 BFC 之前,我們先來了解一下常見的定位方案,定位方案是控制元素的佈局,有三種常見方案: 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先後位置至上而下佈局,在這個過程中,行內元素水平排列,直到當行被佔滿然後換行,塊級元素則會被渲染為完整的一個新行,除非另外

10分鐘理解JS引擎的執行機制

作者: ziwei3749 https://segmentfault.com/a/1190000012806637 首先,請牢記2點: JS是單執行緒語言 JS的Event Loop是JS的執行機制。深入瞭解JS的執行,就等於深入瞭解JS裡的event

10分鐘理解TCP/IP各個協議以及協議之間的關係

1.硬體(物理層) TCP/IP的最底層是負責資料傳輸的硬體。這種硬體相當於是乙太網或電話線路等物理層的裝置。 2.網路介面層(資料鏈路層) 網路介面層利用乙太網中的資料鏈路層進行通訊,因此屬於介面層。也可以認為是網絡卡驅動。驅動程式是在作業系統和硬體之間起橋樑作用的

【CGROUP】10分鐘深入理解CGROUP V1本質

  本文作為cgroup核心程式碼的開篇文件,只介紹cgroup的設計理念,不介紹具體程式碼。理解了本文即理解了cgroup的核心思想,可以更容易地理解其它cgroup的原始碼分析文章。文中出現的核心原始碼來源於4.14.4版本。 一、資源的樹型管理  

10分鐘學會理解和解決MySQL亂碼問題 • cenalulu's Tech Blog

本文將詳細介紹MySQL亂碼的成因和具體的解決方案 在閱讀本文之前,強烈建議對字符集編碼概念還比較模糊的同學 閱讀下博主之前對相關概念的一篇科普:十分鐘搞清字符集和字元編碼 MySQL出現亂碼的原因 要了解為什麼會出現亂碼,我們就先要理解:從客戶端發起請求,到MySQL儲存資料

10分鐘教你理解反射

什麼是反射? 反射反射,程式設計師的快樂,在.Net領域程式設計中,反射是無處不在的,MVC、ASP.Net、各種ORM、IOC、AOP幾乎所有的框架都離不開反射。反編譯工具使用的底層技術用的不是反射,是一種逆向工程。 反射(Reflection、System.Reflection),是.Net Fram

go 學習筆記之10 分鐘簡要理解 go 語言閉包技術

閉包是主流程式語言中的一種通用技術,常常和函數語言程式設計進行強強聯合,本文主要是介紹 Go 語言中什麼是閉包以及怎麼理解閉包. 如果讀者對於 Go 語言的閉包還不是特別清楚的話,可以參考上一篇文章 go 學習筆記之僅僅需要一個示例就能講清楚什麼閉包. 或者也可以直接無視,因為接下來會回顧一下前情概要,現在你

使用 Chrome 瀏覽器插件 Web Scraper 10分鐘輕松實現網頁數據的爬取

tle 中文 host avi true bre 註冊 分屏 idt 本文標簽: WebScraper Chrome瀏覽器插件 網頁數據的爬取 使用 Chrome 瀏覽器插件 Web Scraper 可以輕松實現網頁數據的爬取,不寫代碼,鼠標操作,點哪爬哪,還不用考慮爬蟲中

Python:10分鐘搞定不寫代碼的爬蟲

出現 ring swe 導入 gem 取數據 bbb del delay 代碼自己敲 使用 Chrome 瀏覽器插件 Web Scraper 可以輕松實現網頁數據的爬取,不寫代碼,鼠標操作,點哪爬哪,還不用考慮爬蟲中的登陸、驗證碼、異步加載等復雜問題。 Web Scrap

SQL優化(SQL TUNING)之10分鐘完畢億級數據量性能優化(SQL調優)

font 一個 進一步 結束 語句 pop 技術分享 處理 fill 前幾天。一個用戶研發QQ找我,例如以下: 自由的海豚。 16:12:01 島主,我的一條SQL查不出來結果,能幫我看看不? 蘭花島主 16:12:10 多久不出結果? 自由的海豚 16:12:17

截取最近10分鐘的nginx日誌

截取最近10分鐘的nginx 日誌tac /data1/logs/nginx-access_2017061115.log| awk ‘BEGIN{ "date -d \"-10 minute\" +\"%H:%M:%S\"" | getline min10ago } { if (substr($4, 14)

Pandas 10分鐘入門(官方文檔註釋版二)

logs ble light col util nump std 我們 部分 本文接續註釋版1,前文重點講述了如何創建一個panads對象,本文重點講述如何查看這些已經創建的對象。 【查看數據】 See the top & bottom ro

分鐘理解一致性哈希算法(consistent hashing)

b2c size 節點 一致性哈希算法 src read mon 地址 終端 轉載請說明出處:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工學院提出的一種分布式哈希(DH