pandas数据清洗

数据清洗

数据清洗是对一些没有用的数据进行处理的过程。

很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要对使数据分析更加准确,就需要对这些没有用的数据进行处理。

在这个教程中,我们将利用 Pandas包来进行数据清洗。

处理丢失数据

  • 有两种丢失数据:

    • None
    • np.nan(NaN)
  • 两种丢失数据的区别

    image-20221216184253016

  • 为什么在数据分析中需要用到的是浮点类型的空而不是对象类型?

    • 数据分析中会常常使用某些形式的运算来处理原始数据,如果原数数据中的空值为NAN的形式,则不会干扰或者中断运算。
    • NAN可以参与运算的
    • None是不可以参与运算

    image-20221216184435760

  • 在pandas中如果遇到了None形式的空值则pandas会将其强转成NAN的形式。

    image-20221216184701301

pandas处理空值操作

  • isnull
  • notnull
  • any
  • all
  • dropna
  • fillna
  • 方式1:对空值进行过滤(删除空所在的行数据)

    • 技术:isnull,notnull,any,all

    image-20221216184808884

    #哪些行中有空值
    #any(axis=1)检测哪些行中存有空值
    df.isnull().any(axis=1) #any会作用isnull返回结果的每一行
    #true对应的行就是存有缺失数据的行
    

    image-20221216184933151

    df.notnull()
    

    image-20221216185037796

    df.notnull().all(axis=0) #all 只要有false,则整体就是false
    

    image-20221216185404342

    #将布尔值作为源数据的行索引
    df.loc[df.notnull().all(axis=1)]
    

    image-20221216191724327

  • 方式2:

    • dropna:可以直接将缺失的行或者列进行删除

      image-20221216191857413

    • 对缺失值进行覆盖

      • fillna
    df.fillna(value=999) #使用指定值将源数据中所有的空值进行填充
    

    image-20221216191935711

    #使用空的近邻值进行填充
    #method=ffill向前填充,bfill向后填充
    df.fillna(axis=0,method='bfill')
    

    image-20221216192102680

  • 什么时候用dropna什么时候用fillna

    • 尽量使用dropna,如果删除成本比较高,则使用fillna
  • 使用空值对应列的均值进行空值填充

    for col in df.columns:
        #检测哪些列中存有空值
        if df[col].isnull().sum() > 0:#说明df[col]中存有空值
            mean_value = df[col].mean()
            df[col] = df[col].fillna(value=mean_value)
    

    image-20221216192439379

面试题

  • 数据说明:
    • 数据是1个冷库的温度数据,1-7对应7个温度采集设备,1分钟采集一次。
  • 数据处理目标:
    • 用1-4对应的4个必须设备,通过建立冷库的温度场关系模型,预估出5-7对应的数据。
    • 最后每个冷库中仅需放置4个设备,取代放置7个设备。
    • f(1-4) --> y(5-7)
  • 数据处理过程:
    • 1、原始数据中有丢帧现象,需要做预处理;
    • 2、matplotlib 绘图;
    • 3、建立逻辑回归模型。
  • 无标准答案,按个人理解操作即可,请把自己的操作过程以文字形式简单描述一下,谢谢配合。
  • 测试数据为testData.xlsx

Data:

image-20221216192924858

  1. 丢帧预处理:

清洗掉none,none1列df.drop(label=['none','none1'],axis=1)

image-20221216193115163

  1. 删掉空值所在的行

    #删除空对应的行数据
    data.dropna(axis=0)
    

处理重复数据

image-20221216195234486

#检测哪些行存有重复的数据
df.duplicated(keep='first')

image-20221216195508150

第1行之所以是false,是因为keep保留了第一个出现的数据,但是3,5行就不保留了。如果keep=last,则保留最后一行数据;keep=false则删除所有数据

df.drop_duplicates(keep='first')删除重复数据

image-20221216195646879

处理异常数据

  • 自定义一个1000行3列(A,B,C)取值范围为0-1的数据源,然后将C列中的值大于其两倍标准差的异常值进行清洗

    df = DataFrame(data=np.random.random(size=(1000,3)),columns=['A','B','C'])
    

    image-20221216195838405

  • 判定条件:c值大于本列的方差的2倍,则为异常数据

    #制定判定异常值的条件
    twice_std = df['C'].std() * 2
    twice_std
    
    df['C'] > twice_std --> 异常值所在列
    ~df['C'] > twice_std --> 取反操作
    df.loc[~(df['C'] > twice_std)] --> 通过定位非异常值索引来获取正常值
    

    image-20221216200504384

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas数据清洗 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 爬虫学习1——request使用

    爬虫 什么是爬虫: – 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。 爬虫究竟是合法还是违法的? 在法律中是不被禁止 具有违法风险 善意爬虫 恶意爬虫 爬虫带来的风险可以体现在如下2方面:- 爬虫干扰了被访问网站的正常运营- 爬虫抓取了收到法律保护的特定类型的数据或信息 如何在使用编写爬虫的过程中避免进入局子的厄运呢? – 时常的优化自己…

    2023年3月31日
    00
  • django的auth模块学习

    auth 1.我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。 2.Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。 Django默认已经…

    2023年4月2日
    00
  • matplotlib画图基础知识

    matplotlib plt.plot()绘制线性图 绘制单条线形图 绘制多条线形图 设置坐标系的比例plt.figure(figsize=(a,b)) 设置图例legend() 设置轴的标识 图例保存 fig = plt.figure() plt.plot(x,y) figure.savefig() import matplotlib.pyplot as …

    2023年4月2日
    00
  • django学习_路由

    django2 路由控制器 Route路由,是一种映射关系。路由是把客户端请求的url路径和用户请求的应用程序,这里意指django里面的视图进行绑定映射的一种关系。 请求路径和视图函数不是一一对应的关系 在django中所有的路由最终都被保存到一个叫urlpatterns的文件里,并且该文件必须在主应用下的urls.py里进行声明,这是由setting文件…

    2023年4月2日
    00
  • linux下c语言的crypt函数怎么用?

    linux的crypt 最近学校布置了一个网安的小作业,要用到linux里面的这个crypt函数,写一篇总结一下。首先我们要了解这个函数是用来做什么的。 密码影子文件中存储了每一个用户的用户明文和其单向哈希过的秘文 cipher = “$1$C68vnJ27$1ttFZ1/Rylq/xi350A0NI0”; 密码字段用\(id\)salt$hashed的格式…

    Linux 2023年4月17日
    00
  • python模拟股票的数据分析

    股票分析 需求:股票分析 使用tushare包获取某股票的历史行情数据。 输出该股票所有收盘比开盘上涨3%以上的日期。 输出该股票所有开盘比前日收盘跌幅超过2%的日期。 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何? import tushare as ts import pandas…

    2023年4月2日
    00
  • 数据分析之pandas的使用

    pandas 为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类型的数据(字符串,时间序列),那么pandas就可以帮我们很好的处理除了数值型的其他数据! 什么是pandas? 首先先来认识pandas中的两个常用…

    2023年4月2日
    00
  • django学习__1

    Django python网络编程回顾 之前我们介绍过web应用程序和http协议,简单了解过web开发的概念。Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息 处理本次HTTP请求,即完成本次请求的业务逻辑处理 构造并返回处理结果——HTTP响应 import socket server = socket.socket() server.b…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部