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

news2024/11/26 3:51:51

文章目录

  • 一、啥是数据清洗
  • 二、将表格数据导入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.coloradmin.cn/o/1493143.html

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

相关文章

速卖通关键字搜索API接口实战:Python代码与搜索策略解析

一、速卖通关键字搜索API简介 速卖通(AliExpress)作为阿里巴巴旗下的国际电商平台,为卖家和买家提供了便捷的交易渠道。其开放平台提供的API接口允许开发者集成速卖通的各种功能,其中之一就是关键字搜索API。通过这个API&#xf…

备考2024年北京高考数学:20114~2023十年选择题练习和解析

距离2024年高考还有三个月的时间,如何用三个月的时间再提高北京数学高考的成绩?吃透历年真题以及背后的知识点是行之有效的方法 之一。 今天我们来看一下2014-2023年的北京市高考数学的选择题,从过去十年(2014-2023)的…

【JSON2WEB】09 Amis-editor的代码移植到json2web

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

大语言模型的Scaling laws(尺度定律)的正确认识

源自:人工智能前沿讲习 “人工智能技术与咨询” 发布 实验一 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨,并不意味着支持其观点或证实其内容的真实性。版权归原作者所有,如转载稿涉及版权等问题,…

数据分析案例-二手车用户数据可视化分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

为什么被蜜蜂蛰了会肿得像馒头

有的人却只是一点点小鼓包。 病情分析:蜜蜂体内存在一种有毒物质,其主要成分是蚁酸,这种成分进入人体后,会和血液发生反应,导致皮肤表现出红肿和瘙痒的症状。一些人群还会对蜜蜂表现出过敏反应,此类人群在…

活动策划整体流程需要考虑哪些要素

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 活动策划整体流程中需要考虑的要素非常多,这些要素通常涵盖从策划前的准备到活动结束后的总结,以下是一些关键的考虑要素: 活动目标:确定活…

单片机为什么需要时钟?2种时钟电路对比?

目录 一、晶体振荡器(Crystal Oscillator)的核心知识 二、单片机为什么需要时钟电路? 三、单片机的时钟电路方案 01、外部晶振方案 02、内部晶振方案 四、总结 单片机研发设计的项目中,它的最小电路系统包含 电源电路复位…

QT:颜色选择器

普通 Qt提供了一个现成的QColorDialog类。 用法: #include <QColorDialog>QColor color QColorDialog::getColor(Qt::white, this); if(!color.isValid()){//点击 关闭 或 cancel 颜色无效 }else {ui->text->setText(color.name());//类似##ffffQRgb rgb colo…

Android9-W517-使用NotificationListenerService监听通知

目录 一、前言 二、前提 三、方案 方案一 方案二 方案三 方案四 方案五 方案六 方案七 四、关于NotificationListenerService类头注释 五、结论 一、前言 NotificationListenerService可以让应用监听所有通知&#xff0c;但是无法获得监听通知的权限&#xff0c;如…

x86 Ubuntu上编译eudev给龙芯loongarch64架构主机使用

1、下载eudev库eudev-master.zip&#xff0c;链接&#xff1a;eudev库官方地址 2、下载龙芯的交叉编译工具&#xff1a;loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2.tar.xz&#xff0c;链接&#xff1a;龙芯交叉编译官方地址 3、交叉编译器环境搭建 (1)、…

Spring-Cloud中服务发现是什么?干什么的?怎么用?

&#x1f413; 是什么 Spring Cloud通过Eureka或Consul等服务注册与发现组件来实现微服务间的相互感知。服务提供者将自己的服务信息注册到注册中心&#xff0c;服务消费者从注册中心获取服务提供者的信息&#xff0c;从而进行服务调用。 &#x1f413; 干什么 在Spring Cloud…

nodejs安装教程(及过程中的易错)

nodejs&#xff1a;Nodejs 是基于 Chrome 的 V8 引擎开发的一个 C 程序&#xff0c;目的是提供一个 JS 的运行环境。 npm&#xff1a;npm 是 Node Package Manager 的缩写&#xff0c;意思是 Node 的包管理系统&#xff0c;是最大的软件包仓库 下载nodejs 首先我们需要在node…

VNC 与 虚拟机 保姆级 快速入门图文指导

Time: 2024年3月5日22:31:49 By[ V ]: MemoryErHero 重要的事情先说三遍: 1 虚拟机内无需安装 VNC-Viewer-7.0.1-Windows 2 虚拟机内无需安装 VNC-Viewer-7.0.1-Windows 3 虚拟机内无需安装 VNC-Viewer-7.0.1-Windows 1 VNC 图文安装 流程 ① VNC-Viewer-7.0.1-Windows.e…

【Python】Python注册微服务到nacos

Python注册微服务到Nacos 1.Nacos部署 github 的nacos项目的发布页&#xff08;Releases alibaba/nacos GitHub &#xff09;&#xff0c;选择所要下载的nacos版本&#xff0c;在nacos下方的assets中选择安装包进行下载。 解压nacos安装包到指定目录。 tar -zxvf nacos-ser…

SpringCloud-MQ消息队列

一、消息队列介绍 MQ (MessageQueue) &#xff0c;中文是消息队列&#xff0c;字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。消息队列是一种基于生产者-消费者模型的通信方式&#xff0c;通过在消息队列中存放和传递消息&#xff0c;实现了不同组件、服务或系统…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart&#xff1a;手指触摸动作开始 bindtouchmove&#xff1a;手指触摸后移动 bindend&#xff1a;手指触摸动作结束 属性类型说明touchesArray触摸事件&#xff0c;当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

【数据结构和算法初阶(C语言)】顺序表+单链表经典例题图文详解(题解大合集,搭配图文演示详解,一次吃饱吃好)

目录 1.移除链表元素 1.1思路1&#xff1a;遍历删除 1. 2 思路2&#xff1a;尾插法 2.反转链表 3.链表的中间节点 3.1解题思想及过程 3.2快慢指针思想解题---变式&#xff1a;返回链表的倒数第K个节点 4.合并两个有序链表 4.1解题思想 1取小的尾插 5.反转链表 6…

【工作经验分享】,金三银四大厂面经总结

面试题 一般Android面试分为两部分&#xff1a;Java部分和Android部分&#xff0c;下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。 一 JAVA相关 1&#xff09;JAVA基础 1.java基本数据类型有哪些&#xff0c;int&#xff0c; long占几个字节 2. 和 equals有什…

Maven【5】在IDEA环境中配置和使用Maven

【1】创建父工程 1.创建 Project 按照idea工程的布局&#xff0c;project相当于父工程&#xff0c;里面的module相当于子工程&#xff08;模块工程&#xff09; 我们先来创建最外层这个父工程&#xff1a;