第十二篇:学习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中,并且清除了表格中的混乱数据




小结

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

暂时学到这,边学边写

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙 HarmonyOS 4.0】弹性布局(Flex)

一、介绍 弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉轴方向的尺寸称为交叉轴尺寸…

六、软考-系统架构设计师笔记-软件工程基础知识

1、软件工程 软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件并对上述方法的研究。 软件要经历从需求分析、软件设计、软件开发、运行维护,直至被淘汰这样的全过程,这个过程称为软件的生…

什么是聚簇索引与非聚集索引和区别?

什么是聚簇索引与非聚集索引和区别? 按物理存储分类:InnoDB的存储方式是聚集索引,MVISAM的存储方式是非聚集索引 test innodb.frm 测试 innodb.ibd Frame表结构 数据表索引数据 test myisam.frm ---->Frame表结构test myisam.MYD_---数据表数据test_myisam.MYl-…

HTML实体字符列表,必看

HTML、CSS、JS三大部分都起什么作用? HTML内容层,它的作用是表示一个HTML标签在页面里是个什么角色;CSS样式层,它的作用是表示一块内容以什么样的样式(字体、大小、颜色、宽高等)显示;JS行为层…

【论文笔记】Language Models are Unsupervised Multitask Learners

Language Models are Unsupervised Multitask Learners 回顾一下第一代 GPT-1 : 设计思路是 “海量无标记文本进行无监督预训练少量有标签文本有监督微调” 范式;模型架构是基于 Transformer 的叠加解码器(掩码自注意力机制、残差、Layernorm…

【Unity】ABB CRB 15000 外部引导运动

一、RobotStudio控制器的文件系统和配置参数 HOME:控制器文件系统的根目录或起始点。配置:机器人控制器的配置设置和参数。外件信息:连接到机器人的外部组件的信息。I/O 系统:输入/输出系统,管理机器人和外部设备之间的…

.[[backup@waifu.club]].wis最近多发,数据库被加密了能恢复吗?

Wis勒索病毒是怎样加密文件的? WIS勒索病毒加密文件的过程主要依赖于强大的加密算法,通常是RSA或AES等对称或非对称加密算法。这些算法可以非常快速地将用户的文件加密,使得文件在没有正确密钥的情况下无法被正常读取或打开。技术服务号&…

C#与欧姆龙PLC实现CIP通讯

参考文档: 欧姆龙PLC使用-CSDN博客 CIP通讯介绍(欧姆龙PLC)-CSDN博客 使用NuGet添加引用:CIPCompolet 基础参考我的CIP协议介绍,默认TCP端口为:44818 类NXCompolet 类的功能可以在安装PLC开发软件后帮…

Mol2文件处理-拆分、合并、提取名称、计数与格式转换

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、Mol2文件合并二、Mol2文件拆分为含有单个分子的文件三、Mol2文件分子名称修改与提取3.1 分子名称修改去除空格3.2 文件名称提取 四、Mol2文件包含分子计数4.1 Mol2文件中分子计数4.2 分子计数传…

Pytorch学习 day03(Tensorboard、Transforms)

Tensorboard Tensorboard能够可视化loss的变化过程,便于我们查看模型的训练状态,也能查看模型当前的输入和输出结果 在Pycharm中,可以通过按住ctrl,并左键点击某个库来进入源文件查看该库的使用方法SummaryWriter是用来向log_dir…

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器: 二、Queue队列 三、Map映射 四、题目(快递分拣 vector): 代码: 五、题目(CLZ银行问题 queue): 代码: 六、题目(费里的语言 map&…

通过 JS 获取和修改表单元素属性和样式属性

JS 获取和修改表单元素属性 表单(主要是指 input 标签)的以下属性都可以通过 DOM API来修改 value: input 的值checked: 复选框会使用selected: 下拉框会使用disabled: 禁用type: input 的类型(文本, 密码, 按钮, 文件等) 修改 input 的值 > value 示例1: 点击切换状态的…

【CSP试题回顾】202212-2-训练计划

CSP-202212-2-训练计划 解题思路 输入和初始化: 首先,代码从输入中获取项目的截止日期和项目数量。然后,它初始化一个项目列表,每个项目都有其依赖项、被依赖的项目集合、完成时间、总完成时间(包括依赖链&#xff09…

深度学习模型部署(番外3)神经网络不同层的量化方法

神经网络层量化 批归一化层Batch Normalization(BN层) 关于归一化的原理可以看之前的这篇blog:BatchNorm原理与应用 批归一化在推理过程中会被融合到上一层或者下一层中,这种处理方式被称为批归一化折叠。这样可以减少量化,也可以减少属于的…

EPSON RA8000CE (RTC模块)压电侠

RA8000CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块。它包括各种功能,如具有闰年校正的秒到年时钟/日历,时间警报,唤醒计时器,时间更新中断,时钟输出和时间戳功能,可以在外部或内部事件…

python 蓝桥杯填空题

文章目录 字母数判断列名(进制问题)特殊日期 字母数 由于是填空题,那么寻找的话,就直接让每一个位置都是A,通过计算看看是不是结果大于2022即可 判断列名(进制问题) 这道题目,我们可以往数字进制…

基于“xxx” Androidx平台的驱动及系统开发 之 触摸板篇

目录 一、基于全志 A133 Android10平台,适配1366x768 - ilitek2511触摸1、原理图分析2、驱动移植与适配3、补丁和资源文件 二、基于瑞芯微 RK3566 Android11平台,适配GT9XX触摸1、原理图分析2、补丁及资源文件 三、遇到的问题与解决1、基于amlogic Andro…

Pytorch学习07_torchvision中数据集的使用

torchvision torchvision 是 PyTorch 生态系统中的一个用于计算机视觉任务的包,它提供了一系列用于图像和视频处理的工具和数据集。torchvision 可以帮助你加载、预处理、增强和可视化图像数据,并提供了一些经典的计算机视觉模型和预训练权重&#xff0…

计算机网络——24路由器组成

路由器组成 路由器的结构概况 高层面(非常简化的)通用路由器体系架构 路由:运行路由选择算法/协议 (RIP, OSPF, BGP) - 生成 路由表转发:从输入到输出链路交换数据报 - 根据路由表进行分组的转发 输入端口功能 分布式交换: 根…

SkyWalking链路追踪上下文TraceContext的traceId生成的实现原理剖析

结论先行 【结论】 SkyWalking通过字节码增强技术实现,结合依赖注入和控制反转思想,以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣,很有意思!!! 【收获】 skywal…