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

從基礎(chǔ)操作到高效實踐詳解DataFrame數(shù)據(jù)修改的完整指南

 更新時間:2026年02月24日 08:30:30   作者:detayun  
數(shù)據(jù)修改(Data?Mutation)是解決這些問題的核心能力,它直接影響后續(xù)分析的準(zhǔn)確性,本文將通過?6類操作?+?4個實戰(zhàn)案例,系統(tǒng)講解如何安全、高效地修改DataFrame數(shù)據(jù),感興趣的小伙伴可以了解下

引言:為什么數(shù)據(jù)修改是數(shù)據(jù)分析的“隱形冠軍”

在真實項目中,原始數(shù)據(jù)往往存在以下問題:

  • 缺失值用 -1NULL 填充
  • 日期格式混亂(如 20230101 vs 01-Jan-2023
  • 分類變量編碼不一致(如 男/M/1 表示同一性別)

數(shù)據(jù)修改(Data Mutation)是解決這些問題的核心能力,它直接影響后續(xù)分析的準(zhǔn)確性。本文將通過 6類操作 + 4個實戰(zhàn)案例,系統(tǒng)講解如何安全、高效地修改DataFrame數(shù)據(jù)。

一、基礎(chǔ)修改操作:替換與賦值

1. 單單元格修改

直接通過列名和索引定位單元格:

import pandas as pd

df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, None],
    'City': ['NY', 'LA', 'Chicago']
})

# 將第2行(索引1)的Age改為35
df.at[1, 'Age'] = 35  # 推薦:at用于標(biāo)量訪問
# 或
df.loc[1, 'Age'] = 35  # loc也可用

2. 整列修改

直接對列賦值(支持標(biāo)量、列表、Series):

# 將所有City改為大寫
df['City'] = df['City'].str.upper()

# 用新列表替換整列
df['Age'] = [26, 35, 32]  # 長度必須匹配

3. 條件替換(where()vsmask())

  • df.where(cond, other):保留滿足條件的值,不滿足的替換為other
  • df.mask(cond, other):替換滿足條件的值為other,保留不滿足的
# 將Age<30的替換為0(保留其他值)
df['Age'] = df['Age'].where(df['Age'] >= 30, 0)

# 等價寫法(更直觀)
df['Age'] = df['Age'].mask(df['Age'] < 30, 0)

二、批量修改技巧:映射與替換

1.replace():精確值替換

# 將City中的'NY'替換為'New York'
df['City'] = df['City'].replace('NY', 'New York')

# 多值替換(字典形式)
df['City'] = df['City'].replace({
    'LA': 'Los Angeles',
    'CHICAGO': 'Chicago'  # 注意大小寫敏感
})

2.map():基于字典的映射

適用于分類變量編碼轉(zhuǎn)換:

# 創(chuàng)建性別編碼映射
gender_map = {'男': 'M', '女': 'F', '未知': 'U'}
df['Gender'] = df['Gender'].map(gender_map)

# 未映射的值會變?yōu)镹aN,可用fillna處理
df['Gender'] = df['Gender'].map(gender_map).fillna('Other')

3.apply():自定義函數(shù)修改

當(dāng)邏輯復(fù)雜時,用lambda或函數(shù):

# 將Age列轉(zhuǎn)換為字符串并添加' years'
df['Age'] = df['Age'].apply(lambda x: f"{int(x)} years" if pd.notnull(x) else 'Unknown')

# 多列同時修改
def clean_data(row):
    row['Name'] = row['Name'].title()  # 首字母大寫
    row['City'] = row['City'].upper()
    return row

df = df.apply(clean_data, axis=1)  # axis=1表示按行操作

三、進階修改場景

1. 基于索引的修改

# 修改索引為[0,2]的行的Age列
df.loc[[0, 2], 'Age'] = [27, 33]

# 使用切片修改連續(xù)行
df.loc[0:2, 'City'] = ['NYC', 'LAX', 'CHI']  # 注意包含末端

2. 添加/刪除列時的修改

# 添加新列(基于現(xiàn)有列計算)
df['Age_Group'] = pd.cut(df['Age'], bins=[0, 30, 100], labels=['Young', 'Senior'])

# 刪除列后重新添加(重置數(shù)據(jù))
df.drop('Age_Group', axis=1, inplace=True)
df['Age_Group'] = ...  # 重新計算

3. 鏈?zhǔn)讲僮鳎–haining)

結(jié)合多個修改步驟(注意可讀性):

df = (
    df.assign(Age_Squared=lambda x: x['Age']**2)  # 添加新列
      .query("Age > 20")  # 篩選
      .drop('City', axis=1)  # 刪除列
)

四、實戰(zhàn)案例:電商數(shù)據(jù)清洗

案例1:統(tǒng)一價格單位

原始數(shù)據(jù)中價格單位混用(元/千元):

df = pd.DataFrame({
    'Product': ['A', 'B', 'C'],
    'Price': [1500, 2.5, 800],
    'Unit': ['元', '千元', '元']
})

# 將千元轉(zhuǎn)換為元
df['Price'] = df.apply(
    lambda row: row['Price'] * 1000 if row['Unit'] == '千元' else row['Price'],
    axis=1
)
df['Unit'] = '元'  # 統(tǒng)一單位

案例2:標(biāo)準(zhǔn)化日期格式

df = pd.DataFrame({
    'OrderID': [1001, 1002],
    'Date': ['20230115', '15-Jan-2023']
})

# 統(tǒng)一轉(zhuǎn)換為YYYY-MM-DD
df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y-%m-%d')

案例3:缺失值填充策略

# 根據(jù)列特性選擇填充方式
df['Age'].fillna(df['Age'].median(), inplace=True)  # 數(shù)值列用中位數(shù)
df['Gender'].fillna('Unknown', inplace=True)        # 分類列用眾數(shù)或固定值

五、避坑指南:5個常見錯誤

1.修改時未用copy()導(dǎo)致SettingWithCopyWarning

錯誤寫法:df[df['Age']>30]['City'] = 'Old'

正確寫法:df.loc[df['Age']>30, 'City'] = 'Old'

2.鏈?zhǔn)讲僮髦须[式復(fù)制

# 危險!可能修改的是副本而非原數(shù)據(jù)
subset = df[df['Age']>30]['City']
subset[:] = 'Old'

3.忽略數(shù)據(jù)類型轉(zhuǎn)換

# 字符串列無法直接參與數(shù)學(xué)運算
df['Price'] = df['Price'].astype(float)  # 先轉(zhuǎn)換類型

4.過度使用apply()

對于簡單操作,優(yōu)先用向量化方法(如str.upper()apply(lambda x: x.upper())快10倍)。

5.未處理inplace參數(shù)

# 明確是否修改原數(shù)據(jù)
df.drop('Col', axis=1)  # 未生效!需加inplace=True或賦值
df = df.drop('Col', axis=1)  # 推薦寫法

總結(jié):數(shù)據(jù)修改的“黃金法則”

  • 先查看再修改:用df.head()df.info()確認(rèn)數(shù)據(jù)結(jié)構(gòu)
  • 優(yōu)先向量化:避免逐行操作的低效
  • 備份原數(shù)據(jù):修改前用df_original = df.copy()
  • 驗證結(jié)果:通過df.describe()和抽樣檢查修改是否生效

下一步建議

  • 學(xué)習(xí)pd.cut()pd.qcut()實現(xiàn)分箱操作
  • 探索sklearn.preprocessing中的標(biāo)準(zhǔn)化/歸一化方法
  • 掌握DataFrame.update()實現(xiàn)基于另一個DataFrame的修改

以上就是從基礎(chǔ)操作到高效實踐詳解DataFrame數(shù)據(jù)修改的完整指南的詳細(xì)內(nèi)容,更多關(guān)于DataFrame數(shù)據(jù)修改的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python代碼如何注釋

    python代碼如何注釋

    在本篇文章里小編給大家整理了關(guān)于python代碼如何注釋的相關(guān)知識點,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • python離線安裝外部依賴包的實現(xiàn)

    python離線安裝外部依賴包的實現(xiàn)

    今天小編就為大家分享一篇python離線安裝外部依賴包的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python連接access數(shù)據(jù)庫兩種方式總結(jié)

    python連接access數(shù)據(jù)庫兩種方式總結(jié)

    這篇文章主要介紹了python連接access數(shù)據(jù)庫兩種方式的相關(guān)資料,SQLAlchemy使用access方言進行連接,而pyodbc則通過pyodbc模塊實現(xiàn)連接,文章還提供了連接代碼示例,需要的朋友可以參考下
    2025-02-02
  • Tensorflow輕松實現(xiàn)XOR運算的方式

    Tensorflow輕松實現(xiàn)XOR運算的方式

    今天小編就為大家分享一篇Tensorflow輕松實現(xiàn)XOR運算的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python爬取百度地圖POI數(shù)據(jù)代碼的步驟

    Python爬取百度地圖POI數(shù)據(jù)代碼的步驟

    爬取百度地圖的POI數(shù)據(jù)涉及法律和道德問題,因為這類數(shù)據(jù)受到版權(quán)保護,且大多數(shù)在線地圖服務(wù)都有嚴(yán)格的反爬蟲措施,這篇文章主要介紹了Python爬取百度地圖POI數(shù)據(jù)代碼,需要的朋友可以參考下
    2024-08-08
  • pandas 條件搜索返回列表的方法

    pandas 條件搜索返回列表的方法

    今天小編就為大家分享一篇pandas 條件搜索返回列表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實現(xiàn)多場景下Word文檔水印添加的實戰(zhàn)指南

    Python實現(xiàn)多場景下Word文檔水印添加的實戰(zhàn)指南

    在文檔管理和版權(quán)保護場景中,為 Word 文檔添加水印是一項常見且實用的需求,本文將深入探討如何使用 Python 實現(xiàn)多種場景下的 Word 文檔水印添加功能,希望對大家有所幫助
    2026-03-03
  • 詳解torch.Tensor的4種乘法

    詳解torch.Tensor的4種乘法

    這篇文章主要介紹了詳解torch.Tensor的4種乘法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Python 自動登錄淘寶并保存登錄信息的方法

    Python 自動登錄淘寶并保存登錄信息的方法

    這篇文章主要介紹了Python 自動登錄淘寶并保存登錄信息的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • numpy添加新的維度:newaxis的方法

    numpy添加新的維度:newaxis的方法

    今天小編就為大家分享一篇numpy添加新的維度:newaxis的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08

最新評論

抚顺市| 南汇区| 凭祥市| 南开区| 固阳县| 应城市| 西盟| 乌苏市| 章丘市| 宜丰县| 桓台县| 桃源县| 盐亭县| 仪陇县| 阜南县| 梁平县| 蓝山县| 嘉峪关市| 承德市| 原阳县| 高淳县| 鄂州市| 苏州市| 黄陵县| 高安市| 兴隆县| 平泉县| 高陵县| 姜堰市| 浑源县| 拜城县| 额尔古纳市| 鄂尔多斯市| 蕲春县| 海安县| 沙雅县| 卢氏县| 江源县| 阿瓦提县| 清新县| 宜宾县|