第十二篇:学习python数据清洗

文章目录

  • 一、啥是数据清洗
  • 二、将表格数据导入pandas中
    • 1. 准备工作
    • 2. 引入csv文件
      • 2.1 引入pandas库
      • 2.2 读取文件/修改名称
      • 3.2 快速浏览数据
      • 2.4 修改名字
      • 2.5 查找缺失值
      • 2.6 删除缺失值
    • 3. 引入Excel文件
      • 3.1 引入pandas库
      • 3.2 读取Excel文件的人均GDP数据
      • 3.3 查看数据类型和non-null值计数
      • 3.4 重命名并删除空格
      • 3.5 数据类型转换
      • 3.6 摘要统计信息
      • 3.7 删除缺失值
      • 3.8 设置索引
  • 小结
  • 暂时学到这,边学边写

一、啥是数据清洗

数据处理和清洗是数据科学和机器学习领域中的重要环节,它们涉及到数据的预处理、转换、清理和整理等工作。在现实生活中,数据通常是不完美的,可能包含错误、缺失值、重复值等问题,因此需要进行数据处理和清洗。Python是一个非常流行的编程语言,它提供了许多强大的库来帮助我们进行数据处理和清洗,例如pandas、numpy、sklearn等。

二、将表格数据导入pandas中

1. 准备工作

请添加图片描述
下载以上文件,并准备好测试数据
我分别放在了

  • chapter01:在C盘——用户——Administrator——AAAAAAAAAA——data 数据内
  • EditPlus:在电脑E盘EditPlus中
  • Anaconda3:在C盘——ProgramData——Anaconda3中

准备好上面的工具之后在,开始界面单击开始,

在这里插入图片描述
然后会出现一个这个页面(显示的内容和——文件资源管理器——C盘——用户——Administrator这个文件夹下面的内容是一样的,可以在文件夹中创建一个文件夹,如果页面同步更新,说明操作无误):
在这里插入图片描述

然后右上角new——选择python3即可
在这里插入图片描述




2. 引入csv文件

2.1 引入pandas库

导入pandas库并设置环境,更轻松地查看输出

import pandas as pd
pd.options.display.float_format = '{:,.2f}'.format	#保留两位小数
pd.set_option('display.width',85)	#展示的宽度
pd.set_option('display.max_columns',8)	#展示的最大列数

2.2 读取文件/修改名称

读取文件,为标题设置新名称,然后解析日期列。
将skiprows参数设置为1,以跳过第一行,将列的列表传递给parse_dates以从这些列中创建一个Pandas日期时间列,并将low_memory参数设置为False,以减少过程中的内存使用量

代码如下:

landtempssample = pd.read_csv(r'data/landtempssample.csv',
names=['stationid','year','month','avgtemp','latitude','longitude','elevation','station','countryid','country'],skiprows=1,	#跳过第一行parse_dates=[['month','year']],low_memory=False)	#低内存运行
type(landtempssample)

运行效果:

在这里插入图片描述

3.2 快速浏览数据

使用head查看前几条数据,显示所有列的数据类型以及行和列的数量

查看前几行数据:

landtempssample.head(7)

效果如下:
在这里插入图片描述
查看行和列的类型:

landtempssample.dtypes

效果如下:
在这里插入图片描述
查看行和列的数量:

landtempssample.shape

效果如下:
在这里插入图片描述

2.4 修改名字

把日期列修改一个更好的名字,并且查看月份平均温度的摘要统计信息

landtempssample.rename(columns={'month_year':'measuredate'},inplace = True)
landtempssample.dtypes
landtempssample.avgtemp.describe()

效果如下:在这里插入图片描述

2.5 查找缺失值

使用isnull可以为每个列中的每个缺失值返回True,而在没有缺失值时返回False
将isnull和sum链接在一起时即可计算每一列中的缺失值数

landtempssample.isnull().sum()

具体效果如下:
在这里插入图片描述

2.6 删除缺失值

使用subset参数高速dropna删除avgtemp列包含缺失值的行,将inplace设置为True

landtempssample.dropna(subset=['avgtemp'],inplace=True)
landtempssample.shape

效果如下:
在这里插入图片描述




3. 引入Excel文件

3.1 引入pandas库

import pandas as pd

3.2 读取Excel文件的人均GDP数据

选择包含所需的数据的工作表,但跳过不需要的行和列,使用sheet_name参数即可指定工作表,将skiprows设置为4,skipfooter设置为1,以跳过前四行,和最后一行。设置usecols参数的值,以获取A列,从列到T列的数据

实例如下:

percapitaGDP = pd.read_excel('data/GDPpercapita.xlsx',
sheet_name = "OECD.Stat export",
skiprows = 4,# 跳过前四行
skipfooter = 1,# 跳过最后一行
usecols = "A,C:T")# 展示的列为A列和C—T列percapitaGDP.head()# 展示前五行

运行结果如下:
在这里插入图片描述

3.3 查看数据类型和non-null值计数

使用DataFrame的info方法,查看数据类型和non-null值计数:

实例:

percapitaGDP.info()

在这里插入图片描述

3.4 重命名并删除空格

将Year列重命名为metro,并且检查前导空格用startswith(‘’),使用endswith(‘’)检查后导空格,判断是否存在空格用any(),如果有就使用strip来删除前导和后导空格

重命名

percapitaGDP.rename(columns={'year':'metro'},inplace=True)

测试前导空格

percapitaGDP.metro.str.startswith('').any()

测试后导空格

percapitaGDP.metro.str.endswith('').any()

删除前导和末尾空格

percapitaGDP.metro = percapitaGDP.metro.str.strip()

具体如下:

在这里插入图片描述

3.5 数据类型转换

把所有年份的GDP年份列(2001-2018),并将数据类型从object转换为float,即使存在字符数据,也强制转换(目的是为了让这些字符串变为缺失值)最后,重命名年份列,为了更好地展示数据

具体如下:

for col in percapitaGDP.columns[1:]:percapitaGDP[col] = pd.to_numeric(percapitaGDP[col],errors='coerce')percapitaGDP.rename(columns={col:'pcGDP'+col},inplace = True)
percapitaGDP.head()

效果如下:
在这里插入图片描述
使用dtypes检查一下:

percapitaGDP.dtypes

在这里插入图片描述

3.6 摘要统计信息

使用describe为表中所有数字数据生成摘要统计信息

percapitaGDP.describe()

运行结果如下:

在这里插入图片描述

3.7 删除缺失值

  1. 使用dropna的subset参数检查所有列
  2. 使用how指定仅当subset所有列缺失时才删除行
  3. 最后使用shape显示结果行数和列数
percapitaGDP.dropna(subset = percapitaGDP.columns[1:],how="all",inplace = True)
percapitaGDP.describe()

具体如下:在这里插入图片描述

percapitaGDP.head()

如下图:
在这里插入图片描述
最后用shape显示行数列数

percapitaGDP.shape

运行如下:
在这里插入图片描述

3.8 设置索引

使用metro列设置索引
在设置索引之气那,确认metro列有480个有效值,并且有480个唯一值

percapitaGDP.metro.count()# 480个有效值percapitaGDP.metro.nunique()#480个唯一值

运行如下:

在这里插入图片描述
设置索引(并且输出检查一下):

percapitaGDP.set_index('metro',inplace = True)
percapitaGDP.head()

在这里插入图片描述
最后从表格查取数据:

percapitaGDP.loc['AUS02: Greater Melbourne']

效果如下:
在这里插入图片描述
到此!,已经把Excel数据成功导入到Pandas DataFrame中,并且清除了表格中的混乱数据




小结

写本文主要是为了分享我的学习过程,也是给自己记个笔记,哪里忘记了,回来再看一眼,也可以很快的回想起来

暂时学到这,边学边写

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

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

相关文章

Android中的几种定位方式调用详解

目前,移动端大致通过三种方式来进行设备定位:GPS、基站、wifi。本文就详细的讲解一下这几种定位方式和实现方法。 前言 android中我们一般使用LocationManager来获取位置信息,这里面有四中provider: public static final Strin…

怎样获取html网页中<ul >中的数据?

您可以使用Python中的BeautifulSoup库来获取HTML网页中<ul>标签中的数据。以下是一个示例代码&#xff1a; rom bs4 import BeautifulSoup import requests# 发送HTTP请求并获取网页内容 url "http://example.com" # 替换为目标网页的URL response request…

YOLOv8从入门到入土使用教程!(一)训练模型

⭐⭐⭐瞧一瞧看一看&#xff0c;新鲜的YOLOv9魔改专栏来啦&#xff01;⭐⭐⭐ 专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文将演示如何使用YOLOv8进行训练及预测&#xff01; 二…

线性dp 最长公共子序列(二分版本)

本题由于1e5的数据&#xff0c;n方的做法不再适用&#xff0c;但是简单的一维并不能满足动态转移。这时&#xff0c;我们就可以考虑引入最长上升子序列来处理 用样例来看 5 序列&#xff1a;3 2 1 4 5序号&#xff1a;1 2 3 4 5序列&#xff1a;1 2 3 4 5序号&#xff1a;3 2…

1.1 Java 注解(Annotation)

1.1 注解&#xff08;Annotation&#xff09; 1.1.1 什么是注解 注解的定义&#xff1a;它提供了一种安全的类似注释的机制&#xff0c;用来将任何信息或元数据&#xff08;metadata&#xff09;与程序元素&#xff08;类、方法、成员变量等&#xff09;进行关联。为程序的元…

九型人格测试,2号人格助人型的职业分析

九型人格测试中的助人型&#xff0c;也叫二号人格&#xff0c;解读专业选择和职业选择。 助人型人格&#xff0c;在九型人格中&#xff0c;被视作一种给予者&#xff0c;他们总是喜欢帮助别人&#xff0c;有一个观念&#xff1a;“我不帮助别人&#xff0c;就没有人愿意喜欢我…

透明玻璃屏幕为什么那么贵

透明玻璃屏幕之所以价格较高&#xff0c;主要是由于以下几个方面的原因&#xff1a; 技术研发与创新&#xff1a;透明玻璃屏幕作为一种先进的显示技术&#xff0c;其研发和制造过程涉及到许多复杂的技术。这些技术的研发和创新需要投入大量的资金和时间。此外&#xff0c;透明玻…

鸿蒙应用native开发入门以及运行native项目报错spawn EPERM问题解决以及so包调用

目录 DevEco Studio新建native项目 新建第一个native项目 解决spawn EPERM报错 点击运行 分析流程

无冬之夜:增强版 Neverwinter Nights Mac 激活版

Neverwinter Nights是一款角色扮演游戏。游戏的剧情发生在虚构的城市Neverwinter&#xff0c;玩家扮演一个冒险者&#xff0c;在这个城市中探索并完成各种任务。游戏中有许多不同的职业、种族、技能和法术可供玩家选择。游戏的主要特点包括多人游戏模式、自定义模块和工具包&am…

【Mc生存】插火把

【Mc生存】插火把 题目描述 话说有一天 linyorson 在“我的世界”开了一个 n n n \times n nn 的方阵&#xff0c;现在他有 m m m 个火把和 k k k 个萤石&#xff0c;分别放在 ( x 1 , y 1 ) ∼ ( x m , y m ) (x_1, y_1) \sim (x_m, y_m) (x1​,y1​)∼(xm​,ym​) 和 …

【书生·浦语大模型实战营】第5节 课后作业

LMDeploy 的量化和部署 0. 课程链接1. 课后作业1.1 基础作业1.2 进阶作业&#xff08;可选做&#xff09; 0. 课程链接 链接&#xff1a;https://github.com/InternLM/tutorial/blob/main/lmdeploy/lmdeploy.md 1. 课后作业 1.1 基础作业 使用 LMDeploy 以本地对话、网页Gra…

大模型技术在测试领域应用的方向思考

方向1&#xff1a;利用大模型技术生成测试用例 方向2&#xff1a;利用大模型技术进行测试用例推荐 如何利用大模型技术生成测试用例 大模型技术&#xff0c;如自然语言处理&#xff08;NLP&#xff09;中的大型预训练模型&#xff0c;如BERT、GPT等&#xff0c;已经在许多领…

HTML5:七天学会基础动画网页5

CSS3渐变 (可以给背景颜色设置一个渐变的效果) 线性渐变:Linear Gradients(从直线上向远处见面) 语法: background:linear-gradient(direction&#xff0c;color-stop1&#xff0c;color-stop2…)&#xff1b; direction:方向 to left, to right, 90deg 径向渐变:Radial …

Python Flask Web + PyQt 前后端分离的项目—学习成绩可视化分析系统

简介 使用工具&#xff1a; Python&#xff0c;PyQt &#xff0c;Flask &#xff0c;MySQL 注&#xff1a;制作重点在网页端&#xff0c;因此网页端的功能更全 WEB界面展示: 系统登录分为管理员&#xff0c;老师&#xff0c;学生3部分 管理员统一管理所有的账号信息以及登录…

Jenkins发送邮件、定时执行、持续部署

集成Allure报告只需要配置构建后操作即可。但如果是web自动化&#xff0c;或是用HTMLTestRunner生成报告&#xff0c;构建后操作要选择Publish HTML reports&#xff0c;而构建中还要添加Execute system Groovy script插件&#xff0c;内容&#xff1a; System.setProperty(&q…

【数据结构】用队列实现栈

下面是一些思路分析和代码分享&#xff0c;有需要借鉴即可。 1.问题描述 我想用队列来实现栈的功能&#xff0c;具体而言是用两个队列做底层做出栈的功能来。 有人可能会疑问会不会多次一举&#xff0c;这里仅作练习&#xff0c;为了更加进一步了解栈/队列的性质 2.思路分析 …

基于Spring Boot+ Vue的房屋租赁系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

抉择与发展:详解程序员在前端、后端与数据科学赛道上的职业定位与成长路径

作为一个程序员&#xff0c;选择职业赛道就像是在一座迷宫中探索前端的美丽花园&#xff0c;后端的黑暗洞穴&#xff0c;还有数据科学的神秘密室。每一条赛道都充满了挑战和机遇&#xff0c;而选择哪一条赛道将直接影响到你未来的职业发展和成就。对于每一位准备投身或已经在编…

搜维尔科技:捕获、分析、优化,使用 Xsens Ergo 创建更安全的工作空间

简化人体工程学分析&#xff0c;优先考虑员工福祉&#xff0c;并利用客观数据和见解提高生产力。 捕获。分析。优化。使用 Xsens Ergo 创建更安全的工作空间 1.质量数据 使用高质量、客观且经过验证的运动数据进行详细的人体工程学分析 2.随处使用 在最具挑战性的工作环境中…

HarmonyOS Stage模型 用程序运行切换 验证UIAbility 启动模式(下) 验证:specified启动模式 Ability间切换

上文 HarmonyOS Stage模型 用程序运行切换 验证UIAbility 启动模式(上) 验证:singleton、multiton、standard启动模式 我们已经验证完了 singleton multiton standard 三种启动模式 留下了毕竟复杂的 specified 这里 首先 我们要写两个不同的界面 index 编写代码如下 import…