Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python数据处理和数据清洗

python数据处理和数据清洗

作者头像
阑梦清川
发布于 2025-02-24 05:45:52
发布于 2025-02-24 05:45:52
22500
代码可运行
举报
文章被收录于专栏:学习成长指南学习成长指南
运行总次数:0
代码可运行

1.库的相关简介

python里面是通过模块体现库的,可以降低程序员的使用成本,提高程序的开发效率;

标准库:官方提供的;

第三方库:其他的大佬做出来的(数量庞大);

2.数据处理之添加新列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
df = pd.read_csv("/Users/feifei/hotpot.csv")

# 计算性价比评分,通过赋值,将结果添加为df的"性价比评分"列
df["性价比评分"] = (df["口味评分"]/df["人均消费"])*40

# 计算氛围评分,通过赋值,将结果添加为df的"氛围评分"列
df["氛围评分"] = (df["服务评分"]+df["环境评分"])/2

# 使用print()输出df
print(df)

什么叫做添加新列,就是我们在数学建模对于数据集合进行处理的时候,对于海量的数据,我们可能会根据这个已知的数据添加新的变量之类的,这个新的变量就是我们通过已知的数据得到的新的数据变量;

在上面这个案例里面,我们通过一个店铺的口味评分和人均消费凝练出来一个性价比评分作为新的数据变量,根据这个店铺的服务评分和环境评分凝练出来这个氛围的评分作为新的数据变量,最后这两个新的变量就会作为新的表头显示在我们原来的数据表格里面去;

3.处理结果的小数位数的处理

我们想要对于这个处理结果的小数的位数进行控制,我们可以使用一个函数:

因为这个里面是进行的多列索引,这个时候我们使用了这个索引的嵌套,round(2)表示对于所选择的数据进行保留两位小数的处理,并且更新原来的数据;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
df = pd.read_csv("/Users/feifei/hotpot.csv")

# 计算性价比评分,通过赋值,将结果添加为df的"性价比评分"列
df["性价比评分"] = (df["口味评分"]/df["人均消费"])*40

# 计算氛围评分,通过赋值,将结果添加为df的"氛围评分"列
df["氛围评分"] = (df["服务评分"]+df["环境评分"])/2

# TODO 使用round()函数对2个新列保留2位小数
df[["性价比评分","氛围评分"]] = df[["性价比评分","氛围评分"]].round(2)

# 使用print()输出df
print(df)

4.对于某一列的数据进行排序

我们上面综合得到了这个性价比评分和氛围评分,我们想要根据这两个指标进行这个店铺的排名

sort_values就是一个函数的调用,by=""表示的是对于某一列的内容进行处理,ascending=False表示的就是以降序的形式进行排序,如果我们没有写这个参数或者是等于true,都是以升序的形式进行排序;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用sort_values()对df的"性价比评分"列进行降序排序,并赋值给df_1
df_1 = df.sort_values(by="性价比评分",ascending=False)

# 使用sort_values()对df的"氛围评分"列进行降序排序,并赋值给df_2 
df_2 = df.sort_values(by="氛围评分",ascending=False)

# 使用print()输出df_1
print(df_1)

# 使用print()输出df_2
print(df_2)

5.选择我们想要的数据集合

我们的排序也完成了,接下来的就是只保留这个店铺的名称和性价比,并且打印显示出来前面的10名店铺作为我们的最佳选择;

head函数就会筛选出来前面的10个店铺打印出来,df_atmospyere这个里面存储的就是我们想要的两列的数据集合;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# TODO 使用sort_values()对df的列"氛围评分"进行降序排序,并赋值给df_2
df_2 = df.sort_values(by="氛围评分",ascending=False)

# TODO 使用多列索引的方式,访问df_2的"店铺名称""氛围评分"2列,并赋值给df_atmosphere
df_atmosphere = df_2[["店铺名称","氛围评分"]]

# TODO 使用print()输出df_atmosphere的前10print(df_atmosphere.head(10))

6.脏数据的介绍

6.1背景介绍

脏数据包括异常值,缺失值和重复值,把脏数据筛选出来,进行修正,填补的工作的过程,就是数据的清洗;

我们想要去处理这些脏的数据,就要首先导入这个pandas模块,进行文件的读取,然后进行这个数据集的格式转换,把这个里面的数据类型,单位进行修改;

下面的这个是一个平台的会员开通情况数据集合:

上面的这个就是我们要处理的数据大致情况,因为数据量很大,我们只截取出来这个里面的一小部分数据,简单的说明一下,这个表头的实际含义,分别是订单的编号,用户的id,价格(以分为单位),支付平台,支付渠道,支付方式,交易时间,支付时间;

6.2时间序列转换
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入pandas模块,简称为pd
import pandas as pd

# 读取路径为"/Users/clean/视频会员订单数据源.csv"的文件,赋值给变量df
df = pd.read_csv("/Users/clean/视频会员订单数据源.csv")

# 商品价格price,单位分转化成元
df['price'] = df['price'] /100

# 使用to_datetime()函数,将订单创建时间create_time,转化成时间格式
df['create_time'] = pd.to_datetime(df['create_time'])

# TODO 使用to_datetime()函数,将订单支付时间pay_time,转化成时间格式
df['pay_time'] = pd.to_datetime(df['pay_time'])

# 输出此时的df
print(df)

上面做的工作就是在原来的表格的基础上面进行这个单位的修改,把原来以分为单位的数据转换为以元为单位,把这个订单的两个时间全部转换为时间格式:使用to_datatime函数;

7.数据清洗

7.1快速浏览数据

我们上面已经完成了准备的工作,就是把这个相关的单位进行修正,和我们的这个时间序列的转换

下面我们使用这个info函数快速地浏览全部数据,确定每一列的数据的缺失情况,这个函数相当于print打印功能,显示出来存在的数据个数,通过这个打印结果,我们就可以发现,其他列的数据全部是78049,而这个platform这一列却是77645,这个时候我们就可以知道那些列缺失了多少的数据,因为大部分的数据都是完整的,只需要找出与众不同的数字;

7.2找到缺失值

我们上面已经确定这个数据是存在缺失的情况的,但是我们应该如何找到缺失数据的具体的位置呢

我们可以使用insull函数:找到一列里面每一行的数据是否缺失;

8.分类对于缺失的数据进行处理

数据缺失了怎么办,直接删除还是补全,针对于这个数据的多少和数据的重要程度,我们需要分情况进行处理;

如果是对于我们的研究很重要的数据,我们删除显然是不合适的;

但是如果一个数据集合有几十万的数据,我们删除几百个也是无伤大雅的:drop函数;

如果缺失值的数量较多,并且缺失值所在的这一列(这一个属性),并不是我们分析的重点时,可以对缺失值进行补全:fillna函数;

8.1对于缺失值的删除

我们首先筛选出来这个缺失值所在的行标,存储到dfPayNull这个series里面;

接下来使用drop函数进行数据的删除(删除行),参数就是我们得到的这个dfpaynull的index索引

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用布尔索引和isnull函数,将payment_provider这一列的缺失值筛选出,赋值给变量dfPayNull

# dfPayNull就是,包含所有payment_provider这一列缺失值的行
dfPayNull = df[df['payment_provider'].isnull()]

# TODO 使用drop函数,将dfPayNull,也就是包含所有payment_provider这一列缺失值的行删除
df.drop(index=dfPayNull.index,inplace=True)

# 使用df.info(),快速浏览数据集
df.info()
8.2对于缺失值的填充

df['platform']使我们需要填充的列对象,这个对象去调用fillna函数,参数有两个,第一个就是填充的内容,第二个就是缺失的行标;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# TODO 使用fillna()函数,用"unknown"填充platform的缺失值
df['platform'].fillna("unknown",inplace=True)

# 输出df.info()
df.info()

9.分析处理异常值

9.1一般处理

首先是一些比较明显的异常值:例如这个id肯定不可能是负数,这个时候对于id<0这个判断条件对于异常值进行删选。但是更多的是下面的情况:

这个时候我们需要使用一个函数进行处理:isin()函数

9.2特殊情况

我们使用这个函数筛选出来不是某些数据的索引,我们使用这个函数,异常数据返回的是false,这个时候我们使用取反运算符,当这个返回false就是我们认定的异常值;

9.3交易时间的筛选

交易时间必须在提交订单时间的后面,这个才是正常的,这个可以作为一个判断条件;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# TODO 使用布尔索引,将支付时间pay_time小于创建时间create_time的异常值筛选出来,赋值给变量dfWrongTime

dfWrongTime = df[df['pay_time'] < df['create_time']]

# 使用print输出dfWrongTime

print(dfWrongTime)

10.分析处理重复值

pandas的duplicated()函数专门对重复值进行处理。

duplicated()函数,判断重复的机制,是会把出现相同值的第二个及以后的数据,判断为True

这样,保证每个数据都保留一个唯一值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用布尔索引、duplicated函数,将order_id这一列的重复值筛选出来,赋值给变量dfOrderDu
dfOrderDu = df[df['order_id'].duplicated()]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
7步搞定数据清洗-Python数据清洗指南
作者:KOALA https://zhuanlan.zhihu.com/p/60241672
Ai学习的老章
2019/07/22
4.9K0
7步搞定数据清洗-Python数据清洗指南
机器学习:数据清洗与预处理 | Python
我们不论在学习机器学习还是数据分析中,都会涉及很多数据。但原数据不可避免有很多杂志,为了确保结果的准确性,我们需要首先进行数据清洗和预处理。
钮祜禄.爱因斯晨
2025/07/20
1750
机器学习:数据清洗与预处理 | Python
数据清洗与准备(2)
有时候我们并不是想要过滤缺失值,而是需要补全数据。大多数情况下,主要使用fillna方法补全缺失值,调用该方法时,可以传入一个常数来替代缺失值。
python数据可视化之路
2023/02/23
7370
数据清洗与准备(2)
Python代码实操:详解数据清洗
在缺失值的处理上,主要配合使用 sklearn.preprocessing 中的Imputer类、Pandas和Numpy。其中由于Pandas对于数据探索、分析和探查的支持较为良好,因此围绕Pandas的缺失值处理较为常用。
IT阅读排行榜
2019/08/19
5.3K0
Python代码实操:详解数据清洗
pandas数据清洗详细教程_excel数据清洗工具
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/04
1.2K0
pandas数据清洗详细教程_excel数据清洗工具
【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好
文章链接:https://cloud.tencent.com/developer/article/2472065
小馒头学Python
2024/11/28
5220
【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好
数据清洗与管理之dplyr、tidyr
先前已经讲过R语言生成测试数据、数据预处理和外部数据输入等内容,但这仅仅是第一步,我们还需要对数据集进行筛选、缺失值处理等操作,以便获得可以应用于建模或者可视化的数据集(变量)。接下来就以鸢尾花测试数据集进行进一步的数据管理和筛选操作。
1480
2019/06/20
2K0
数据清洗与管理之dplyr、tidyr
Pandas数据应用:股票数据分析
在当今的金融领域,股票市场是一个复杂且动态的系统。每天都有大量的交易发生,这些交易记录了价格、成交量等信息。对于投资者和分析师来说,如何从海量的数据中提取有用的信息是至关重要的。Pandas作为一个强大的Python库,在处理结构化数据方面表现出色,它为股票数据分析提供了便捷的方法。
Jimaks
2024/12/29
4940
Python数据科学(六)- 资料清理(Ⅰ)1.Pandas1.资料筛选2.侦测遗失值3.补齐遗失值
成功爬取到我们所需要的数据以后,接下来应该做的是对资料进行清理和转换, 很多人遇到这种情况最自然地反应就是“写个脚本”,当然这也算是一个很好的解决方法,但是,python中还有一些第三方库,像Numpy,Pandas等,不仅可以快速简单地清理数据,还可以让非编程的人员轻松地看见和使用你的数据。接下来就让我们一起学习使用Pandas!
Python攻城狮
2018/08/23
2.4K0
Python数据科学(六)- 资料清理(Ⅰ)1.Pandas1.资料筛选2.侦测遗失值3.补齐遗失值
Python数据分析~~美食排行榜
这个路径一定要选择正确,其实我对于这个路径并不是很理解,所以刚刚刚开始进行测试的时候就遇到了很多的报错,这个路径不是这个csv文件的路径,而是在这个vscode里面打开这个文件之后的路径,在这个文件里面打开的时候,显示的是D盘,但是在vscode上面打开之后,这个路径就成为了C盘,虽然我不知道为什么,但是这个使用C盘的路径才是正确的;
阑梦清川
2025/02/24
1480
“脏”数据毁一生?教你用大数据清洗术,给数据洗个“澡”!
在大数据世界里,我们都幻想过那种“算法一跑,洞察秒出”的场景,仿佛一切尽在掌控。但现实却是:80%的时间都在搞数据清洗,剩下的20%在怀疑人生。
Echo_Wish
2025/07/01
1380
“脏”数据毁一生?教你用大数据清洗术,给数据洗个“澡”!
数据整合与数据清洗
选择单列。可以直接用列名选择,也可以通过ix、iloc、loc方法进行选择行、列。
龙哥
2019/04/25
5.1K0
数据整合与数据清洗
数据分析之Pandas缺失数据处理
3. 缺失数据的运算与分组 3.1. 加号与乘号规则 3.2. groupby方法中的缺失值 4. 填充与剔除 4.1. fillna方法 4.2. dropna方法 5. 插值
Datawhale
2020/07/06
1.8K0
数据分析之Pandas缺失数据处理
数据清洗与准备(1)
在进行数据分析和建模过程中,大量时间花费在数据准备上:加载、清洗、转换和重新排列,这样的工作占用了分析师80%以上的时间。本章将讨论用于缺失值、重复值、字符串操作和其他数据转换的工具。
python数据可视化之路
2023/02/23
1K0
[数据清洗]- Pandas 清洗“脏”数据(二)
概要 了解数据 分析数据问题 清洗数据 整合代码 了解数据 在处理任何数据之前,我们的第一任务是理解数据以及数据是干什么用的。我们尝试去理解数据的列/行、记录、数据格式、语义错误、缺失的条目以及错误的格式,这样我们就可以大概了解数据分析之前要做哪些“清理”工作。 本次我们需要一个 patient_heart_rate.csv (链接:https://pan.baidu.com/s/1geX8oYf 密码:odj0)的数据文件,这个数据很小,可以让我们一目了然。这个数据是 csv 格式。数据是描述不同个体在不
数据分析
2018/03/01
2.2K0
[数据清洗]- Pandas 清洗“脏”数据(二)
Python数据清洗与预处理面试题解析
数据清洗与预处理是数据分析与机器学习项目中至关重要的环节。面试官往往期望候选人能熟练掌握Python中相关库(如Pandas、NumPy、Scikit-learn等)进行高效的数据清洗与预处理。本篇博客将深入浅出地探讨Python数据清洗与预处理面试中常见的问题、易错点以及如何避免这些问题,同时附上代码示例以供参考。
Jimaks
2024/04/20
4080
数据分析与数据挖掘 - 07数据处理
Pandas是数据处理中非常常用的一个库,是数据分析师、AI的工程师们必用的一个库,对这个库是否能够熟练的应用,直接关系到我们是否能够把数据处理成我们想要的样子。Pandas是基于NumPy构建的,让以NumPy为中心的应用变得更加的简单,它专注于数据处理,这个库可以帮助数据分析、数据挖掘、算法等工程师岗位的人员轻松快速的解决处理预处理的问题。比如说数据类型的转换,缺失值的处理、描述性统计分析、数据汇总等等功能。 它不仅仅包含各种数据处理的方法,也包含了从多种数据源中读取数据的方法,比如Excel、CSV等,这些我们后边会讲到,让我们首先从Pandas的数据类型开始学起。 Pandas一共包含了两种数据类型,分别是Series和DataFrame,我们先来学习一下Series类型。 Series类型就类似于一维数组对象,它是由一组数据以及一组与之相关的数据索引组成的,代码示例如下:
马一特
2020/09/24
2.8K0
数据分析与数据挖掘 - 07数据处理
Python数据分析实战(2)使用Pandas进行数据分析
Pandas的使用很灵活,最重要的两个数据类型是DataFrame和Series。
cutercorley
2020/08/26
4.3K0
【Python】机器学习之数据清洗
数据清洗,是数据分析的星光耀眼的序幕,因为原始数据集可能蕴含各种幽灵,而这些隐患将影响最终分析和建模的辉煌表演。通过巧妙的数据清洗,数据的可靠性得以提升,为分析和模型的绚丽演绎打下坚实基石。
SarPro
2024/02/20
4100
【Python】机器学习之数据清洗
Pandas数据处理与分析教程:从基础到实战
Pandas是一个开源的Python库,提供了高性能、易用和灵活的数据结构,用于数据处理和分析。它建立在NumPy之上,使得处理结构化数据更加简单和高效。Pandas的两个主要数据结构是Series和DataFrame,可以理解为NumPy数组的增强版。它们提供了更多的功能和灵活性,使得数据处理变得更加直观和方便。
全栈若城
2024/02/29
1.2K0
Pandas数据处理与分析教程:从基础到实战
推荐阅读
相关推荐
7步搞定数据清洗-Python数据清洗指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验