非常全面的Pandas入門教程
阿新 • • 發佈:2020-09-03
原始文章
pandas是基於NumPy的一種資料分析工具,在機器學習任務中,我們首先需要對資料進行清洗和編輯等工作,pandas庫大大簡化了我們的工作量,熟練並掌握pandas常規用法是正確構建機器學習模型的第一步。
目錄
- 如何安裝pandas
- 如何匯入pandas庫和查詢相應的版本資訊
- pandas資料型別
- series教程
- dataframe教程
- 小結
1. 如何安裝Pandas
最常用的方法是通過Anaconda安裝,在終端或命令符輸入如下命令安裝:
conda install pandas
若未安裝Anaconda,使用Python自帶的包管理工具pip來安裝:
pip install pandas
2. 如何匯入pandas庫和查詢相應的版本資訊
import numpy as np # pandas和numpy常常結合在一起使用,匯入numpy庫 import pandas as pd # 匯入pandas庫 print(pd.__version__) # 列印pandas版本資訊 #> 0.23.4
3. pandas資料型別
pandas包含兩種資料型別:series和dataframe。
series是一種一維資料結構,每一個元素都帶有一個索引,與一維陣列的含義相似,其中索引可以為數字或字串。series結構名稱:
|索引列|資料列
dataframe是一種二維資料結構,資料以表格形式(與excel類似)儲存,有對應的行和列。dataframe結構名稱:
4. series教程
- 如何從列表,陣列,字典構建series
mylist = list('abcedfghijklmnopqrstuvwxyz') # 列表 myarr = np.arange(26) # 陣列 mydict = dict(zip(mylist, myarr)) # 字典 # 構建方法 ser1 = pd.Series(mylist) ser2 = pd.Series(myarr) ser3 = pd.Series(mydict) print(ser3.head()) #列印前5個數據 #> a 0 b 1 c 2 d 4 e 3 dtype:int64
- 如何使series的索引列轉化為dataframe的列
mylist = list('abcedfghijklmnopqrstuvwxyz') myarr = np.arange(26) mydict = dict(zip(mylist, myarr)) ser = pd.Series(mydict) # series轉換為dataframe df = ser.to_frame() # 索引列轉換為dataframe的列 df.reset_index(inplace=True) print(df.head()) #> index 0 0 a 0 1 b 1 2 c 2 3 e 3 4 d 4
- 如何結合多個series組成dataframe
# 構建series1 ser1 = pd.Series(list('abcedfghijklmnopqrstuvwxyz')) # 構建series2 ser2 = pd.Series(np.arange(26)) # 方法1,axis=1表示列拼接,0表示行拼接 df = pd.concat([ser1, ser2], axis=1) # 與方法1相比,方法2設定了列名 df = pd.DataFrame({'col1': ser1, 'col2': ser2}) print(df.head()) #> col1 col2 0 a 0 1 b 1 2 c 2 3 e 3 4 d 4
-
如何命名列索引的名稱
ser = pd.Series(list('abcedfghijklmnopqrstuvwxyz')) \# 命名索引列名稱 ser.name = 'alphabets' \# 顯示前5行資料 ser.head() #> 0 a 1 b 2 c 3 e 4 d Name: alphabets, dtype: object
- 如何獲得series物件A中不包含series物件B的元素
ser1 = pd.Series([1, 2, 3, 4, 5]) ser2 = pd.Series([4, 5, 6, 7, 8]) \# 返回ser1不包含ser2的布林型series ser3=~ser1.isin(ser2) \# 獲取ser不包含ser2的元素 ser1[ser3] #> 0 1 1 2 2 3 dtype: int64
- 如何獲得seriesA和seriesB不相同的項
ser1 = pd.Series([1, 2, 3, 4, 5]) ser2 = pd.Series([4, 5, 6, 7, 8]) \# 求ser1和ser2的並集 ser_u = pd.Series(np.union1d(ser1, ser2)) # 求ser1和ser2的交集 ser_i = pd.Series(np.intersect1d(ser1, ser2)) \# ser_i在ser_u的補集就是ser1和ser2不相同的項 ser_u[~ser_u.isin(ser_i)] #> 0 1 1 2 2 3 5 6 6 7 7 8 dtype: int64