1、Pandas庫入門算法
1. Pandas庫的介紹數組
Pandas是Python第三方庫,提供高性能易用數據類型和分析工具函數
import pandas as pd
Pandas基於NumPy實現,常與NumPy和Matplotlib一同使用工具
兩個數據類型:Series, DataFrame性能
基於上述數據類型的各種操做:基本操做、運算操做、特徵類操做、關聯類操做.net
NumPy Pandas
基礎數據類型 擴展數據類型3d
關注數據的結構表達 關注數據的應用表達
維度:數據間關係 數據與索引間關係對象
2. Pandas的Series類型排序
Series類型由一組數據及與之相關的數據索引組成
數據 索引
index_0 data_a
index_1 data_b
index_2 data_c
index_3 data_d
自定義索引,做爲第二個參數,能夠省略index=
Series類型能夠由以下類型建立:
• Python列表
• 標量值
• Python字典
• ndarray
• 其餘函數
(1)從標量值建立,不能省略index
(2)從字典類型建立,還能夠從字典中進行選擇操做
(3)從ndarray類型建立
Series類型能夠由以下類型建立:
• Python列表,index與列表元素個數一致
• 標量值,index表達Series類型的尺寸
• Python字典,鍵值對中的「鍵」是索引,index從字典中進行選擇操做
• ndarray,索引和數據均可以經過ndarray類型建立
• 其餘函數,range()函數等
Series類型的基本操做
Series類型包括index和values兩部分
Series類型的操做相似ndarray類型
Series類型的操做相似Python字典類型
自動索引和自定義索引並存,但不能混用。
Series類型的操做相似ndarray類型:
• 索引方法相同,採用[]
• NumPy中運算和操做可用於Series類型
• 能夠經過自定義索引的列表進行切片
• 能夠經過自動索引進行切片,若是存在自定義索引,則一同被切片
Series類型的操做相似Python字典類型:
• 經過自定義索引訪問
• 保留字in操做,對索引進行操做
• 使用.get()方法,取某個索引的值,若是沒有,則賦給定的值。
Series類型在運算中會自動對齊不一樣索引的數據,若是對應不上,則爲空。
Series對象和索引均可以有一個名字,存儲在屬性.name中
Series對象能夠隨時修改並即刻生效
Series是一維帶「標籤」數組
index_0 → data_a
Series基本操做相似ndarray和字典,根據索引對齊
3. Pandas庫的DataFrame類型
DataFrame類型由共用相同索引的一組列組成
索引 多列數據
index_0 → data_a data_1 ... data_w
index_1 → data_b data_2 ... data_y
index_2 → data_c data_3 ... data_x
index_3 → data_d data_4 ... data_z
index axis=0
column axis=1
DataFrame是一個表格型的數據類型,每列值類型能夠不一樣
DataFrame既有行索引、也有列索引
DataFrame經常使用於表達二維數據,但能夠表達多維數據
DataFrame類型能夠由以下類型建立:
• 二維ndarray對象
• 由一維ndarray、列表、字典、元組或Series構成的字典
• Series類型
• 其餘的DataFrame類型
(1)從二維ndarray對象建立
(2)從一維ndarray對象字典建立
(3)從列表類型的字典建立
DataFrame是二維帶「標籤」數組,DataFrame基本操做相似Series,依據行列索引
4. Pandas庫的數據類型操做
如何改變Series和DataFrame對象?
增長或重排:從新索引
刪除:drop
.reindex()可以改變或重排Series和DataFrame索引
.reindex(index=None, columns=None, …)的參數
參數 說明
index, columns 新的行列自定義索引
fill_value 從新索引中,用於填充缺失位置的值
method 填充方法, ffill當前值向前填充,bfill向後填充
limit 最大填充量
copy 默認True,生成新的對象,False時,新舊相等不復制
Series和DataFrame的索引是Index類型,Index對象是不可修改類型
索引類型的經常使用方法
方法 說明
.append(idx) 鏈接另外一個Index對象,產生新的Index對象
.diff(idx) 計算差集,產生新的Index對象
.intersection(idx) 計算交集
.union(idx) 計算並集
.delete(loc) 刪除loc位置處的元素
.insert(loc,e) 在loc位置增長一個元素e
.drop()可以刪除Series和DataFrame指定行或列索引
5. Pandas庫的數據類型運算
(1)算術運算法則:
算術運算根據行列索引,補齊後運算,運算默認產生浮點數
補齊時缺項填充NaN (空值)
二維和一維、一維和零維間爲廣播運算
採用+ ‐ * /符號進行的二元運算產生新的對象
方法形式的運算
方法 說明
.add(d, **argws) 類型間加法運算,可選參數
.sub(d, **argws) 類型間減法運算,可選參數
.mul(d, **argws) 類型間乘法運算,可選參數
.div(d, **argws) 類型間除法運算,可選參數
使用運算方法能夠令一維Series參與軸0運算
(2)比較運算法則
比較運算只能比較相同索引的元素,不進行補齊
二維和一維、一維和零維間爲廣播運算
採用> < >= <= == !=等符號進行的二元運算產生布爾對象
同維度運算,尺寸一致:
不一樣維度,廣播運算,默認在1軸
2、Pandas數據特徵分析
1. 數據的排序
一組數據表達一個或多個含義
摘要(數據造成有損特徵的過程)
基本統計(含排序)
分佈/累計統計
數據特徵
相關性、週期性等
數據挖掘(造成知識)
.sort_index()方法在指定軸上根據索引進行排序,默認升序
.sort_index(axis=0, ascending=True)
.sort_index(axis=0, ascending=True)
.sort_values()方法在指定軸上根據數值進行排序,默認升序
Series.sort_values(axis=0, ascending=True)
DataFrame.sort_values(by, axis=0, ascending=True)
by : axis軸上的某個索引或索引列表
NaN統一放到排序末尾
2. 數據的基本統計分析
基本的統計分析函數:適用於Series和DataFrame類型
方法 說明
.sum() 計算數據的總和,按0軸計算,下同
.count() 非NaN值的數量
.mean() .median() 計算數據的算術平均值、算術中位數
.var() .std() 計算數據的方差、標準差
.min() .max() 計算數據的最小值、最大值
.describe() 針對0軸(各列)的統計彙總
適用於Series類型
方法 說明
.argmin() .argmax() 計算數據最大值、最小值所在位置的索引位置(自動索引)
.idxmin() .idxmax() 計算數據最大值、最小值所在位置的索引(自定義索引)
3. 累計統計分析函數
適用於Series和DataFrame類型,累計計算
方法 說明
.cumsum() 依次給出前一、二、…、n個數的和
.cumprod() 依次給出前一、二、…、n個數的積
.cummax() 依次給出前一、二、…、n個數的最大值
.cummin() 依次給出前一、二、…、n個數的最小值
適用於Series和DataFrame類型,滾動計算(窗口計算)
方法 說明
.rolling(w).sum() 依次計算相鄰w個元素的和
.rolling(w).mean() 依次計算相鄰w個元素的算術平均值
.rolling(w).var() 依次計算相鄰w個元素的方差
.rolling(w).std() 依次計算相鄰w個元素的標準差
.rolling(w).min() .max() 依次計算相鄰w個元素的最小值和最大值
4. 數據的相關分析
兩個事物,表示爲X和Y,如何判斷它們之間的存在相關性?
相關性
• X增大,Y增大,兩個變量正相關
• X增大,Y減少,兩個變量負相關
• X增大,Y無視,兩個變量不相關
(1)協相關
• 協方差>0, X和Y正相關
• 協方差<0, X和Y負相關
• 協方差=0, X和Y獨立無關
(2)Pearson相關係數
r取值範圍[‐1,1]
• 0.8‐1.0 極強相關
• 0.6‐0.8 強相關
• 0.4‐0.6 中等程度相關
• 0.2‐0.4 弱相關
• 0.0‐0.2 極弱相關或無相關
適用於Series和DataFrame類型
方法說明
.cov() 計算協方差矩陣
.corr() 計算相關係數矩陣, Pearson、Spearman、Kendall等係數