第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Pandas 修改數(shù)據(jù)

1. 前言

通過前幾節(jié)的學(xué)習(xí),我們掌握了 Pandas 查詢、新增和刪除數(shù)據(jù)的操作,基本上能夠進(jìn)行大部分的數(shù)據(jù)處理操作,而作為數(shù)據(jù)處理中另外一個(gè)重要的內(nèi)容——修改操作,Pandas 中又是如何進(jìn)行的呢?

本小節(jié)我將講述 Pandas 對數(shù)據(jù)的修改操作,包括了對索引值的修改,以及對數(shù)據(jù)值的修改操作,通過這兩板塊的內(nèi)容,使大家能夠根據(jù)自己的需要,靈活的變更數(shù)據(jù)內(nèi)容。

2. 修改索引值

很多時(shí)候我們創(chuàng)建的數(shù)據(jù),或者解析出來的數(shù)據(jù),索引都是默認(rèn)生成的,而我們?yōu)榱朔奖銛?shù)據(jù)的分析,需要對數(shù)據(jù)的行索引值或者列索引值進(jìn)行修改,那這里 Pandas 中提供了一個(gè)函數(shù) rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’),該函數(shù)通過靈活的參數(shù)設(shè)置,能夠高效便捷的進(jìn)行索引值的修改,下面我們列舉了常用的幾個(gè)參數(shù)說明:

參數(shù)名 說明
mapper 這里是要傳入的映射關(guān)系,可以是個(gè)字典或者函數(shù)
index 指定行索引
columns 指定列索引
axis 表示修改行索引(axis=0 默認(rèn))還是列索引(axis=1)
inplace 是否在原數(shù)據(jù)基礎(chǔ)上修改,默認(rèn) inplace=False 會返回一個(gè)新的數(shù)據(jù)集

2.1 修改行索引值

# 導(dǎo)入pandas包
import pandas as pd
# 指定導(dǎo)入的文件地址
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
  編程語言   推出時(shí)間    價(jià)格             主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

# 修改行索引和 rename({0: "aa", 2: "bb", 3: "cc"},axis=0)  等價(jià)
data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"})
print(data_res)

# --- 輸出結(jié)果 ---
      編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
aa    java  199545.6               James Gosling
1   python  199167.0            Guido van Rossum
bb       C  197233.9  Dennis MacAlistair Ritchie
cc      js  199559.5                Brendan Eich
4      php  201269.9              Rasmus Lerdorf
5      C++  198375.0           Bjarne Stroustrup

輸出解析:我們通過 index 參數(shù)指定映射關(guān)系,修改了列索引0,2,3的索引值為aa,bb,cc,通過輸出結(jié)果可以看出修改的效果。

2.2 修改列索引值

# 導(dǎo)入pandas包
import pandas as pd
# 指定導(dǎo)入的文件地址
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
 編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

# 修改行索引和 rename({0: "aa", 2: "bb", 3: "cc"},axis=0)  等價(jià)
data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"})
print(data_res)

# 修改列索引和 rename({"編程語言": "bcyy", "價(jià)格": "jiage"},axis=1)  等價(jià)
data_res=data.rename(columns={"編程語言": "bcyy", "價(jià)格": "jiage"})
print(data_res)

# --- 輸出結(jié)果 ---
     bcyy   推出時(shí)間  jiage                       主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

輸出解析:我們這里通過 columns 指定了映射關(guān)系,將列索引值編程語言和價(jià)格分別修改為 bcyy 和 jiage ,通過輸出結(jié)果可以看到修改的效果。

當(dāng)然如果我們同時(shí)設(shè)置 index 和 columns 的映射關(guān)系,則會同時(shí)修改對應(yīng)的索引值:

# 修改列索引和 rename({"編程語言": "bcyy", "價(jià)格": "jiage"},axis=1)  等價(jià)
data_res=data.rename(index={0: "aa", 2: "bb", 3: "cc"},columns={"編程語言": "bcyy", "價(jià)格": "jiage"})
print(data_res)

# --- 輸出結(jié)果 ---
bcyy   推出時(shí)間  jiage                       主要創(chuàng)始人
aa    java  199545.6               James Gosling
1   python  199167.0            Guido van Rossum
bb       C  197233.9  Dennis MacAlistair Ritchie
cc      js  199559.5                Brendan Eich
4      php  201269.9              Rasmus Lerdorf
5      C++  198375.0           Bjarne Stroustrup

3. 修改數(shù)據(jù)值

3.1 修改單個(gè)數(shù)據(jù)值

修改單個(gè)數(shù)據(jù)值,是通過查詢函數(shù)獲取到某個(gè)數(shù)據(jù),然后修改這個(gè)數(shù)據(jù)的內(nèi)容,可以用函數(shù) at[]、iat[]、loc[]、iloc[],但要注意不同的函數(shù)所傳遞參數(shù)的不同,下面我們列舉這四個(gè)函數(shù)的不同之處:

函數(shù) 說明
loc[] 只能使用標(biāo)簽索引,不能使用整數(shù)索引,通過標(biāo)簽索引切邊進(jìn)行篩選時(shí)
iloc[] 只能使用整數(shù)索引,不能使用標(biāo)簽索引,通過整數(shù)索引切邊進(jìn)行篩選時(shí)
at[] 只能使用標(biāo)簽索引,使用時(shí)必須輸入兩個(gè)參數(shù),即行索引和列索引
iat[] 只能使用整數(shù)索引,使用時(shí)必須輸入兩個(gè)參數(shù),即行索引和列索引

雖然四種函數(shù)都能獲取單個(gè)數(shù)據(jù)值,進(jìn)而進(jìn)行修改,但從運(yùn)行速度上四種方法從高到底分別為: iat[]、at[]、iloc[]、loc[],這里我們選擇 iat[] 演示對單個(gè)數(shù)據(jù)值的修改操作:

# 導(dǎo)入pandas包
import pandas as pd
# 指定導(dǎo)入的文件地址
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
  編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

# 這里我們對 第2行,第3列進(jìn)行數(shù)據(jù)修改
data.iat[1,2]=3432
print(data)

# --- 輸出結(jié)果 ---
編程語言   推出時(shí)間      價(jià)格                       主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  19913432.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

輸出解析:我們通過 iat[] 對第2行,第3列數(shù)據(jù)進(jìn)行修改,通過輸出結(jié)果可看到原數(shù)據(jù)值為67.0,這里被修改3432.0

3.2 修改某類數(shù)據(jù)值

有時(shí)候我們需要對數(shù)據(jù)集中的一類數(shù)據(jù)進(jìn)行修改,比如我們要將所有的“1995年”換成字符串“2000年”,這時(shí)我們就需要用到函數(shù) replace(to_replace=None,value=None……),該函數(shù)的兩個(gè)核心參數(shù) to_replace 表示要被替換的數(shù)據(jù),value 是替換后的數(shù)據(jù),該函數(shù)修改后,會返回新的數(shù)據(jù)集,不會影響到原數(shù)據(jù)。

# 導(dǎo)入pandas包
import pandas as pd
# 指定導(dǎo)入的文件地址
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
  編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

# 這里我們對 將所有的“1995年”數(shù)據(jù)修改為“2000年”
new_data=data.replace("1995年","2000年")
print(new_data)

# --- 輸出結(jié)果 ---
     編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
0    java  200045.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  200059.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

輸出解析:這里可以看到原數(shù)據(jù)中所有的“1995年”都被改成了“2000年”。這里我們要被修改的值也可以傳入列表的形式,指定多個(gè)被修改的數(shù)據(jù)值,如下面代碼所示:

# 這里我們傳入list數(shù)據(jù)集,對這幾個(gè)數(shù)據(jù)進(jìn)行修改為“2000年”
new_data=data.replace(["1995年","2012年","1983年"],"2000年")
print(new_data)

# --- 輸出結(jié)果 ---
 編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
0    java  200045.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  200059.5                Brendan Eich
4     php  200069.9              Rasmus Lerdorf
5     C++  200075.0           Bjarne Stroustrup

輸出解析:通過輸出結(jié)果可以看到,原數(shù)據(jù)集中的1995年,2012年,1983年都被修改為了“2000年”。

3.2 修改某區(qū)域數(shù)據(jù)值

我們還可以對某些行或列的數(shù)據(jù)進(jìn)行統(tǒng)一的修改操作,這里我們可以使用函數(shù) loc() 或 iloc() ,只是要注意傳入的參數(shù)不同。下面我們使用 iloc() 修改整行或整列的數(shù)據(jù)操作:

# 導(dǎo)入pandas包
import pandas as pd
# 指定導(dǎo)入的文件地址
data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小節(jié)/execl數(shù)據(jù)demo.xlsx"
# 解析數(shù)據(jù)
data = pd.read_excel(data_path)
print(data)

# --- 輸出結(jié)果 ---
編程語言   推出時(shí)間    價(jià)格               主要創(chuàng)始人
0    java  199545.6               James Gosling
1  python  199167.0            Guido van Rossum
2       C  197233.9  Dennis MacAlistair Ritchie
3      js  199559.5                Brendan Eich
4     php  201269.9              Rasmus Lerdorf
5     C++  198375.0           Bjarne Stroustrup

# 這里我們創(chuàng)建了一個(gè)新的數(shù)據(jù)集
data_new= pd.DataFrame([["11","22","33.5","44"], ["55","66","77.7","88"]], 
                       columns=["編程語言","推出時(shí)間","價(jià)格","主要創(chuàng)始人"])
data.iloc[[0,1]]=data_new
print(data)

# --- 輸出結(jié)果 ---
編程語言   推出時(shí)間    價(jià)格                       主要創(chuàng)始人
0   11     22  33.5                          44
1   55     66  77.7                          88
2    C  197233.9  Dennis MacAlistair Ritchie
3   js  199559.5                Brendan Eich
4  php  201269.9              Rasmus Lerdorf
5  C++  198375           Bjarne Stroustrup

輸出解析:我們創(chuàng)建了一個(gè)新的數(shù)據(jù)集,用來替換原數(shù)據(jù)第1行和第2行的數(shù)據(jù),通過輸出結(jié)果可以看到被修改后的數(shù)據(jù)集。

下面我們來修改一整列的數(shù)據(jù):

# 創(chuàng)建了一個(gè)Series對象
new_series=pd.Series(["11","22","3","44","55","66"] )
data.iloc[:,[1]]=new_series
print(data)

# --- 輸出結(jié)果 ---
  編程語言 推出時(shí)間  價(jià)格              主要創(chuàng)始人
0    java   11  45.6               James Gosling
1  python   22  67.0            Guido van Rossum
2       C    3  33.9  Dennis MacAlistair Ritchie
3      js   44  59.5                Brendan Eich
4     php   55  69.9              Rasmus Lerdorf
5     C++   66  75.0           Bjarne Stroustrup

輸出解析:這里我們新建一個(gè) Series 對象用來替換第二列的數(shù)據(jù)值,通過輸出結(jié)果可以看到為我們第二列的數(shù)據(jù)值被修改的結(jié)果。

4.小結(jié)

本節(jié)課我們主要學(xué)習(xí)了如何修改數(shù)據(jù)集中的索引和數(shù)據(jù)值,并詳細(xì)介紹了對行索引和列索引的修改,細(xì)化了數(shù)據(jù)值修改的幾種方式,包括單個(gè)數(shù)據(jù)值的修改,一類數(shù)據(jù)的修改和某個(gè)區(qū)域的數(shù)據(jù)修改。本節(jié)課程的重點(diǎn)如下:

  • 修改索引值 rename() 函數(shù)的使用;
  • 修改數(shù)據(jù)使用 iat[] 函數(shù),replace() 函數(shù) ,iloc() 函數(shù)操作的方法。

圖片描述

Tips:想要學(xué)習(xí)更多Pandas相關(guān)知識,可以點(diǎn)擊
Pandas 新增數(shù)據(jù)
Pandas 刪除數(shù)據(jù)
Pandas 查詢數(shù)據(jù)