非常全面的Pandas入門教程

2022-06-23 17:45:11 字數 3322 閱讀 9108

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

如何安裝pandas

如何匯入pandas庫和查詢相應的版本資訊

pandas資料型別

series教程

dataframe教程

小結最常用的方法是通過anaconda安裝,在終端或命令符輸入如下命令安裝:

conda install pandas
若未安裝anaconda,使用python自帶的包管理工具pip來安裝:

pip install pandas

import numpy as np   #

pandas和numpy常常結合在一起使用,匯入numpy庫

import pandas as pd #

匯入pandas庫

print(pd.__version__) #

列印pandas版本資訊

#> 0.23.4

pandas包含兩種資料型別:series和dataframe。

series是一種一維資料結構,每一個元素都帶有一個索引,與一維陣列的含義相似,其中索引可以為數字或字串。series結構名稱:

|索引列|資料列

dataframe是一種二維資料結構,資料以**形式(與excel類似)儲存,有對應的行和列。dataframe結構名稱:

如何從列表,陣列,字典構建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 1c 2d 4e 3dtype: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()

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

1b2c

3e4d

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 3dtype: 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 8dtype: int64