Python 数据分析与可视化 Day 2 - 数据清洗基础

🎯 今日目标

  • 学会识别和处理缺失数据(NaN)
  • 学会删除/填补缺失值
  • 清理重复数据
  • 修改列类型,准备数据分析

🧼 一、缺失值处理(NaN)

✅ 1. 检查缺失值
import pandas as pd
df = pd.read_csv("students.csv")print(df.isnull())        # 每个元素是否为 NaN
print(df.isnull().sum())  # 每列缺失值数量
✅ 2. 删除缺失数据
df.dropna()            # 删除包含 NaN 的行
df.dropna(axis=1)      # 删除包含 NaN 的列

inplace=True 参数可以就地修改,不返回新对象。

✅ 3. 填充缺失数据
df.fillna(0)               # 全部填 0
df["成绩"].fillna(df["成绩"].mean())   # 用均值填充
df.fillna(method="ffill")  # 用上一行填
df.fillna(method="bfill")  # 用下一行填

🔁 二、重复值处理

✅ 1. 检测重复数据

df.duplicated()            # 标记每行是否重复(默认所有列)
df.duplicated(subset=["姓名"])  # 指定列检查

✅ 2. 删除重复数据

df.drop_duplicates(inplace=True)

🔧 三、数据类型转换

df["成绩"] = df["成绩"].astype(float)
df["是否及格"] = df["是否及格"].astype(bool)

可以使用 df.dtypes 查看所有列的数据类型。


🧪 今日练习任务

使用以下示例数据,完成清洗操作:

姓名,性别,成绩,是否及格
张三,男,88,True
李四,女,,True
王五,男,59,False
张三,男,88,True
赵六,,92,True
田七,女,NaN,

📝 任务:

  1. 加载该 CSV 文件为 DataFrame

  2. 检查每列缺失值数量

  3. 删除性别缺失的行

  4. 用“成绩”列均值填补成绩缺失值

  5. 删除重复的行(姓名、成绩相同)

  6. 将“成绩”列类型设置为 float,将“是否及格”填补为 False

    import pandas as pd
    import os# 路径设置
    input_path = "./data/students_dirty.csv"
    output_path = "./data/students_cleaned.csv"# 确保输出目录存在
    os.makedirs(os.path.dirname(output_path), exist_ok=True)# 加载原始数据
    df = pd.read_csv(input_path)
    print("原始数据:")
    print(df)# 1. 检查每列缺失值数量
    print("\n缺失值统计:")
    print(df.isnull().sum())# 2. 删除性别缺失的行
    df = df.dropna(subset=["性别"])# 3. 用“成绩”列均值填补缺失值
    # 保留整数部分,四舍五入到整数
    mean_score = df["成绩"].mean().round()
    df["成绩"] = df["成绩"].fillna(mean_score)# 4. 删除重复的行(默认检查所有列)
    df = df.drop_duplicates()# 5. 填补“是否及格”空缺值为 False
    with pd.option_context("future.no_silent_downcasting", True):df = df.fillna(False).infer_objects(copy=False)# 6. 数据类型转换
    df["成绩"] = df["成绩"].astype(float)
    df["是否及格"] = df["是否及格"].astype(bool)# 显示清洗结果
    print("\n清洗后的数据:")
    print(df)# 保存结果
    df.to_csv(output_path, index=False, encoding="utf-8")
    print(f"\n✅ 清洗后的数据已保存至 {output_path}")
    

    ✅ 示例输出(清洗后)

    原始数据:姓名   性别    成绩   是否及格
    0  张三    男  88.0   True
    1  李四    女   NaN   True
    2  王五    男  59.0  False
    3  张三    男  88.0   True
    4  赵六  NaN  92.0   True
    5  田七    女   NaN    NaN缺失值统计:
    姓名      0
    性别      1
    成绩      2
    是否及格    1
    dtype: int64清洗后的数据:姓名 性别    成绩   是否及格
    0  张三  男  88.0   True
    1  李四  女  78.0   True
    2  王五  男  59.0  False
    5  田七  女  78.0  False✅ 清洗后的数据已保存至 ./data/students_cleaned.csv
    
         姓名 性别    成绩 是否及格
    0    张三  男  88.0   True
    1    李四  女  79.7   True
    2    王五  男  59.0  False
    3    田七  女  79.7  False
    

    在这里插入图片描述


✍️ 今日总结

  • 掌握了 dropna()fillna()drop_duplicates() 等数据清洗方法
  • 学会判断和填补缺失值
  • 理解了数据类型转换在分析前的重要性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87797.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3DS中文游戏全集下载 任天堂3DS简介3DS第一方独占游戏推荐

任天堂3DS 的详细介绍,涵盖其硬件特性、核心功能、游戏阵容及历史地位: 3DS游戏全集下载 https://pan.quark.cn/s/dd40e47387e7 https://sink-698.pages.dev/3ds CIA CCA 等格式可用于3DS模拟器和3DS实体机 3DS 是什么? 全称:Nin…

【Python小练习】3D散点图

资产风险收益三维分析 背景 王老师是一名金融工程研究员,需要对多个资产的预期收益、风险(波动率)和与市场的相关性进行综合分析,以便为投资组合优化提供决策依据。 代码实现 import matplotlib.pyplot as plt from mpl_toolk…

安宝特案例丨突破传统手术室,Vuzix AR 眼镜圆满助力全膝关节置换术

在巴西圣保罗医院的手术室里,骨科权威 Ricardo Gobbi医生正戴着 安宝特 Vuzix 智能 AR 眼镜,为一位膝关节炎患者实施全膝关节置换术。与传统手术不同的是,他的视野中实时叠加着骨骼三维模型、切割路径标线和动态数据 —— 这并非科幻场景&…

qt设置文件自动保存-cnblog

步骤: 「工具」->「选项」->「环境」->「Auto-save modified files」。 可开启/关闭自动保存文件功能,还可设置自动保存时间的间隔(最短间隔1分钟)。 钟)。

linux下如何找到dump文件被生成到哪里了

在大多数 Linux 系统中,核心转储文件(core dump)通常由系统自动保存在当前工作目录下,或者由配置决定其保存位置。核心转储文件的默认文件名通常包含进程 ID(PID)和程序名,例如 core.PID 或 cor…

API 调试工具校验 JSON Mock 接口(一):无参请求与基础响应验证

在前后端分离的开发模式中,JSON Mock 工具为前端开发人员在后端接口未就绪时提供了极大便利,能够模拟返回 JSON 数据的 API 接口,实现前端独立开发与测试。而 API 开发调试工具 作为一款强大的接口测试工具,可进一步对这些 Mock 接…

单体架构、微服务架构和分布式架构的区别

. 架构定义与核心特征 1.1 单体架构(Monolithic Architecture) 单体架构是将所有功能模块集中在一个单一代码库中的传统架构模式: 所有功能(UI层、业务逻辑、数据访问)打包为单一部署单元通常使用单一技术栈开发(如Spring Boot、Django等)共享单一数据库实例进程内通信(方法…

如何重新安装 Rust

在开发过程中,我们有时可能需要重新安装 Rust,比如遇到版本冲突、环境配置错误,或者仅仅是想更新到最新版本。本文将详细介绍如何卸载现有 Rust 安装,并重新安装 Rust,同时还会介绍一些常见的配置技巧,帮助…

使用springboot实现过滤敏感词功能

一,在springboot项目的resources目录里创建sensitive-words.text(敏感词文本) 每个词独自一行 列如: 赌博 吸毒 开票 二,在util创建工具类SensitiveFilter package com.nowcoder.community.util;Component public c…

Vue 苍穹外卖

Vue 苍穹外卖 node_modules:当前项目依赖的js包 assets:静态资源存放目录 components:公共组件存放目录 App.vue:项目的主组件,页面的入口文件 main.js:整个项目的入口文件 package.json:项…

评估视觉在CNN 在人类动作识别准确率

大家读完觉得有帮助记得关注和点赞!!! 抽象 本研究使用 COCO 图像语料库的三类子集探索人类动作识别,对从简单的全连接网络到 transformer 架构的模型进行基准测试。二进制 Vision Transformer (ViT) 实现了…

Self-supervised Learning(BERT/GPT/T5)

李宏毅老师《Pre-train Model》 什么是:Self-supervised Learning BERT BERT 能做什么 Mask Input Next Sentence Prediction(not helpful) BERT其它的能力 上述的能力,可以认为是一种填空的能力,那么除了这些,还有哪些有用的能力呢&…

《NuGet:.NET开发的魔法包管理器》

一、NuGet 初相识 在软件开发的广袤天地中,依赖管理始终是一个核心议题。想象一下,在没有高效包管理工具的年代,开发者如同在黑暗中摸索前行。当项目逐渐庞大,所需的外部库和组件日益增多,手动管理这些依赖就如同一场噩…

Vulkan 学习笔记12—深度缓冲

一、3D几何体与深度问题 Z坐标引入 将2D几何体扩展为3D时,需在Vertex结构体中添加glm::vec3 pos表示三维位置,并更新顶点输入描述符格式为VK_FORMAT_R32G32B32_SFLOAT。顶点着色器需接收3D坐标并通过模型-视图-投影矩阵转换为裁剪坐标。 深度冲突问题 当…

AWS EC2使用SSM会话管理器连接

🧩 前提条件 已创建并运行中的 Amazon EC2 实例(Amazon Linux 2023) 拥有管理员权限的 AWS 账户 已连接到实例(例如通过 EC2 Instance Connect) 第一步:手动安装 SSM Agent Amazon Linux 2023 默认未安…

Llama 4 模型卡及提示格式介绍

以下是Llama 4支持的特殊标记和标签的完整列表: 通用标记 <|begin_of_text|>:指定提示符的开始。 <|end_of_text|>:模型将停止生成更多标记。此标记仅由预训练的模型生成。 <|header_start|>…<|header_end|>:这些标记包含特定消息的角色。可能的…

flutter bloc 使用详细解析

源码地址 flutter_bloc 是基于 BLoC&#xff08;Business Logic Component&#xff09;模式的 Flutter 状态管理库&#xff0c;它封装了 bloc package&#xff0c;帮助我们更清晰地组织业务逻辑与 UI 的分离。核心思想是 事件驱动 和 状态响应。 &#x1f9e0; 原理简介 1. 核…

c++ 语言在无人机应用开发中的应用

C 语言在无人机应用开发中扮演着核心角色&#xff0c;特别是在对性能、实时性、资源利用效率和底层硬件控制有严格要求的领域。以下是其主要应用领域&#xff1a; 飞控系统 (Flight Control System - FCS) 核心功能&#xff1a; 这是无人机的大脑。C 用于实现核心的导航、制导与…

Uniapp本地存储(uni.setStorage)全面解析与实践指南

在移动应用开发中&#xff0c;本地存储是不可或缺的核心功能之一。作为跨平台开发框架&#xff0c;Uniapp提供了一套完善的本地存储解决方案&#xff0c;使开发者能够轻松实现数据的持久化存储。本文将深入探讨Uniapp本地存储的方方面面&#xff0c;从基础使用到高级技巧&#…

n8n教程:5分钟部署+自动生AI日报并写入飞书多维表格

哈喽&#xff0c;大家好&#x1f44f; 我是阿星&#xff01; 最近n8n太火了。什么是n8n&#xff1f;有点像扣子和dify的综合体。 简单来说就是替你打工的「自动化工作流」 我们今天就从部署&#x1f449;搭建第一个工作流。用它实现自动抓取新闻并分类。 教程有点长&#x…