pandas對映與資料轉換

2022-06-06 05:09:13 字數 4163 閱讀 6463

在 pandas 中提供了利用對映關係來實現某些操作的函式,具體如下:

在資料處理時,經常會遇到需要將資料結構中原來的元素根據實際需求替換成新元素的情況。要想用新元素替換原來元素,就需要定義一組對映關係。在對映關係中,將舊元素作為鍵,新元素作為值。

例如,建立字典 fruits 用於指明水果標識和水果名稱的對映關係。

fruits=

如要將用於儲存水果標識、水果數量和單價的 dataframe 物件中的水果標識替換成水果名稱,就需要運用 replace() 函式,通過 fruits 對映關係來實現元素的替換。

replace() 函式的基本語法格式如下:

obj.replace(to_replace=none,value=none,inplace=false,limit=none,regex=false,method='

pad')

函式中的引數說明如下:

【例 1】利用 replace() 函式和對映關係實現將水果資料框中水果標識替換成水果名稱。

示例** test1.py 如下:

import

numpy as np

import

pandas as pd

#建立水果標識與水果名稱的對映關係

fruits =

#建立水果資料框dataframe

data = pd.dataframe()

#用對映替換fru_no列的元素

newdf =data.replace(fruits)

print

(newdf)

#輸出如下

fru_no fru_num price

0 orange 1000 3.56

2 banana 3000 2.50

replace() 函式應用的示例** example1.py 如下:

import

numpy as np

import

pandas as pd

from pandas import

series,dataframe

s = series([-1000,-999,2,3,4,5,-2000])

#單數值替換

print(s.replace(-2000,np.nan))

0 -1000.0

1 -999.0

2 2.0

3 3.0

4 4.0

5 5.0

6nan

#將多個數值替換

print(s.replace([-1000,-999],0))

0 010

2 23 3

4 45 5

6 -2000

#不同的值進行不同的替換

print(s.replace([-1000,-999],[np.nan,0]))

0 nan

1 0.0

2 2.0

3 3.0

4 4.0

5 5.0

6 -2000.0

#用字典方式進行不同的替換

print(s.replace())

0 nan

1 0.0

2 2.0

3 3.0

4 4.0

5 5.0

6 nan

在【例 1】中介紹了利用函式和對映來實現將水果標識替換成水果名稱的方法。但是有時需要保留水果標識,將水果名稱新增到資料集中。

那麼,這時可利用 map() 函式,通過構建 fruits 對映關係來實現元素的新增。

map() 函式是作用於 series 或 dataframe 物件的一列,它接收乙個函式或表示對映關係的字典作為引數,它的基本語法格式如下:

series.map(arg,na_action=none)

函式中的引數說明如下:

【例 2】利用 map() 函式和對映關係實現將水果名稱新增到水果資料框中。

示例** test2.py 如下:

import

pandas as pd

#建立水果標識與水果名稱的對映關係

fruits =

#建立水果資料框dataframe

data = pd.dataframe()

#用對映為data新增fru_name列元素

data['

fru_name

'] = data['

fru_no

'].map(fruits)

print

(data)

fru_no fru_num price fru_name

0 101 1000 3.56orange

2 103 3000 2.50 banana

在資料處理中,有時需要使用對映關係轉換軸標籤。pandas 的 rename() 函式是以表示對映關係的字典物件作為引數,替換軸的索引標籤。

rename() 函式的基本語法格式如下:

inplace=false,level=none)

或series.rename(index=none,**kwargs)

函式中的引數說明如下:

axis:接收 int 或 str,可選,表示對映器定位的軸,可以是軸名稱(「index」,「columns」)或數字(0,1),預設為「index」;

copy:接收 boolean,預設為 true,表示是否複製資料;

inplace:接收 boolean,預設為 false,如果為 true,將會修改原來的資料;

level:接收 int 或 level name,預設為 none,如果是 multiindex,只重新命名指定級別中的標籤。

rename() 函式返回值是 dataframe 或 series。

【例 3】利用 rename() 函式和對映關係重新命名水果資料框的行索引和列索引。

示例** test3.py 如下:

import

pandas as pd

#建立行索引的對映關係

reindex =

#建立水果資料框dataframe

data = pd.dataframe()

fru_no fru_num price

0 101 1000 3.56

1 102 2000 4.20

2 103 3000 2.50

#用對映重新命名水果資料框的行索引,產生新dataframe,但原資料不改變

newdf =data.rename(reindex)

print

(newdf)

fru_no fru_num price

row1 101 1000 3.56row2 102 2000 4.20row3 103 3000 2.50

#用對映重新命名水果資料框的行索引,產生新dataframe,但原資料改變

newdf = data.rename(reindex,inplace=true)

print(newdf) #

newdf是none,data原資料改變

#建立列索引的對映關係

recolumns =

#用對映重新命名水果資料框中的行索引和列索引

newdf = data.rename(index=reindex,columns=recolumns)

print

(newdf)

col1 col2 col3

row1 101 1000 3.56row2 102 2000 4.20row3 103 3000 2.50

#用對映重新命名水果資料框的單個行索引和單個列索引

newdf = data.rename(index=,columns=)

print

(newdf)

111fru_num price

row1 101 1000 3.56s1 102 2000 4.20row3 103 3000 2.50

注意:rename() 函式返回乙個經過改動的新 dataframe 物件,但原 dataframe 物件仍保持不變,如果要改變呼叫函式的物件本身,可使用 inplace 選項,並將其值設定為 true。

參考:

03 12Pandas 資料轉換

import numpy as np import pandas as pd在dataframe中存在著重複行資料,或者某列中存在著重複的資料,根據需求我們也需要將他們找出來刪除掉或者做其他操作。在pandas中,duplicated 表示找出重複的行,返回布林型別的結果,如過該行有重複則維true...

pandas資料格式的轉換

1.與numpy series list的轉換 1.將pandas型別轉換為numpy型別,通過.values來轉換 np pd.values2.將numpy型別轉換為list型別,通過.tolist 方法轉換 list np.tolist 3.在用pandas包和numpy包對資料進行分析和計算時...

pandas資料讀取與顯示

注意 以下 是基於python3.5.0編寫的importpandas 資料的讀取 food info pandas.read csv food info.csv print type food info 返回,說明 pandas 是以資料流的格式讀取 print food info.dtypes ...