pythonPandas三: 数据清洗和预处理

news/2024/11/30 13:25:55/

让我们通过几个案例来学习如何使用Pandas进行数据清洗和预处理,包括处理缺失值、异常值,进行数据转换和规范化,以及处理重复数据等操作。

  1. 处理缺失值:

    # 创建包含缺失值的DataFrame
    data = {'姓名': ['张三', '李四', None, '赵六'],'年龄': [18, 19, None, 20],'性别': ['男', '女', '男', '女'],'分数': [90, None, 95, 80]
    }
    df = pd.DataFrame(data)# 检测缺失值
    print(df.isnull())# 删除包含缺失值的行
    df_dropna = df.dropna()
    print(df_dropna)# 使用指定值填充缺失值
    df_fillna = df.fillna(0)
    print(df_fillna)
    
  2. 处理异常值:

    # 创建包含异常值的DataFrame
    data = {'姓名': ['张三', '李四', '王五', '赵六'],'年龄': [18, -10, 17, 20],'性别': ['男', '女', '男', '女'],'分数': [90, 85, 105, 80]
    }
    df = pd.DataFrame(data)# 检测异常值
    age_outliers = df[(df['年龄'] < 0) | (df['年龄'] > 100)]
    print(age_outliers)score_outliers = df[(df['分数'] < 0) | (df['分数'] > 100)]
    print(score_outliers)# 替换异常值
    df.loc[df['年龄'] < 0, '年龄'] = 18
    df.loc[df['分数'] < 0, '分数'] = 0
    print(df)
    
  3. 数据转换和规范化:

    # 将姓名列转换为大写
    df['姓名'] = df['姓名'].str.upper()
    print(df)# 将分数归一化到0-1之间
    df['分数_normalized'] = (df['分数'] - df['分数'].min()) / (df['分数'].max() - df['分数'].min())
    print(df)# 使用字典映射进行数据规范化
    gender_mapping = {'男': 1, '女': 0}
    df['性别_encoded'] = df['性别'].map(gender_mapping)
    print(df)
    
  4. 处理重复数据:

    # 创建包含重复数据的DataFrame
    data = {'姓名': ['张三', '李四', '王五', '张三'],'年龄': [18, 19, 17, 20],'性别': ['男', '女', '男', '男'],'分数': [90, 85, 95, 80]
    }
    df = pd.DataFrame(data)# 检测重复行
    duplicate_rows = df.duplicated()
    print(duplicate_rows)# 删除重复行
    df_drop_duplicates = df.drop_duplicates()
    print(df_drop_duplicates)
    

通过这些案例,您可以学习如何使用Pandas提供的函数和方法来处理数据清洗和预处理的任务。这些操作可以帮助您处理缺失值、异常值,进行数据转换和规范化,并处理重复数据,使数据适合后续的分析和建模。掌握这些技巧可以提高数据质量和准确性,从而得到更可靠的分析结果。您可以根据实际需求在项目中应用这些技术。


http://www.ppmy.cn/news/1290581.html

相关文章

ECMAScript和JavaScript之间关键的区别和差异

ECMAScript和JavaScript之间有一些关键的区别和差异。虽然它们经常被混为一谈&#xff0c;但它们并不完全相同。以下是两者之间的一些详细区别&#xff1a; 标准化&#xff1a;ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff09;通过ECMA-262标准…

Vue.js 3.4版本发布:解析速度提升2倍,双向绑定革新等新功能

引言 随着2024年的来临,Vue团队的领军人物Evan You宣布了Vue.js 3.4的发布。这个版本不仅仅是修复了一些bug,还带来了一些非常实用的新功能和性能提升。 解析速度提升2倍 这次更新中,Vue.js 3.4实现了解析速度的大幅提升。尤其是在构建模板和脚本的源代码映射时,单文件组…

Vue前端文字效果:如何让一段文本像是手动一个一个字打出来的

效果展示 自己做的AI聊天机器人界面&#xff0c;我觉得比微信还好看 由于这个前端略微复杂&#xff0c;下文用最简单的例子来展示&#xff1a; 分析需求 对于AI聊天工具的前端&#xff0c;如果AI生成的文本像是一个一个字打出来的&#xff0c;就会让AI看起来更像真的人&…

C++的魅力与奥秘:工作原理、特性及应用深度解析---探索其发展历程与运行机制

一、引言 C是一种功能强大的编程语言&#xff0c;它的诞生和发展历程与计算机科学的飞速进步密不可分。作为C语言的扩展&#xff0c;C不仅保留了C语言的高效性能&#xff0c;而且引入了面向对象编程的概念&#xff0c;为程序员提供了更丰富的工具和更高效的开发方式。面向对象编…

【数据库系统概念】第一章 引言

文章目录 一、背景1. 为什么学习数据库&#xff1f;2. 数据库历史 二、引言1. 什么是数据库&#xff1f;数据&#xff08;Data&#xff09;数据库&#xff08;DB&#xff09;数据库管理系统&#xff08;DBMS&#xff09;数据库系统&#xff08;DBS&#xff09; 2. 数据库存在的…

react中概念性总结(一)

目录 React中组件性能优化的方案有哪些&#xff1f; 说说你是如何提高组件的渲染效率&#xff0c;如何避免不必要的render? 说说React中Jsx的原理&#xff1f; 说说真实DOM和虚拟DOM之间区别&#xff1f;有什么优缺点&#xff1f; 说说React中事件机制&#xff1f; 合成事…

python封装接口自动化测试套件 !

在Python中&#xff0c;我们可以使用requests库来实现接口自动化测试&#xff0c;并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例&#xff1a; 首先&#xff0c;我们需要安装所需的库&#xff1a; pip install requests …

晶体谐振器专业术语的基础知识-晶发电子

共振频率 在晶体谐振器的共振特性中&#xff0c;共振频率是两点阻抗变为电阻时的较低频率点。 阻抗Z变为电阻元件时&#xff0c;两点之间的频率。在这两点上&#xff0c;相为0。其中频率较低的点称为共振频率。另外一个点称为反共振频率。 等效电路 下图所示的是由电阻、电感…