最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解pandas映射與數(shù)據(jù)轉(zhuǎn)換

 更新時(shí)間:2021年01月22日 15:37:38   作者:元小瘋  
這篇文章主要介紹了pandas映射與數(shù)據(jù)轉(zhuǎn)換的相關(guān)資料,幫助大家更好的利用python進(jìn)行數(shù)據(jù)分析,感興趣的朋友可以了解下

在 pandas 中提供了利用映射關(guān)系來實(shí)現(xiàn)某些操作的函數(shù),具體如下:

  • replace() 函數(shù):替換元素;
  • map() 函數(shù):新建一列;
  • rename() 函數(shù):替換索引。

一、replace() 用映射替換元素

在數(shù)據(jù)處理時(shí),經(jīng)常會(huì)遇到需要將數(shù)據(jù)結(jié)構(gòu)中原來的元素根據(jù)實(shí)際需求替換成新元素的情況。要想用新元素替換原來元素,就需要定義一組映射關(guān)系。在映射關(guān)系中,將舊元素作為鍵,新元素作為值。

例如,創(chuàng)建字典 fruits 用于指明水果標(biāo)識和水果名稱的映射關(guān)系。

fruits={101:'orange',102:'apple',103:'banana'}

如要將用于存儲水果標(biāo)識、水果數(shù)量和單價(jià)的 DataFrame 對象中的水果標(biāo)識替換成水果名稱,就需要運(yùn)用 replace() 函數(shù),通過 fruits 映射關(guān)系來實(shí)現(xiàn)元素的替換。

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

obj.replace(to_replace=None,value=None,inplace=False,limit=None,regex=
False,method='pad')

函數(shù)中的參數(shù)說明如下:

  • obj:DataFrame 或 Series 對象;
  • to_replace:接收 str、regex、list、dict、Series、int、float 或者 None,表示將被替換的值;
  • value:接收標(biāo)量、字典、列表、str、正則表達(dá)式,默認(rèn)為 None;用于替換與 to_replace 匹配的任何值的值;對于 DataFrame,可以使用值的 dict 來指定每列使用哪個(gè)值(不在 dict 中的列將不會(huì)被填充);還允許使用正則表達(dá)式、字符串和列表或這些對象的 dict;
  • inplace:接收布爾值,默認(rèn)為 False,如果是 True,將修改原來的數(shù)據(jù);
  • limit:接收 int,默認(rèn)為 None,用于限制填充次數(shù);
  • regex:接收 bool 或與 to_replace 相同的類型,默認(rèn)為 False,表示是否將 to_replace 或 value 解釋為正則表達(dá)式,如果是 True,那么 to_replace 必須是一個(gè)字符串,當(dāng)是正則表達(dá)式或正則表達(dá)式的列表、字典或數(shù)組時(shí),to_replace 必須為 None;
  • method:取值為 {'pad','ffill','bfill',無},表示替換時(shí)使用的方法,與缺失值填充方法類似,當(dāng) to_replace 是標(biāo)量、列表或元組時(shí),值為 None。

【例 1】利用 replace() 函數(shù)和映射關(guān)系實(shí)現(xiàn)將水果數(shù)據(jù)框中水果標(biāo)識替換成水果名稱。
示例代碼 test1.py 如下:

import numpy as np
import pandas as pd
#創(chuàng)建水果標(biāo)識與水果名稱的映射關(guān)系
fruits = {101:'orange',102:'apple',103:'banana'}
#創(chuàng)建水果數(shù)據(jù)框DataFrame
data = pd.DataFrame({'fru_No':[101,102,103]          ,'fru_Num':[1000,2000,3000]
          ,'price':[3.56,4.2,2.5]})
#用映射替換fru_No列的元素
newDf = data.replace(fruits)
print(newDf)
#輸出如下
 fru_No fru_Num price
0 orange  1000  3.56
1 apple  2000  4.20
2 banana  3000  2.50

replace() 函數(shù)應(yīng)用的示例代碼 example1.py 如下:

import numpy as np
import pandas as pd
from pandas import Series,DataFrame
s = Series([-1000,-999,2,3,4,5,-2000])
#單數(shù)值替換
print(s.replace(-2000,np.nan))
0 -1000.0
1 -999.0
2 2.0
3 3.0
4 4.0
5 5.0
6 NaN

#將多個(gè)數(shù)值替換
print(s.replace([-1000,-999],0))
0 0
1 0
2 2
3 3
4 4
5 5
6 -2000

#不同的值進(jìn)行不同的替換
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

#用字典方式進(jìn)行不同的替換
print(s.replace({-1000:np.nan,-999:0,-2000:np.nan}))
0 NaN
1 0.0
2 2.0
3 3.0
4 4.0
5 5.0
6 NaN

二、用映射添加元素

   在【例 1】中介紹了利用函數(shù)和映射來實(shí)現(xiàn)將水果標(biāo)識替換成水果名稱的方法。但是有時(shí)需要保留水果標(biāo)識,將水果名稱添加到數(shù)據(jù)集中。

   那么,這時(shí)可利用 map() 函數(shù),通過構(gòu)建 fruits 映射關(guān)系來實(shí)現(xiàn)元素的添加。

map() 函數(shù)是作用于 Series 或 DataFrame 對象的一列,它接收一個(gè)函數(shù)或表示映射關(guān)系的字典作為參數(shù),它的基本語法格式如下:

Series.map(arg,na_action=None)

函數(shù)中的參數(shù)說明如下:

  • arg:接收 function、dict 或 Series,表示映射通信;
  • na_action:取值為{無,'忽略'},默認(rèn)值為 None,如果為'忽略',則傳播 NA 值,而不將它們傳遞給映射對應(yīng)關(guān)系。

【例 2】利用 map() 函數(shù)和映射關(guān)系實(shí)現(xiàn)將水果名稱添加到水果數(shù)據(jù)框中。
示例代碼 test2.py 如下:

import pandas as pd
#創(chuàng)建水果標(biāo)識與水果名稱的映射關(guān)系
fruits = {101:'orange',102:'apple',103:'banana'}
#創(chuàng)建水果數(shù)據(jù)框DataFrame
data = pd.DataFrame({'fru_No':[101,102,103],'fru_Num':[1000,2000,3000],'price':
          [3.56,4.2,2.5]})
#用映射為data添加fru_name列元素
data['fru_name'] = data['fru_No'].map(fruits)
print(data)
 fru_No fru_Num price fru_name
0 101  1000  3.56 orange
1 102  2000  4.20 apple
2 103  3000  2.50 banana

三、重命名行/列索引

在數(shù)據(jù)處理中,有時(shí)需要使用映射關(guān)系轉(zhuǎn)換軸標(biāo)簽。pandas 的 rename() 函數(shù)是以表示映射關(guān)系的字典對象作為參數(shù),替換軸的索引標(biāo)簽。
rename() 函數(shù)的基本語法格式如下:

DataFrame.rename(mapper=None,index=None,columns=None,axis=None,copy=True,
inplace=False,level=None)
或
Series.rename(index=None,**kwargs)

函數(shù)中的參數(shù)說明如下:

  • mapper、index、columns:接收 dict或 function,表示將 dict 或函數(shù)轉(zhuǎn)換為應(yīng)用于該軸的值,使用 mapper 參數(shù)要指定映射器;使用 columns 參數(shù)可重命名各列;
  • axis:接收 int 或 str,可選,表示映射器定位的軸,可以是軸名稱(“index”,“columns”)或數(shù)字(0,1),默認(rèn)為“index”;
  • copy:接收 boolean,默認(rèn)為 True,表示是否復(fù)制數(shù)據(jù);
  • inplace:接收 boolean,默認(rèn)為 False,如果為 True,將會(huì)修改原來的數(shù)據(jù);
  • level:接收 int 或 level name,默認(rèn)為 None,如果是 MultiIndex,只重命名指定級別中的標(biāo)簽。

rename() 函數(shù)返回值是 DataFrame 或 Series。
【例 3】利用 rename() 函數(shù)和映射關(guān)系重命名水果數(shù)據(jù)框的行索引和列索引。
示例代碼 test3.py 如下:

import pandas as pd
#創(chuàng)建行索引的映射關(guān)系
reindex = {0:'row1',1:'row2',2:'row3'}
#創(chuàng)建水果數(shù)據(jù)框DataFrame
data = pd.DataFrame({'fru_No':[101,102,103],'fru_Num':[1000,2000,3000],'price':
          [3.56,4.2,2.5]})
 fru_No fru_Num price
0  101 1000  3.56
1  102 2000  4.20
2  103 3000  2.50

#用映射重命名水果數(shù)據(jù)框的行索引,產(chǎn)生新DataFrame,但原數(shù)據(jù)不改變
newDf = data.rename(reindex)
print(newDf)
  fru_No fru_Num price
row1 101  1000  3.56
row2 102  2000  4.20
row3 103  3000  2.50

#用映射重命名水果數(shù)據(jù)框的行索引,產(chǎn)生新DataFrame,但原數(shù)據(jù)改變
newDf = data.rename(reindex,inplace=True)
print(newDf) #newDf是None,data原數(shù)據(jù)改變
#創(chuàng)建列索引的映射關(guān)系
recolumns = {'fru_No':'col1','fru_Num':'col2','price':'col3'}
#用映射重命名水果數(shù)據(jù)框中的行索引和列索引
newDf = data.rename(index=reindex,columns=recolumns)
print(newDf)
  col1 col2 col3
row1 101 1000 3.56
row2 102 2000 4.20
row3 103 3000 2.50

#用映射重命名水果數(shù)據(jù)框的單個(gè)行索引和單個(gè)列索引
newDf = data.rename(index={'row2':'s1'},columns={'fru_No':'111'})
print(newDf)
   111 fru_Num price
row1 101 1000  3.56
s1  102 2000  4.20
row3 103 3000  2.50

注意:rename() 函數(shù)返回一個(gè)經(jīng)過改動(dòng)的新 DataFrame 對象,但原 DataFrame 對象仍保持不變,如果要改變調(diào)用函數(shù)的對象本身,可使用 inplace 選項(xiàng),并將其值設(shè)置為 True。

以上就是詳解pandas映射與數(shù)據(jù)轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于pandas映射與數(shù)據(jù)轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python編寫的最短路徑算法

    python編寫的最短路徑算法

    本文給大家分享的是python 無向圖最短路徑算法:請各位大大指教,繼續(xù)改進(jìn)。(修改了中文字符串,使py2exe中文沒煩惱),需要的朋友可以參考下
    2015-03-03
  • python實(shí)現(xiàn)圖像全景拼接

    python實(shí)現(xiàn)圖像全景拼接

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖像全景拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 淺談Python中的閉包

    淺談Python中的閉包

    簡單說,閉包就是根據(jù)不同的配置信息得到不同的結(jié)果。再來看看專業(yè)的解釋:閉包(Closure)是詞法閉包(Lexical Closure)的簡稱,是引用了自由變量的函數(shù)。這個(gè)被引用的自由變量將和這個(gè)函數(shù)一同存在,即使已經(jīng)離開了創(chuàng)造它的環(huán)境也不例外。
    2015-07-07
  • Python輕松管理與操作文件的技巧分享

    Python輕松管理與操作文件的技巧分享

    在日常開發(fā)中,我們經(jīng)常會(huì)遇到需要對文件進(jìn)行操作的場景,如讀寫文件、文件夾操作等。本文將為大家介紹一些 Python 中處理文件的實(shí)用技巧,讓你的工作更高效
    2023-05-05
  • Python Numpy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差詳解

    Python Numpy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差詳解

    NumPy(Numerical Python)是Python的一種開源的數(shù)值計(jì)算擴(kuò)展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。本文主要介紹用NumPy實(shí)現(xiàn)計(jì)算矩陣的均值和標(biāo)準(zhǔn)差,感興趣的小伙伴可以了解一下
    2021-11-11
  • Python pandas對excel的操作實(shí)現(xiàn)示例

    Python pandas對excel的操作實(shí)現(xiàn)示例

    這篇文章主要介紹了Python pandas對excel的操作實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解Python如何編寫類型提示

    詳解Python如何編寫類型提示

    為了提高代碼的可讀性、可維護(hù)性,Python 在 PEP 484 中引入了類型提示( type hinting),它是 Python 中一個(gè)可選但非常有用的功能,可以使代碼更易于閱讀和調(diào)試,下面我們就來學(xué)習(xí)一下如何編寫類型提示吧
    2023-12-12
  • 解決Python 使用h5py加載文件,看不到keys()的問題

    解決Python 使用h5py加載文件,看不到keys()的問題

    今天小編就為大家分享一篇解決Python 使用h5py加載文件,看不到keys()的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法

    python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法,對此有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Python實(shí)現(xiàn)Ollama的提示詞生成與優(yōu)化

    Python實(shí)現(xiàn)Ollama的提示詞生成與優(yōu)化

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)Ollama的提示詞生成與優(yōu)化的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12

最新評論

苏州市| 陇川县| 当涂县| 金塔县| 凤庆县| 昌宁县| 泌阳县| 永和县| 铜川市| 四会市| 台安县| 凌云县| 景东| 西畴县| 都昌县| 勃利县| 盐源县| 浠水县| 陇川县| 临城县| 沭阳县| 古田县| 高阳县| 常熟市| 吉水县| 龙里县| 德昌县| 康定县| 太白县| 北海市| 诸暨市| 翼城县| 富裕县| 阿城市| 仁化县| 繁昌县| 鸡西市| 泸定县| 龙井市| 崇礼县| 阜宁县|