Pandas庫的引用
Pandas是Python第三方庫,提供高性能易用數(shù)據(jù)類型和分析工具
Pandas基于NumPy實現(xiàn),常與NumPy和Matplotlib一同使用
import pandas as pd
Pandas庫的理解
兩個數(shù)據(jù)類型:Series, DataFrame
基于上述數(shù)據(jù)類型的各類操作:基本操作、運算操作、特征類操作、關聯(lián)類操作
| Numpy | Pandas |
|---|---|
| 基礎數(shù)據(jù)類型 | 擴展數(shù)據(jù)類型 |
| 關注數(shù)據(jù)的結構表達 | 關注數(shù)據(jù)的應用表達 |
| 維度:數(shù)據(jù)間關系 | 數(shù)據(jù)與索引間關系 |
Pandas庫的Series類型
Series類型由一組數(shù)據(jù)及與之相關的數(shù)據(jù)索引組成

Series類型可以由如下類型創(chuàng)建:
- Python列表,index與列表元素個數(shù)一致
- 標量值,index表達Series類型的尺寸
- Python字典,鍵值對中的“鍵”是索引,index從字典中進行選擇操作
- ndarray,索引和數(shù)據(jù)都可以通過ndarray類型創(chuàng)建
- 其他函數(shù),range()函數(shù)等
舉例:
s = pd.Series( [9, 8, 7, 6] )#自動索引
s = pd.Series( [9, 8, 7, 6], index=['a', 'b', 'c', 'd'] )#自定義索引
s = pd.Series(25, index=['a', 'b', 'c', 'd'] )#從標量值創(chuàng)建不能省略index
s = pd.Series( {'a':9, 'b':8, 'c':7} )
s = pd.Series( {'a':9, 'b':8, 'c':7}, index=['c', 'a', 'b', 'd'] )
s = pd.Series(np.arange(5))
s = pd.Series(np.arange(5), index = np.arange(9, 4, 1))
Series類型的基本操作
Series類型包括index和values兩部分,.index 獲得索引, .values 獲得數(shù)據(jù)。自動索引和自定義索引并存,但不能混用。
Series類型的操作類似ndarray類型
- 索引方法相同,采用[]
- NumPy中運算和操作可用于Series類型
- 可以通過自定義索引的列表進行切片
- 可以通過自動索引進行切片,如果存在自定義索引,則一同被切片
Series類型的操作類似Python字典類型
- 通過自定義索引訪問
- 保留字in操作
- 使用.get()方法
Series類型的對齊操作
Series + Series
Series類型在運算中會自動對齊不同索引的數(shù)據(jù)。沒有相同索引處是NaN.
Series類型的name屬性
Series對象和索引都可以有一個名字,存儲在屬性.name中。
.name 和 .index.name
Pandas庫的DataFrame類型
DataFrame類型由共用相同索引的一組列組成


DataFrame是一個表格型的數(shù)據(jù)類型,每列值類型可以不同
DataFrame既有行索引、也有列索引
DataFrame常用于表達二維數(shù)據(jù),但可以表達多維數(shù)據(jù)
DataFrame類型可以由如下類型創(chuàng)建:
- 二維ndarray對象
- 由一維ndarray、列表、字典、元組或Series構成的字典
- Series類型
- 其他的DataFrame類型
實例:
d = pd.DataFrame(np.arange(10).reshape(2, 5))#兩行五列
dt = { 'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
{'two' : pd.Series([9, 8, 7, 6], index=['a', 'b', 'c', 'd'])}
d = pd.DataFrame(dt)#四行兩列
dl = {'one' : [1, 2, 3, 4], 'two' : [9, 8, 7, 6]}
d = pd.DataFrame(dl, index = ['a', 'b', 'c', 'd'])
列索引:d[]
行索引:d.ix[]
行列索引:d[column][index]
Pandas庫的數(shù)據(jù)類型操作
重新索引
.reindex()能夠改變或重排Series和DataFrame索引
d = d.reindex(index=[], column=[])
.reindex(index=None, column=None, ...)的參數(shù):
| 參數(shù) | 說明 |
|---|---|
| index, columns | 新的行列自定義索引 |
| fill_value | 重新索引中,用于填充缺失位置的值 |
| method | 填充方法, ffill當前值向前填充,bfill向后填充 |
| limit | 最大填充量 |
| copy | 默認True,生成新的對象,F(xiàn)alse時,新舊相等不復制 |
索引類型
Series和DataFrame的索引是Index類型
Index對象是不可修改類型
索引類型的常用方法:
| 方法 | 說明 |
|---|---|
| .append(idx) | 連接另一個Index對象,產生新的Index對象 |
| .diff(idx) | 計算差集,產生新的Index對象 |
| .intersection(idx) | 計算交集 |
| .union(idx) | 計算并集 |
| .delete(loc) | 刪除loc位置處的元素 |
| .insert(loc,e) | 在loc位置增加一個元素e |
刪除指定索引對象:
.drop(loc, axis=0) 刪除Series和DataFrame指定行或列索引
默認刪除行索引,如要刪除列索引,需指定axis=1
Pandas庫的數(shù)據(jù)類型運算
算術運算法則
算術運算根據(jù)行列索引,補齊后運算,運算默認產生浮點數(shù)。
補齊時缺項填充NaN (空值)。
二維和一維、一維和零維間為廣播運算。一維Series默認在軸1參與運算,使用運算方法可以令一維Series參與軸0運算。
采用+ ‐ * /符號進行的二元運算產生新的對象。
方法形式的運算:
| 方法 | 說明 |
|---|---|
| .add(d, **argws) | 類型間加法運算,可選參數(shù) |
| .sub(d, **argws) | 類型間減法運算,可選參數(shù) |
| .mul(d, **argws) | 類型間乘法運算,可選參數(shù) |
| .div(d, **argws) | 類型間除法運算,可選參數(shù) |
比較運算法則
比較運算只能比較相同索引的元素,不進行補齊。
同維度運算,尺寸一致。
二維和一維、一維和零維間為廣播運算,默認在1軸。
采用> < >= <= == !=等符號進行的二元運算產生布爾對象。
Reference:
中國大學MOOC北京理工大學Python數(shù)據(jù)分析與展示課程嵩天老師課件
課程主頁