当前位置: 首页 > news >正文

Pandas 6-采用函数进行数据填充

1. 创建包含缺失值的DataFrame

首先,需要创建一个包含缺失值的DataFrame。

import pandas as pd  
import numpy as np  
  
# 创建一个包含缺失值的DataFrame  
data = {  
    'Name': ['Alice', 'Bob', np.nan, 'David'],    'Age': [24, np.nan, 22, 32],    'City': ['New York', 'Los Angeles', np.nan, np.nan],    'Score': [85, np.nan, np.nan, 92]}  
  
df = pd.DataFrame(data)  
print(df)  

输出:

      Name   Age         City  Score0    Alice  24.0     New York   85.0  
1      Bob   NaN  Los Angeles    NaN  
2      NaN  22.0          NaN    NaN  
3    David  32.0          NaN   92.0  

2. 使用函数填充缺失值

可以定义一个函数来处理缺失值,并使用apply方法将该函数应用到DataFrame的列或行。

2.1 定义填充函数

假设希望将缺失的Name列填充为’Unknown’,将缺失的Age列填充为该列的平均值,将缺失的City列填充为’Unknown’,将缺失的Score列填充为该列的中位数。

def fill_missing_values(column):  
    if column.name == 'Name' or column.name == 'City':        return column.fillna('Unknown')    elif column.name == 'Age':        return column.fillna(column.mean())    elif column.name == 'Score':        return column.fillna(column.median())    return column```
  
#### 2.2 应用填充函数  
  
使用`apply`方法将填充函数应用到DataFrame的每一列。  
  
```python  
df_filled = df.apply(fill_missing_values, axis=0)  
print(df_filled)  

输出:

        Name   Age         City  Score0      Alice  24.0     New York   85.0  
1        Bob  28.0  Los Angeles   88.5  
2    Unknown  22.0      Unknown   88.5  
3      David  32.0      Unknown   92.0  

3. 使用lambda函数进行填充

除了定义自定义函数,还可以使用lambda函数进行简单的数据填充。

# 使用lambda函数填充缺失值  
df_filled_lambda = df.apply(lambda x: x.fillna('Unknown') if x.name in ['Name', 'City'] else x.fillna(x.mean()) if x.name == 'Age' else x.fillna(x.median()) if x.name == 'Score' else x, axis=0)  
print(df_filled_lambda)  

输出:

        Name   Age         City  Score0      Alice  24.0     New York   85.0  
1        Bob  28.0  Los Angeles   88.5  
2    Unknown  22.0      Unknown   88.5  
3      David  32.0      Unknown   92.0  

4. 使用fillna方法结合函数

还可以使用fillna方法结合函数来进行数据填充。

# 使用fillna方法结合函数填充缺失值  
df_filled_fillna = df.copy()  
df_filled_fillna['Name'] = df_filled_fillna['Name'].fillna('Unknown')  
df_filled_fillna['City'] = df_filled_fillna['City'].fillna('Unknown')  
df_filled_fillna['Age'] = df_filled_fillna['Age'].fillna(df_filled_fillna['Age'].mean())  
df_filled_fillna['Score'] = df_filled_fillna['Score'].fillna(df_filled_fillna['Score'].median())  
print(df_filled_fillna)  

输出:

        Name   Age         City  Score0      Alice  24.0     New York   85.0  
1        Bob  28.0  Los Angeles   88.5  
2    Unknown  22.0      Unknown   88.5  
3      David  32.0      Unknown   92.0  

相关文章:

  • python测试框架之Pytest
  • Vatee万腾平台:打造企业智能化转型的坚实后盾
  • Xcode插件开发
  • Debezium系列之:记录一次命令行可以访问mysql数据库,但是debezium connector无法访问数据库原因排查
  • 避坑之:深信服AC跨三层取MAC(核心交换机是锐捷S7808C_RGOS 11.0(4)B2P1)
  • Linux——进程管理
  • 排序算法-快速排序
  • 12306项目学习笔记(框架篇Base)
  • nginx部署前端vue项目步骤
  • 【微信小程序】Mobx--绑定多个 store 以及命名空间
  • HarmonyOS ArkUI工程框架解析
  • SQL 快速参考
  • 算法day17|如何求普通二叉树的众数
  • 滑模控制2021年12月8日
  • 【Python零基础】Python测试
  • ASP.NET Core 入门教学五 集成日志
  • OpenCV小练习:身份证号码识别
  • 【Android】使用 ADB 查看 Android 设备的 CPU 使用率
  • es的简易dsl语句
  • ESP32利用大模型做聊天机器人
  • 黄育奇当选福建惠安县人民政府县长
  • 辽宁省委书记郝鹏、省长王新伟赶到辽阳火灾事故现场指导善后处置工作
  • 烟花、美食和购物优惠都安排上了,上海多区开启热闹模式
  • 伊朗港口爆炸死亡人数升至70人
  • 上海灵活就业人员公积金新政有哪些“创新点”?
  • 李勇已任内蒙古乌兰察布市委副书记,曾在中央编办任职