Pandas基礎
Pandas的名稱來自于面闆資料(panel data)和Python資料分析(data analysis)。
Pandas是一個強大的分析結構化資料的工具集,基于NumPy建構,提供了進階資料結構和資料操作工具,它是使Python成為強大而高效的資料分析環境的重要因素之一。
Pandas特點:
1.一個強大的分析和操作大型結構化資料集所需的工具集
2.基礎是NumPy,提供了高性能矩陣的運算
3.提供了大量能夠快速便捷地處理資料的函數和方法
4.應用于資料挖掘,資料分析
5.提供資料清洗功能
Pandas的資料結構:
import pandas as pd
Pandas有兩個最主要也是最重要的資料結構: Series 和 DataFrame
Pandas中使用頻率較低的一種資料結構:Panel(Pandas 決定在未來的版本中将 Panel 移除,轉而使用 MultiIndex DataFrame 來表示多元資料結構)
Pandas的對齊運算:
是資料清洗的重要過程,可以按索引對齊進行運算,如果沒對齊的位置則補NaN,最後也可以填充NaN
一、Series資料結構(一維資料)
1、簡要介紹:
(1)Series是一種類似于一維數組的對象,由一組資料(各種NumPy資料類型)以及一組與之對應的索引(資料标簽)組成。
(2)類似一維數組的對象,由資料和索引組成(索引(index)在左,資料(values)在右,索引是自動建立的)
(3)Series 是 Pandas 中最基本的一維資料形式。其可以儲存整數、浮點數、字元串等形式的資料。Series 的建立方法如下:s = pandas.Series(data, index=index);其中,data 可以是字典、numpy 裡的 ndarray 對象等。index 是資料索引,索引是 pandas 資料結構中的一大特性,它主要的功能是幫助我們更快速地定位資料。
2、通過字典(dict)建構Series
資料值是 10, 20, 30,索引為 a, b, c 。
我們也可以直接通過 index= 參數來設定新的索引,如下
pandas 會自動比對人為設定的索引值和字典轉換過來的索引值。而當索引無對應值時,會顯示為 NaN 缺失值。
3、通過ndarray建構Series
ndarray 是著名數值計算包 numpy 中的多元數組。我們也可以将 ndarray 直接轉換為 Series。
(1)指定了 index 的值
(2)非人為指定索引值時,Pandas 會預設從 0 開始設定索引值。
(3)從一維資料 Series 中傳回某一個值時,可以直接通過索引完成
(4)對Series 直接進行運算
(5)Series的對齊運算
注意:填充未對齊的資料進行運算
使用add, sub, div, mul的同時,通過fill_value指定填充值,未對齊的資料将和填充值做運算
示例代碼:print(s1)
print(s2)
s1.add(s2, fill_value = -1)
二、DataFrame資料結構(二維資料)
1、簡要介紹
(1)DataFrame是一個表格型的資料結構,它含有一組有序的列,每列可以是不同類型的值。DataFrame既有行索引也有列索引,它可以被看做是由Series組成的字典(共用同一個索引),資料是以二維結構存放的。
(2)特點:類似多元數組/表格資料 (如,excel, R中的data.frame);每列資料可以是不同的類型;索引包括列索引和行索引
(3)DataFrame 可以用于儲存多種類型的輸入:
- 一維數組、清單、字典或者 Series 字典。
- 二維 numpy.ndarray。
- 結構化的 ndarray。
- 一個 Series。
- 另一個 DataFrame。
2、通過字典(dict)建構DataFrame
(1)通過Series的字典建構DataFrame
行索引為 a, b, c, d ,而列索引為 one, two
(2)通過ndarray或list的字典建構DataFrame
3、通過帶字典的清單建構DataFrame
4、DataFrame.from_ 方法
pandas的 DataFrame 下面還有 4 個以 from_ 開頭的方法,這也可以用來建立 Dataframe。
5、DataFrame中列的選擇、删除和添加
在一維資料結構Series中,我們用 df['标簽']來選擇行。在二維資料DataFrame中,df['标簽']表示選擇列。
6、DataFrame的對齊運算
三、Panel資料結構(三維資料)
(1)Panel是Pandas中使用頻率較低的一種資料結構,但它是三維資料的重要容器。
(2)Panel data又稱面闆資料,它是計量經濟學中派生出來的一個概念。在計量經濟學中,資料大緻可分為三類:截面資料,時間序列資料,面闆資料。而面闆資料即是截面資料與時間序列資料綜合起來的一種資料類型。
簡單來講,截面資料指在某一時間點收集的不同對象的資料。而時間序列資料是指同一對象在不同時間點所對應的資料集合。
這裡引用一個城市和 GDP 關系的示例來解釋上面的三個概念:
截面資料:
- 例如城市:北京、上海、重慶、天津在某一年的 GDP 分别為10、11、9、8(機關億元)。
時間序列資料:
- 例如:2000、2001、2002、2003、2004 各年的北京市 GDP 分别為8、9、10、11、12(機關億元)。
面闆資料:
- 2000、2001、2002、2003、2004 各年中國所有直轄市的 GDP 分别為(機關億元):北京市分别為 8、9、10、11、12;上海市分别為 9、10、11、12、13;天津市分别為 5、6、7、8、9;重慶市分别為 7、8、9、10、11。
(3)Panel 構成
在 Pandas 中,Panel 主要由三個要素構成:
- items: 每個項目(item)對應于内部包含的 DataFrame。
- major_axis: 每個 DataFrame 的索引(行)。
- minor_axis: 每個 DataFrame 的索引列。
簡言之,在 Pandas 中,一個 Panel由多個 DataFrame 組成。
2、生成一個Panel
可以看到,wp 由 2 個項目、5個主要軸和4個次要軸組成。其中,主要軸由2000-01-01 到2000-01-05這5天組成的時間序列,次軸從A到D。
3、由于 Panel 在 Pandas 中的使用頻率遠低于 Series 和 DataFrame,是以 Pandas 決定在未來的版本中将 Panel 移除,轉而使用 MultiIndex DataFrame 來表示多元資料結構。
補充:Pandas統計計算和描述
#描述和彙總的方法
count 非Nan數量
describe 針對個列彙總統計
min和max 最大最小值
argmin、argmax 計算最大值或最小值對應的索引位置
quantile 計算樣本的分位數(0-1)
mean 均值
median 中位數
mad 平均絕對離差
var 樣本方差
std 樣本的标準差
skew 樣本值的偏度
kurt 樣本值的峰度
cumsum樣本值的累計和
注:
Pandas官網:
http://pandas.pydata.org/Pandas官方文檔:
http://pandas.pydata.org/pandas-docs/stable/api.htmlPandas詳細學習教程:
https://www.yiibai.com/pandas/python_pandas_date_functionality.html