python入门项目:数据清洗

news2024/12/24 8:22:45

文章目录

  • 前言
  • 一、数据清洗是什么?
  • 二、重复值处理
  • 三 缺失值处理
  • 四、数据类型转换


前言

本文是对数据清洗的简单学习。
本文使用的数据来源为:博雅读书社所提供的数据
在这里插入图片描述


一、数据清洗是什么?

数据清洗是指在数据分析或挖掘之前进行的,对原始数据进行预处理以确保数据质量高、准确性好的一系列操作。其目的是识别、修改或删除数据集中不准确、不完整、重复、有误或非法的记录,以提高后续分析和建模过程的效率和准确性。

数据清洗中可能包括以下几种情况:

1、缺失值处理:对缺失数据进行填充或删除操作,使得数据集中不存在缺失值。

2、异常值处理:对数据集中异常值进行判断和处理,以避免对后续分析产生影响。

3、重复值处理:删除数据集中的重复记录,避免造成冗余和浪费。

4、数据类型转换:将数据中的字符串等类型转换为数值类型,以便能够进行更多的统计分析。

5、数据归一化:将不同维度的数据进行标准化,以避免由于数据单位等差异导致的分析误差。

通过数据清洗,我们可以把原始数据中的噪声和冗余信息清除,提升数据质量,更好地完成后续的数据分析和建模任务。

二、重复值处理

import pandas as pd
raw = pd.read_excel("shops_nm.xlsx")

#判断有没有重复的数据行
duplicate_raw = raw[raw.duplicated() == True]
if len(duplicate_raw) == 0:
    print("没有重复的数据行。")
else:
    print(duplicate_raw)
    
#制造一个重复的行  iloc[] 方法按照行、列的顺序提取
#print(raw.iloc[0,:])
raw.iloc[1,:] = raw.iloc[0,:] #把第一行赋给第二行
duplicate_raw = raw[raw.duplicated() == True]
if len(duplicate_raw) == 0:
    print("没有重复的数据行。")
else:
    print(duplicate_raw)
#判断店名
duplicte_shop = raw['店名'][raw['店名'].duplicated()==True]
if len(duplicte_shop) == 0:
    print("没有重复的数据行。")
else:
    print(duplicte_shop)
#去除重复的 drop_duplicates()
drop_duplicates_shops = raw.drop_duplicates(subset=['店名'])
print(drop_duplicates_shops.head())

程序的结果如图所示:
在这里插入图片描述
可以看到一开始是没有重复的数据行的,然后我就把第一行赋给了第二行,人为制造一个重复的数据行,然后找到这个重复的数据行,又找店名里面有没有重复的。最后是剔除重复的数据行。

三 缺失值处理

缺失值不一定指这个位置没有相应的数据,而是指这个位置填写的数据不能用,比如说一些不规范的填写也会造成缺失值。

import pandas as pd
raw = pd.read_excel("shops_nm.xlsx")
print(raw.shape)
#查找缺失值
null_raw = raw[raw['评价数'].isnull() == True]
print(null_raw)

#剔除
raw1 = raw[raw['评价数'].isnull() == False]
print(raw1.shape)

效果图如下,可以看到剔除完的数据行数减少了4行
在这里插入图片描述

四、数据类型转换

数据类型转换是什么意思呢?为什么要进行数据类型转换?举个简单的例子:
在这里插入图片描述
在图中人均的Series里面,可以看到,有些商家数据填写的不规范,本应该都是float类型,但是他里面会有汉字,这就涉及到数据类型的转换了,否则后面对数据进行处理的时候会出现很大的问题。

import pandas as pd
raw = pd.read_excel("shops_nm.xlsx")
print(len(raw))
#方法1:切片函数+for循环+if条件
filter_word = ["人均:","人均","大概","左右","差不多"]
for i in range(len(raw)):
    value = raw.loc[i,'人均']
    if type(value)== float or type(value)==int:
        continue
    for j in filter_word:
        if j in value:
            raw.loc[i,'人均']= raw.loc[i,'人均'].replace(j,'')
print(raw.head()['人均'])

结果如图所示:
在这里插入图片描述
可以看到,字符被清洗掉了,不过上面的方法还是不推荐使用的,有更高级的方法可以实现上面的功能:”apply()函数封装for循环+if条件判断“的方法。

#方法2apply()+for+if
def clean_price(x):
    filter_word = ["人均:", "人均", "大概", "左右", "差不多"]
    if type(x) == float or type(x) == int:
       return x
    for j in filter_word:
        if j in x:
            x.replace(j,'')
    return x

raw['人均']= raw['人均'].apply(clean_price)
print(raw.head()['人均'])

看上去一样,但是apply()的效率是for+if的5倍,如果数据量很大的话,差距就很明显了。

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

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

相关文章

Linux Shell 实现一键部署Rabbitmq

rabbitmq 前言 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代…

2023年企业选择云服务器配置方法教程

这篇文章主要介绍企业选择腾讯云CVM云服务器配置方法教程。现在随着互联网信息的飞速发展,任何企业都脱离不了互联网,越来越多的企业都通过互联网实施无纸化的办公,互联网推广一体化整体型推广、互联网电子商务。中小型企业网站如何选购云服务…

又一款 AI 应用开源了,让你的绘画作品动起来!

公众号关注 “GitHubDaily”设为 “星标”,每天带你逛 GitHub!2021 年的时候,Meta(前身是 Facebook)团队发布了一款非常有趣的 AI 工具,叫 Animated Drawings,它的牛逼之处,在于能借…

解锁ERD Online 高级隐藏功能

ERD Online 是全球第一个开源、免费在线数据建模、元数据管理平台。提供简单易用的元数据设计、关系图设计、SQL 查询等功能,辅以版本、导入、导出、数据源、SQL 解析、审计、团队协作等功能、方便我们快速、安全的管理数据库中的元数据。 ERD Online 产品图鉴 ERD …

使用DVSSL证书的钓鱼网站正在增加,如何识别钓鱼网站?

信息安全是一个庞大的领域,其中涉及到很多知识点,但是大多公司都对其没有提及足够的重视,希望随着国内对于安全的越来越重视以及各大主流浏览器对http网站的不友好,更多的公司也能在信息安全领域投入越来越多的注意。 然而&#…

C++IO流

目录 1. C语言的输入与输出 2. 流是什么 3. CIO流 3.1 C标准IO流 3.2 C文件IO流 4.stringstream的简单介绍 1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键 盘)读取数据,并将值存放在变量中…

vs中的错误集合

记录在vs 中遇到的 各种错误 1:project.vcxproj.filters 文件出现了异常,发现了以前的解决方案下的筛选器竟然没有了 原因:合并svn的时候 .vcxproj.filters 文件出现了 合并错误(检查该文件里面是否有不一样的) 解决办法:解决 该文…

Centos 7 上安装 Kubernetes 1.27 集群

Centos 7 上安装 Kubernetes 1.27 集群0. 安装 "Development Tools"1. 禁用swap2. 禁用防火墙3. 将SELinux设置为permissive模式4. 安装 ipset 和 ipvsadm5. 添加网桥过滤及内核转发配置文件6. 加载 overlay、br_netfilter、ip_tables、iptable_filter 模块7. 安装 c…

js调用gpt3.5(支持流回显、高频功能)

参考链接:直接在前端调用 GPT-3 API 效果图: 查看在线demo(要梯子) 注意: 1. 需要apiKey,自用安全,不要给别人 2. 需要梯子 3. 选择稳定、人少的代理ip 4. 不要频繁切换ip,防止封号 5. api调用上限高&…

李宏毅2023机器学习作业HW03解析和代码分享

ML2023Spring - HW3 相关信息: 课程主页 课程视频 Kaggle link Sample code HW03 视频 HW03 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. 即便 kaggle 上的时间已经截止,你仍然可以在上面提交和查看分数。但需要注意的是:在 kaggle…

SpringAOP入门基础银行转账实例------------事务处理

SpringAOP入门基础银行转账实例------------事务处理 AOP为Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP编程思想 AOP面向切面是一种编程思想,是oop的延…

Python 字符串format()格式化 / 索引

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 为了确保字符串按预期显示,我们可以使用 format() 方法对结果进行格式化。 字符串 format() format() 方法允许您格式化字符串的选定部分。 有时文本的一部分是你无法控制的,也许它们来自数据库或…

更深度了解getchar和putchar现象

目录 前言: 1.getchar和putchar 1.1基本使用 1.2一些特殊打印 1.3putchar打印空格 2.深度了解现象 前言: 经过学习,总结getchar()函数和putchar()函数在搭配使用while循环的时候,控制台窗口光标位置的出现位置的由来。 1.…

JavaSE学习进阶day04_03 包装类

第五章 包装类(重点) 5.1 概述 Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型…

蓝桥杯15单片机--超声波模块

目录 一、超声波工作原理 二、超声波电路图 三、程序设计 1-设计思路 2-具体实现 四、程序源码 一、超声波工作原理 超声波时间差测距原理超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍…

计算属性,watch和watchEffect

计算属性-computed 什么是计算属性: computed函数,是用来定义计算属性的,计算属性不能修改。 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。 计算属性还可以依…

【目标检测论文阅读笔记】Extended Feature Pyramid Network for Small Object Detection

(未找到代码,只有yaml文件) Abstract. 小目标检测仍然是一个未解决的挑战,因为很难提取只有几个像素的小物体的信息。虽然特征金字塔网络中的尺度级对应检测缓解了这个问题,但我们发现各种尺度的特征耦合仍然会损害小…

百度飞桨paddlespeech实现小程序实时语音流识别

前言: 哈哈,这是我2023年4月份的公司作业。如果仅仅是简单的语音识别倒也没什么难度,wav文件直接走模型输出结果的事。可是注意标题,流式识别、实时! 那么不得不说一下流式的优点了。 1、解决内存溢出的烦恼。 2、…

《论文阅读》Unified Named Entity Recognition as Word-Word Relation Classification

总结 将NER视作是word-word间的 Relation Classification。 这个word-word 间的工作就很像是TPlinker那个工作,那篇工作是使用token间的 link。推荐指数:★★★☆☆值得学习的点: (1)用关系抽取的方法做NER抽取 &…

佳明手表APP开发系列01——简单汉化英文版

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、佳明手表APP开发过程简介二、做个简单的个性化——在英文版写几个汉字1.MonkeyC 图形处理2.获得汉字点阵字模数据3.MonkeyC 汉字输出函数总结前言 佳明手表…