http://pandas.pydata.org/pandas-docs/stable/api.html
目錄
- 一、pandas簡介
- 二、Pandas庫的Series類型
- 三、pandas庫的DataFrame類型
- 四、pandas庫的數據類型操作
- 五、pandas庫的數據類型運算
- 六、pandas的數據特征分析
一、pandas簡介:
Pandas庫:python的第三方庫,提供高性能數據類型和分析工具。
簡單說就是,便於操作的數據類型,很多的分析函數和分析工具;
Pandas的引用: import pandas as pd;
Pandas 庫主要的兩個數據類型:Series,DataFrame;
Series:相當於一維的數據類型
DataFrame:相當於二維到多維的數據類型
基於上述數據類型的各類操作:
基本操作,運算操作,特征類操作,關聯類操作
Numpy pandas比較:
提供基礎數據類型ndarray |
拓展數據類型:Series 與 DataFrame |
關注數據的結構表達 |
關注數據的應用表達 |
體現維度:數據間關系 |
應用表達體現在數據與索引間的關系 |
二、Pandas庫的Series類型:
Series類型由一組數據及與之相關的數據索引組成,每個數據對應一個索引,可以自定義索引,還有一個默認索引從0開始。
一、Series類型的創建:函數pd.Series(a,index)
1、 python列表創建:
S=pd.Series( a ,index=[ ] )
a為python列表,index不可省略,len(a)==len(index) ;
2、從標量值創建:
S=pd.Series(a , index)
a為標量,index不可省略;index表達Series類型的尺寸。
3、python字典創建
S=pd.Series(a,index)
a為python字典;a中的key是索引;
如果index不省略,則從dic中挑選出其key在index列表中的鍵值對組成一個Series,如果index中沒有元素與dic中的key對應,則該索引所對應的值為None
4、從ndarray類型創建:導入numpy與pandas
S=pd.Series(a,index)
a是ndarray類型,index 也可是ndarray類型
5、通過其他函數,如arange() 函數創建
二、Series類型的基本操作
1、Series類型包括index和values兩部分。
S=nd.Series()
S.index 獲得索引 返回一個索引類型
S.values 獲得數據 返回一個numpy庫的array類型
索引可以使用默認所以,或自定義索引,但兩者不可以混合使用。
2、Seriesd類型的操作類似ndarray類型
a) 采用 [ ] 進行索引
b) numpy中運算和操作可用於Series。
c) 可以通過自定義索引的列表進行切片。
d) 可以通過自動索引進行切片,如果存在自定義索引,則一同被切片。
3、Series類型的操作類似Python字典類型
a) 通過自定義索引訪問
b) 保留字in操作 //key in dic 判斷key在不在dic的鍵中。返回True/False
c) 使用.get( index, a )方法 //返回index對應的值,如果不存在則返回a
4、Series類型對齊操作:Series+Series
索引值相同的值進行運算,索引值不同的值不進行運算,即值等於NaN
5、Series類型的name屬性:
Series對象和索引都有一個name屬性,存儲在.name屬性;
即Series.name 與 Series.index.name 可直接賦值修改。
6、Series類型的修改
Series對象可以隨時修改並即刻生效
三、理解Series類型:
Series是一維帶“標簽”數組。
Series基本操作類似ndarray和字典,根據索引對齊。
三、pandas庫的DataFrame類型
DataFrame類型由共用相同索引的一組列組成。(例一個學號可對應一個學生的姓名,專業,年齡等)
DataFrame是一個表格型的數據類型,每列值類型可以相同也可不同
DataFrame既有行索引也有列索引,既一個帶標簽的二(多)維數據類型。
DataFrame常用於表達二維數據,但可以表達多維數據。
1、DataFrame類型的創建:
a) 從二維ndarray對象創建:
d=pd.DataFrame( a )
其中a為ndarray對象,自動生成
b) 有一維ndarrray對象字典創建:
d=pd.DataFrame( )
c) 從列表類型的字典創建
四、pandas庫的數據類型操作
1、改變Series和DataFrame對象(增加、重排索引或刪除部分值)
a) 重新索引
.reindex(index=None,columns=Nonem....)
參數 | 說明 |
index,columns | 新的行列自定義索引 |
fill_value | 重新索引中,用於填充缺失位置的值 |
method | 填充方法,ffill當前值向前填充 |
limit | 最大填充量 |
copy | 默認True,生成新的對象,False,新舊相等不賦值 |
b) 索引類型的常用方法
方法 | 說明 |
.append(idx) | 連接另一個index對象,產生新的Index對象 |
.diff(idx) | 計算差集,產生新的Index對象 |
.interesection(idx) | 計算交集 |
.union(idx) | 計算並集 |
.delete(loc) | 刪除loc位置處的元素 |
.insert( loc,e ) | 在loc位置增加一個元素 |
c) 刪除指定索引對象
.drop()能夠刪除Series和DataFrame指定行或列索引
五、pandas庫的數據類型運算
1、算術運算法則
算術運算根據行列索引,補齊后運算(相同索引才進行運算),運算默認產生浮點數。
補齊時缺項填充NaN(空值)
二維和一維、一維和零維間為廣播運算。
采用 + - * / 符號進行的二元運算會產生新的對象
2、 四則法則運算方法形式(除了用+-*/,還可用其方法)
.add( d, **argws ) | 類型間加法運算,可選參數 |
.sub( d, **argws) | 類型間減法運算,可選參數 |
.mul( d, **argws) | 類型間的乘法運算,可選參數 |
.div(d, **argws) | 類型間除法運算,可選參數 |
六、pandas的數據特征分析
1、數據的排序
a) .sort_index()方法:在指定軸上根據索引進行排序,默認升序。
.sort_index(axis=0, ascending=True )
b) .sort_values()方法:在指定軸上根據數值進行排序,默認升序。
Series.sort_values(axis=0, ascending=True)
Series.sort_values( by ,axis=0, ascending=True ) by:axis軸上的某個索引或索引列表。
注意:NaN值統一放在最后面
2、數據的基本統計分析
a) 基本的統計分析函數(適用於Series和DataFrame類型)
方法 | 說明 |
.sum() | 計算數據的總和,按0軸 |
.count() | 非NaN值的數量 |
.mean() .median() | 計算數據的算術平均值、算術中位數 |
.var() .std() | 計算數據的方差、標准差 |
.min() .max() | 計算數據的最小值、最大值 |
.argmin() .argmax() | 計算數據最大值、最小值所在位置的索引位置(自動索引) |
.idxmin() .idxmax() | 計算數據最大值、最小值所在位置的索引(自定義索引) |
.describe() | 針對(0軸)各列的統計匯總,返回一個Series類型,其中有sum,median 等 |
3、數據的累計統計分析
數據的累計統計分析:對前 1 - n 個數進行累計運算
a) 累計統計分析函數:適用於Series和DataFrame類型
方法 | 說明 |
.cumsum() | 依次給出前1、2、...、n個數的和 |
.cumprod() | 依次給出前1、2、...、n個數的積 |
.cummax() | 依次給出前1、2、...、n個數的最大值 |
.cummin() | 依次給出前1、2、...、n個數的最小值 |
b) 適用於Series和DataFrame類型,滾動計算窗口(窗口計算)
方法 | 說明 |
.rolling(w).sum() |
依次計算相鄰w個元素的和 |
.rolling(w).mean() |
依次計算相鄰w個元素的算術平均值 |
.rolling(w).var() |
依次計算相鄰w個元素的方差 |
.rolling(w).std() | 依次計算相鄰w個元素的標准差 |
.rolling(w).min() /.rolling(w).max() | 依次計算相鄰w個元素的最大值和最小值 |
4、數據的相關分析
兩個變量相關性度量:協方差(相對不精確),Pearson相關系數:
相關分析函數:
方法 | 說明 |
.cov() | 計算協方差矩陣 |
.corr() | 計算相關系數矩陣,Pearson、Spearman、Kendall等系數 |