《Pandas 简易速速上手小册》第3章:Pandas 数据清洗基础(2024 最新版)

news2024/11/24 9:15:10

在这里插入图片描述

文章目录

  • 3.1 处理缺失数据
    • 3.1.1 基础知识
    • 3.1.2 重点案例:客户数据分析
    • 3.1.3 拓展案例一:医疗问卷数据处理
    • 3.1.4 拓展案例二:零售店库存清单
  • 3.2 数据类型转换
    • 3.2.1 基础知识
    • 3.2.2 重点案例:商品销售数据分析
    • 3.2.3 拓展案例一:员工信息处理
    • 3.2.4 拓展案例二:天气数据格式调整
  • 3.3 清理重复和异常数据
    • 3.3.1 基础知识
    • 3.3.2 重点案例:在线零售订单数据清洗
    • 3.3.3 拓展案例一:社交媒体用户分析
    • 3.3.4 拓展案例二:客户满意度调查数据清洗

3.1 处理缺失数据

处理缺失数据是数据分析中的一项基本技能。我们来深入了解如何在 Pandas 中识别和处理这些缺失值。

3.1.1 基础知识

  1. 识别缺失值: Pandas 使用 NaN(Not a Number)来表示缺失值。可以使用 isna()isnull() 函数来检测缺失值。
  2. 填补缺失值: 使用 fillna() 函数可以填补缺失值。可以指定一个特定的值,或者使用如平均值、中位数等统计数据。
  3. 删除缺失值: 如果数据中的缺失值太多,可以选择删除含有缺失值的行或列,使用 dropna() 函数。

3.1.2 重点案例:客户数据分析

假设你在处理一个客户数据库,这个数据库中有些客户信息不完整。

数据准备

import pandas as pd
import numpy as np

# 示例客户数据
data = {
    'name': ['Alice', 'Bob', 'Charlie', np.nan],
    'age': [25, np.nan, 30, 22],
    'city': ['New York', 'Los Angeles', np.nan, 'Chicago']
}
df = pd.DataFrame(data)

处理缺失值

# 填补缺失的年龄
df['age'].fillna(df['age'].mean(), inplace=True)

# 删除任何含有缺失值的行
df.dropna(inplace=True)

3.1.3 拓展案例一:医疗问卷数据处理

处理一份医疗问卷,其中一些问卷回答不完整。

数据准备

# 示例医疗问卷数据
med_data = {
    'patient_id': [1, 2, 3, 4],
    'survey_score': [np.nan, 8, 7, np.nan],
    'condition': ['Diabetes', np.nan, 'Heart Disease', 'Asthma']
}
med_df = pd.DataFrame(med_data)

处理缺失值

# 删除所有缺失的问卷评分
med_df.dropna(subset=['survey_score'], inplace=True)

3.1.4 拓展案例二:零售店库存清单

你需要处理一个零售店的库存清单,其中一些产品的价格未知。

数据准备

# 示例库存数据
inventory_data = {
    'product': ['Apple', 'Banana', 'Cherry', 'Date'],
    'price': [0.5, np.nan, 0.75, np.nan]
}
inventory_df = pd.DataFrame(inventory_data)

处理缺失值

# 将缺失的价格替换为该列的平均值
inventory_df['price'].fillna(inventory_df['price'].mean(), inplace=True)

通过这些案例,可以看到处理缺失数据在 Pandas 中是多么重要且容易操作。无论是客户数据分析,医疗问卷处理,还是零售库存管理,正确处理缺失值都能显著提高数据的准确性和可靠性。

在这里插入图片描述


3.2 数据类型转换

在数据分析中,确保每列数据的类型正确是至关重要的。Pandas 提供了灵活的工具来转换数据类型,从而让数据更适合分析。

3.2.1 基础知识

  1. 查看数据类型: 使用 df.dtypes 查看 DataFrame 中各列的数据类型。
  2. 转换数据类型: 使用 astype() 方法可以转换数据类型,如将字符串转换为整数或浮点数,反之亦然。
  3. 处理日期和时间: pd.to_datetime() 可以将字符串转换为日期时间格式。

3.2.2 重点案例:商品销售数据分析

假设你有一份商品销售记录,其中一些列的数据类型需要调整。

数据准备

import pandas as pd

# 示例商品销售数据
sales_data = {
    'product_id': ['001', '002', '003', '004'],
    'sales': ['30', '40', '50', '60'],
    'price': [1.5, 2.5, 3.0, 4.0]
}
sales_df = pd.DataFrame(sales_data)

数据类型转换

# 将 product_id 转换为字符串
sales_df['product_id'] = sales_df['product_id'].astype(str)

# 将 sales 转换为整型
sales_df['sales'] = sales_df['sales'].astype(int)

# 查看转换后的数据类型
print(sales_df.dtypes)

3.2.3 拓展案例一:员工信息处理

处理一份员工信息表,需要调整员工工号和入职日期的格式。

数据准备

# 示例员工信息
employee_data = {
    'employee_id': [123, 456, 789, 101],
    'start_date': ['2021-01-10', '2021-02-20', '2021-03-30', '2021-04-01']
}
employee_df = pd.DataFrame(employee_data)

数据类型转换

# 将 employee_id 转换为字符串
employee_df['employee_id'] = employee_df['employee_id'].astype(str)

# 将 start_date 转换为日期
employee_df['start_date'] = pd.to_datetime(employee_df['start_date'])

# 查看转换后的数据类型
print(employee_df.dtypes)

3.2.4 拓展案例二:天气数据格式调整

假设你有一份天气记录数据,其中温度记录为字符串,需要转换为浮点数。

数据准备

# 示例天气数据
weather_data = {
    'date': ['2021-01-01', '2021-01-02', '2021-01-03'],
    'temperature': ['32.0', '31.5', '30.0']
}
weather_df = pd.DataFrame(weather_data)

数据类型转换

# 将 temperature 转换为浮点数
weather_df['temperature'] = weather_df['temperature'].astype(float)

# 查看转换后的数据类型
print(weather_df.dtypes)

通过这些案例,你可以看到数据类型转换是如何帮助我们更好地准备和分析数据。无论是处理销售数据,员工信息,还是天气记录,正确的数据类型对于有效的数据分析至关重要。

在这里插入图片描述


3.3 清理重复和异常数据

数据清洗的重要一环是识别和处理重复及异常数据,这对于确保分析结果的准确性至关重要。

3.3.1 基础知识

  1. 识别重复数据: 使用 duplicated() 函数可以检测重复的行。
  2. 删除重复数据: drop_duplicates() 函数可以删除重复行。
  3. 识别异常数据: 异常数据通常是指那些不符合其他数据模式的数据点。可以通过各种统计方法(如 Z-score, IQR 等)识别。
  4. 处理异常数据: 处理方法包括删除、替换或转换这些异常值。

3.3.2 重点案例:在线零售订单数据清洗

假设你正在处理一份在线零售商的订单数据,其中包含重复记录和异常价格数据。

数据准备

import pandas as pd
import numpy as np

# 示例订单数据
order_data = {
    'order_id': [1, 2, 2, 3, 4, 5],
    'product': ['Widget', 'Gadget', 'Gadget', 'Thingamabob', 'Widget', 'Gadget'],
    'price': [19.99, 25.99, 25.99, 35.99, 19.99, 999.99]
}
orders_df = pd.DataFrame(order_data)

处理重复数据

# 删除重复的订单记录
orders_df.drop_duplicates(subset='order_id', keep='first', inplace=True)

处理异常数据

# 计算价格的 Z-score
orders_df['price_z'] = (orders_df['price'] - orders_df['price'].mean()) / orders_df['price'].std()

# 删除异常价格数据(Z-score > 3 或 < -3)
orders_df = orders_df[orders_df['price_z'].abs() <= 3]

3.3.3 拓展案例一:社交媒体用户分析

处理一份社交媒体用户活动数据,其中包含重复的用户记录和异常活动数据。

数据准备

# 示例社交媒体数据
social_media_data = {
    'user_id': [101, 102, 103, 101, 104, 105],
    'posts': [5, 8, 12, 5, 2, 45]
}
social_media_df = pd.DataFrame(social_media_data)

处理重复数据

# 删除重复的用户记录
social_media_df.drop_duplicates(subset='user_id', keep='first', inplace=True)

处理异常数据

# 使用 IQR 确定异常的帖子数量
Q1 = social_media_df['posts'].quantile(0.25)
Q3 = social_media_df['posts'].quantile(0.75)
IQR = Q3 - Q1
social_media_df = social_media_df[~((social_media_df['posts'] < (Q1 - 1.5 * IQR)) | (social_media_df['posts'] > (Q3 + 1.5 * IQR)))]

3.3.4 拓展案例二:客户满意度调查数据清洗

假设你有一份客户满意度调查数据,需要清除重复的调查结果和异常评分。

数据准备

# 示例客户满意度数据
survey_data = {
    'survey_id': [2001, 2002, 2003, 2002, 2004, 2005],
    'rating': [5, 3, 2, 3, 1, 10]
}
survey_df = pd.DataFrame(survey_data)

处理重复数据

# 删除重复的调查记录
survey_df.drop_duplicates(subset='survey_id', keep='first', inplace=True)

处理异常数据

# 删除评分在 1-5 之外的数据
survey_df = survey_df[survey_df['rating'].between(1, 5)]

通过这些案例,我们展示了如何在 Pandas 中有效地处理重复和异常数据。这些步骤对于保证数据集的质量和可靠性非常重要,无论是在零售、社交媒体分析还是客户满意度调查中。

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

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

相关文章

热仿真中稳态与瞬态的区别

对于热仿真&#xff0c;根据是否随时间变化&#xff0c;可分为稳态&#xff08;steady&#xff09;仿真和瞬态&#xff08;transient&#xff09;仿真两类。 从数学计算的角度&#xff0c;所谓稳态是指物理量不随时间变化的定常过程&#xff0c;即计算域中所有物理量均满足关系…

华章杂志华章杂志社华章编辑部2023年第11期目录

专题论文 强化人才队伍发展 推动法治唐山建设问题研究 (0003) 李彬 文化论坛《华章》投稿&#xff1a;cn7kantougao163.com 乡村振兴背景下非物质文化遗产传承与发展探究 ——以黔西南州传统蓝染文化为例 (0006) 董天丽;何华杰;韦永吉;王芳琳 思政课视角下高职学生保护和继…

Git系列---远程操作

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 引用 1.理解分布式版本控制…

第九篇【传奇开心果系列】Python的OpenCV技术点案例示例:目标跟踪

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例系列 短博文目录前言二、常用的目标跟踪功能、高级功能和增强跟踪技术介绍三、常用的目标跟踪功能示例代码四、OpenCV高级功能示例代码五、OpenCV跟踪目标增强技术示例代码六、归纳总结 系列短博文目录 Pytho…

绝地求生:地铁逃生模式从哪里进入游戏模式的讲解

地铁逃生模式是绝地求生&#xff08;PUBG&#xff09;中的一种游戏模式&#xff0c;玩家需要在地铁车厢中寻找武器并战胜其他玩家。如果你还不知道在哪里进入地铁逃生模式&#xff0c;本文闲游盒将为您进行详细的讲解。 进入地铁逃生模式的步骤&#xff1a; 打开绝地求生游戏客…

C++关键词auto详解

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、小思考 随着我们对于C的不断学习&#xff0c;遇到的程序越来越复杂&#xff0c;程序中用到的类型也越来越复杂…

麒麟V10 mate-indicator进程占用内存过高问题

给客户新划的5台虚拟机&#xff0c;操作系统是麒麟V10&#xff0c;用户反映什么软件都没装系统内存占用就达到80%。 百度了一下是麒麟的bug&#xff0c;内存泄漏。官方分析报告。 解决方法&#xff1a;下载相应rpm包并安装即可解决。 1.确定麒麟版本 cat /etc/*release Ter…

npm淘宝镜像过期解决办法

npm淘宝镜像过期解决办法 因为npm 官方镜像&#xff08;registry.npmjs.org&#xff09;在国内访问很慢&#xff0c;我们基本上都会选择切换到国内的一些 npm 镜像&#xff08;淘宝镜像、腾讯云镜像等&#xff09;。由于淘宝原来的镜像&#xff08;registry.npm.taobao.org&am…

肉食食材大数据平台(附源码)

目录 一.需求分析 1.项目背景 2.用户简介 3.术语定义 4.功能概述 二.概要设计 1.概要设计流程图 2.流程图详细说明 三.数据库设计 1.软件名称 2.概念结构设计 2.1电商模块 2.2猪肉今日价格模块 2.3大屏展示模块 2.3.1舆论舆情 2.3.2 省均价模块 2.3.3进出口模块…

Pyecharts绘制多种炫酷气泡图

Pyecharts绘制多种炫酷气泡图 引言 数据可视化是数据分析中不可或缺的一环&#xff0c;而Pyecharts作为一款基于Echarts的Python图表库&#xff0c;提供了丰富的图表类型&#xff0c;其中气泡图是一种常用于展示三维数据的炫酷图表。本文将介绍如何使用Pyecharts绘制多种炫酷…

【CSS】css获取子元素的父元素,即通过子元素选择父元素(使用CSS伪类 :has() :not() )

这里写目录标题 一、:has获取第一个div获取包含 a.active 的 li获取第二个div 二、:not除了类名为active 的 a,其他的a的字体都为18px <div><h1>标题</h1></div><div><ul><li><a href"#" class"active">测…

基于YOLOv8的水下生物检测,多种优化方法---自研注意力BSAM助力涨点(一)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了水下生物检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析&#xff0c;以及如何优化提升检测性能。 &#x1f4a1;&#x1f4a1;&#x1f4a1;加入自研注意力BSAM mAP0.5由原始的0.522提升至0.553…

【AG32VF407】国产MCU+FPGA,更新官方固件解决8Mhz内部晶振不准,Verilog实测7.9Mhz!

视频讲解 [AG32VF407]国产MCUFPGA&#xff0c;更新官方固件解决8Mhz内部晶振不准&#xff0c;Verilog实测7.9Mhz&#xff01; 实验过程 之前出现的双路pll不同频率的测试中&#xff0c;提出了内部晶振输出不准的问题&#xff0c;和官方沟通后得到极大改善&#xff0c;方法如下…

Excel技能——使用条件格式保护数据

1.选中需要保护数据的单元格 2.选择“条件格式”——“新建规则” 3.选择“使用公式确定要设置格式的单元格”——在条件单元格设置格式的位置&#xff0c;写“”——光标选中输入密码的单元格&#xff0c;此处是点击“123”处的单元格——输入“<>”&#xff08;意思是不…

Unity学习之Unity核心(一)2D相关

文章目录 1. 前言2 图片导入概述3 图片设置的六大部分3.1 纹理类型3.1.1 Default3.1.2 Normal Map 法线贴图格式3.1.3 Editor GUI and Legacy GUI3.1.4 Sprite3.1.5 Cursor 自定义光标3.1.6 Cookie 光源剪影格式3.1.7 LightMap光照贴图格式3.1.8 Single Channel 纹理只需要单通…

【Python 元类探秘】之四:深入检查类定义✨

【Python 元类探秘】之四&#xff1a;深入检查类定义 &#x1f50d; 前言 &#x1f389; 在 Python 的编程艺术中&#xff0c;元类&#xff08;Metaclass&#xff09;犹如幕后的导演&#x1f3ac;&#xff0c;悄然塑造着类的本质和行为。这个概念&#xff0c;虽然对于初学者来…

存内计算技术—解决冯·诺依曼瓶颈的AI算力引擎

文章目录 存内计算技术背景CSDN首个存内计算开发者社区硅基光电子技术存内计算提升AI算力知存科技存算一体芯片技术基于存内计算的语音芯片的实现挑战 参考文献 存内计算技术背景 存内计算技术是一种革新性的计算架构&#xff0c;旨在克服传统冯诺依曼架构的瓶颈&#xff0c;并…

家居设计软件的开发框架

家居设计软件的开发框架可以涵盖多个方面&#xff0c;包括图形渲染、用户界面、数据库管理等。以下是一些常用的开发框架和技术&#xff0c;可以用于家居设计软件的开发&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0…

linux解决访问/下载github连接超时或下载慢的问题

问题 我这里是树莓派从github下载资源出现无法连接&#xff0c;连接超时的问题&#xff0c;如下所示解决方式 修改/etc/hosts文件 例&#xff1a; sudo nano /etc/hosts #添加如下 192.30.255.112 github.com git 185.31.16.184 github.global.ssl.fastly.net这里以树莓派为…

element中calendar组件自定义显示(例如:日期上面显示工作负责人)vue+element自定义日历

目录 1. 属性了解&#xff08;[更多](https://element.eleme.cn/#/zh-CN/component/calendar)&#xff09;2. 代码实现3. 效果图 1. 属性了解&#xff08;更多&#xff09; 2. 代码实现 <template><div class"CalendarPage"><!-- 按年月筛选&#xf…