pandas的數(shù)據(jù)結構介紹
簡介
Pandas [1] 是python的一個數(shù)據(jù)分析包,最初由AQR Capital Management于2008年4月開發(fā),并于2009年底開源出來,目前由專注于Python數(shù)據(jù)包開發(fā)的PyData開發(fā)team繼續(xù)開發(fā)和維護,屬于PyData項目的一部分。Pandas最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,因此,pandas為時間序列分析提供了很好的支持。 Pandas的名稱來自于面板數(shù)據(jù)(panel data)和python數(shù)據(jù)分析(data analysis)。panel data是經濟學中關于多維數(shù)據(jù)集的一個術語,在Pandas中也提供了panel的數(shù)據(jù)類型。
數(shù)據(jù)結構
Series:一維數(shù)組,與Numpy中的一維array類似。二者與Python基本的數(shù)據(jù)結構List也很相近,其區(qū)別是:List中的元素可以是不同的數(shù)據(jù)類型,而Array和Series中則只允許存儲相同的數(shù)據(jù)類型,這樣可以更有效的使用內存,提高運算效率。
Time- Series:以時間為索引的Series。
DataFrame:二維的表格型數(shù)據(jù)結構。很多功能與R中的data.frame類似??梢詫ataFrame理解為Series的容器。以下的內容主要以DataFrame為主。
Panel :三維的數(shù)組,可以理解為DataFrame的容器。
終端輸入
Jupyter Notebook
導入相關模塊
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
Series
Series是一種類似于一維數(shù)組的對象,它由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關的數(shù)據(jù)標簽(即索引)組成。

實質上是創(chuàng)建了一個 Series 對象,這也就說明了為什么會有index和values.

Series自定義索引

Series自定義索引的另一種方法

在這里就引入另一個概念“自動對齊”。自定義的索引會自動去尋找原來的索引,如果一樣的,就取出原來索引對應的值。

在 Pandas 中,如果沒有值,都對齊賦給 NaN。
當然上面的代碼也可以寫成這樣

Series判斷值是否為空

DataFrame
一個Datarame表示一個表格,類似電子表格的數(shù)據(jù)結構,包含一個經過排序的列表集,它們沒一個都可以有不同的類型值(數(shù)字,字符串,布爾等等)。Datarame有行和列的索引;它可以被看作是一個Series的字典(每個Series共享一個索引)。
構建DataFrame最常用的方法——直接傳入一個由等長列表或NumPy數(shù)組組成的字典

如果指定了列序列,則DataFrame的列就會按照指定的順序進行排列

如果傳入的列在數(shù)據(jù)中找不到,就會產生NAN值

通過行、列進行獲取
通過類似字典標記的方式或屬性的方式,可以將DataFream的列獲取為一個Series:
同理行也可以通過位置或名稱的方式進行獲取

基本功能
重新索引
Series的reindex將會根據(jù)新索引進行,如果某個索引值當前不存在,就引入缺失值

- reindex的method選項
- ffill或pad 向前填充值
- bfill或backfill 向后填充值
對于DataFrame,reindex可以修改行、列或者兩個都可以修改。如果僅傳入一個序列,則會重新索引行

- reindex函數(shù)的參數(shù)
| 參數(shù) | 說明 |
|---|---|
| index | 用作索引的新序列。既可以是index實例,也可以是其他序列型python數(shù)據(jù)結構 |
| method | 插值方式 |
| fill_value | 在重新索引過程中,需要引入缺失值時使用的代替值 |
| limit | 前向或后向填充時的最大填充量 |
| level | 在Multilndex的指定級別上匹配簡單索引,否則選取其子集 |
| copy | 默認為true,無論如何都復制;如果為false,則新舊相等就不復制 |
索引、選取和過濾
| 類型 | 說明 |
|---|---|
| obj[val] | 選取DataFrame的單個列或一組列。在一些特殊的情況下會比較便利:布爾型數(shù)組(過濾行) |
| obj.ix[val] | 選取DataFrame的單個行或一組行 |
| obj.ix[:,val] | 選取單個列或列子集 |
| obj.ix[val1,val2] | 同時選取行和列 |
| reindex方法 | 將一個或多個軸匹配到新索引 |
| xs方法 | 根據(jù)標簽選取單行或單列,并返回一個Series |
| icol、irow方法 | 根據(jù)整數(shù)位置選取單行或單列,并返回一個Series |
| get_value、set_value方法 | 根據(jù)行標簽或列標簽選取單個值 |