1. 程式人生 > 實用技巧 >非常全面的Pandas入門教程

非常全面的Pandas入門教程

原始文章

pandas是基於NumPy的一種資料分析工具,在機器學習任務中,我們首先需要對資料進行清洗和編輯等工作,pandas庫大大簡化了我們的工作量,熟練並掌握pandas常規用法是正確構建機器學習模型的第一步。

目錄

  1. 如何安裝pandas
  2. 如何匯入pandas庫和查詢相應的版本資訊
  3. pandas資料型別
  4. series教程
  5. dataframe教程
  6. 小結

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教程

  1. 如何從列表,陣列,字典構建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
  1. 如何使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
  1. 如何結合多個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
  1. 如何命名列索引的名稱

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
  1. 如何獲得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
  1. 如何獲得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