0| 引言
Pandas是基於NumPy的一種工具,該工具是為了解決資料分析任務而建立的。
Pandas納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。
Pandas提供了大量能使我們快速便捷地處理資料的函式和方法。
1| 建立Series
Series是Pandas中最基本的物件,Series類似一種一維陣列。
事實上,Series基本上就是基於NumPy的陣列物件來的。
和NumPy的陣列不同,Series能為資料自定義標籤,也就是索引(index),然後透過索引來訪問陣列中的資料。
import pandas as pdimport numpy as nps1 = pd。Series([4,7,-3,0])print(s1)
圖 1 Series示例
s1.values : 檢視series的值
s1.index : 檢視series的索引值
s1。valuess1。index
圖2 檢視values和index
s2 = pd。Series([4。0, 6。5, -0。5, 3],index= [‘d’,‘c’,‘b’,‘a’])print(s2)
圖3 s2示例
根據索引取值:
s2[‘b’]s2[[‘a’,‘b’,‘c’]]
圖4 根據索引取值
圖5 檢視索引序列是否在s2陣列中
2| 建立DataFrame
DataFrame是一個二維的表結構。Pandas的DataFrame可以儲存許多種不同的資料型別,
並且每一個座標軸都有自己的標籤。你可以把它想象成一個series的字典項。
# DataFramedata ={‘year’:[2013,2015,2016,2017], ‘income’:[1000, 2000,3000,4000], ‘pay’:[5000, 10000, 20000,30000] } # 以列排列df1=pd。DataFrame(data)df1
圖6 DataFrame示例
DataFrame的屬性
df1。columns :檢視列元素
df1。index :檢視索引
df1。values :檢視所有元素
df1。describe:檢視描述屬性
圖7 檢視DataFrame的columns,index,values屬性
describe(): 可以檢視mean(), std(), min(), 四分之一分位,二分之一分位,四分之三分位,max()
圖8 檢視describe屬性
df3 =pd。DataFrame(np。arange(12)。reshape((3,4)),index=[‘a’,‘c’,‘b’],columns=[2,33,44,5])df3
圖8 示例
# 以列索引升序排列df3。sort_index(axis=1)
圖9 列索引排序
# 以行索引升序排列df3。sort_index(axis=0)
圖 10 行索引排序
# 以某值所對應的索引值進行排序df3。sort_values(by=44)
圖 11 以某值所對應的索引值進行排序
3| Pandas的資料選擇
import pandas as pd import numpy as npdates = pd。date_range(‘20170101’,periods=6)df1 = pd。DataFrame(np。arange(24)。reshape((6,4)),index=dates, columns =[‘A’,‘B’,‘C’,‘D’])df1
圖12 示例
檢視DataFrame的列Series
df1[‘A’] =df1。A
圖 13
檢視前兩行:
圖14 檢視前兩行
以索引名選取:
圖15 以索引名選取
行索引:
圖16 行索引
透過位置【行與列】選擇資料
圖17 透過位置索引
混合標籤位置選擇
圖18 混合標籤索引
4 | Pandas的賦值與操作
import pandas as pd import numpy as npdates = np。arange(20201001,20201007)df1 =pd。DataFrame(np。arange(24)。reshape((6,4)),index=dates, columns=[‘A’,‘B’,‘C’,‘D’])df1
圖 19 示例
利用位置賦值
df1。iloc[2,2]
圖 20 檢視位置
df1。iloc[2,2] =100df1
圖 21 賦值
利用標籤賦值
圖 22 利用位置賦值
利用邏輯語句賦值
圖 23 利用邏輯語句賦值1
圖24 利用邏輯語句 賦值2
新增一列:
圖 25 新增一列 1
圖 26 新增一列2
新增一行
圖 27 新增一行1
圖 28 新增一行2
插入列
圖29 將df2的E列元素,插入第2列的G標籤的列
g = df1。pop(‘G’)df1。insert(6,‘G’,g)df1
圖 30 將g插入第7列的“G”列
刪除 列
圖 31 刪除列
圖 32 刪除“A”,“B”列
圖 33 刪除前兩行
5 | Pandas 處理預設值
import pandas as pd import numpy as npdates = np。arange(20201001,20201007)df1 = pd。DataFrame(np。arange(18)。reshape((6,3)),index=dates, columns=[‘A’,‘B’,‘C’])df1
圖 34 示例
df2 = pd。DataFrame(df1,index=dates, columns=[‘A’,‘B’,‘C’,‘D’,‘E’])df2
圖 35 生成預設陣列 1
圖 36 生成預設陣列 2
去除空值的行:
# 去除空值的行df2。dropna(axis=0, how=‘any’) #axis =[0,1] 0表示行,列表示列。 how=[‘any’,‘all’] any:表示任意一個NaN all:表示全部為NaN
圖 37 去除空值的行1
圖 38 去除空值的行 2
將空值全部賦值為0:
圖 39 去除空值並賦值為0
檢視空值
圖 40 檢視空值1
6|Pandas 合併
import pandas as pdimport numpy as npdf1 = pd。DataFrame(np。arange(12)。reshape((3,4)),columns=[‘A’,‘B’,‘C’,‘D’])df2 = pd。DataFrame(np。arange(12,24)。reshape((3,4)),columns=[‘A’,‘B’,‘C’,‘D’])df3 = pd。DataFrame(np。arange(24,36)。reshape((3,4)),columns=[‘A’,‘B’,‘C’,‘D’])print(df1)print(‘**__________**’)print(df2)print(‘**__________**’)print(df3)
圖 41 示例
縱向合併:
圖42 縱向合併
縱向合併,不考慮原來的jndex
圖43 縱向合併,不考慮原來的jndex
橫向合併,不考慮原來的index
圖44 橫向合併,不考慮原來的index
生成兩個表:
圖 45 生成兩個表
圖 46 合併兩個表,缺少部分用NaN填充
圖 47 合併兩個表, 缺少部分去掉
圖 48 橫向合併
圖 49 預設合併