数据分析必备:一步步教你如何用Pandas做数据分析(15)

1、Pandas 数据丢失

Pandas 数据丢失的操作实例
在现实生活中,数据丢失始终是一个问题。机器学习和数据挖掘等领域在模型预测的准确性方面面临严重问题,因为缺少值会导致数据质量较差。在这些领域中,缺失值处理是使模型更准确和有效的主要重点。

1.1、什么时候以及为什么会丢失数据?

让我们考虑一项产品的在线调查。很多时候,人们不会共享与他们有关的所有信息。很少有人会分享他们的经验,但是不会分享他们使用该产品有多长时间;很少有人分享他们使用该产品的时间,他们的经历而不是他们的联系信息。因此,以某种方式或其他方式总是会丢失一部分数据,这在实时情况下非常普遍。
现在让我们看看如何使用熊猫处理缺失值(例如NA或NaN)。

# import the pandas library
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df)

运行结果

       one        two     three
a  -0.576991  -0.741695  0.553172
b        NaN        NaN       NaN
c   0.744328  -1.735166  1.749580

NaN replaced with '0':
         one        two     three
a  -0.576991  -0.741695  0.553172
b   0.000000   0.000000  0.000000
c   0.744328  -1.735166  1.749580

使用重新索引,我们创建了一个缺少值的DataFrame。在输出中,NaN表示不是数字。

1.2、检查缺失值

为了使检测的缺失值更容易(和不同阵列dtypes),熊猫提供ISNULL()和NOTNULL()功能,这也是对系列和数据帧的对象的方法-

 import pandas as pd
 import numpy as np
  
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df['one'].isnull())

运行结果

 a  False
 b  True
 c  False
 d  True
 e  False
 f  False
 g  True
 h  False
 Name: one, dtype: bool
**import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df['one'].notnull())**

运行结果

 a  True
 b  False
 c  True
 d  False
 e  True
 f  True
 g  False
 h  True
 Name: one, dtype: bool

1.3、缺少数据的计算

汇总数据时,NA将被视为零
如果数据均为不适用,则结果为不适用

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df['one'].sum())

运行结果

  2.02357685917
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(index=[0,1,2,3,4,5],columns=['one','two'])
 print(df['one'].sum()

运行结果:

   nan

1.4、清理/填充丢失的数据

Pandas 提供了多种清除缺失值的方法。fillna函数可以通过以下几种方法用非空数据“填充” NA值。

1.5、用标量值替换NaN

以下程序显示了如何将“ NaN”替换为“ 0”。

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(3, 3), index=['a', 'c', 'e'],columns=['one',
 'two', 'three'])
 df = df.reindex(['a', 'b', 'c']))
 print(df)
 print(("NaN replaced with '0':"))
 print(df.fillna(0))

运行结果

       one        two     three
a  -0.576991  -0.741695  0.553172
b        NaN        NaN       NaN
c   0.744328  -1.735166  1.749580

NaN replaced with '0':
         one        two     three
a  -0.576991  -0.741695  0.553172
b   0.000000   0.000000  0.000000
c   0.744328  -1.735166  1.749580

在这里,我们填充零值;相反,我们还可以填充其他任何值。

1.6、向前和向后填充NA

使用“重新索引”一章中讨论的填充概念,我们将填充缺少的值。
在这里插入图片描述

import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df.fillna(method='pad'))

运行结果

 one        two      three
a   0.077988   0.476149   0.965836
b   0.077988   0.476149   0.965836
c  -0.390208  -0.551605  -2.301950
d  -0.390208  -0.551605  -2.301950
e  -2.000303  -0.788201   1.510072
f  -0.930230  -0.670473   1.146615
g  -0.930230  -0.670473   1.146615
h   0.085100   0.532791   0.887415
import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df.fillna(method='backfill'))

运行结果

      one        two      three
a   0.077988   0.476149   0.965836
b  -0.390208  -0.551605  -2.301950
c  -0.390208  -0.551605  -2.301950
d  -2.000303  -0.788201   1.510072
e  -2.000303  -0.788201   1.510072
f  -0.930230  -0.670473   1.146615
g   0.085100   0.532791   0.887415
h   0.085100   0.532791   0.887415

1.7、删除缺失值

如果只想排除丢失的值,则将dropna函数与axis参数一起使用。默认情况下,axis = 0,即沿着行,这意味着如果一行中的任何值为NA,那么将排除整行。

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df.dropna())

运行结果

one two three a 0.077988 0.476149 0.965836 c -0.390208 -0.551605 -2.301950 e -2.000303 -0.788201 1.510072 f -0.930230 -0.670473 1.146615 h 0.085100 0.532791 0.887415
import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f',
 'h'],columns=['one', 'two', 'three'])
 df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
 print(df.dropna(axis=1))

运行结果

 Empty DataFrame
 Columns: [ ]
 Index: [a, b, c, d, e, f, g, h]

1.8、替换缺失的(或)通用值

很多时候,我们必须用某个特定值替换一个通用值。我们可以通过应用replace方法来实现。
用标量值替换NA是fillna()函数的等效行为。

 import pandas as pd
 import numpy as np
 df = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]})
 print(df.replace({1000:10,2000:60}))

运行结果

   one two
 0 10 10
 1 20 0
 2 30 30
 3 40 40
 4 50 50
 5 60 60
 import pandas as pd
 import numpy as np
 df = pd.DataFrame({'one':[10,20,30,40,50,2000], 'two':[1000,0,30,40,50,60]})
 print(df.replace({1000:10,2000:60})

运行结果

   one two
 0 10 10
 1 20 0
 2 30 30
 3 40 40
 4 50 50
 5 60 60

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

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

相关文章

godot.bk2

1.$node_name 其实 就是 get_node 的语法糖 2.场景内部用get_node,场景外部用信号 这是自定义信号的绑定,如果是内置信号,直接右键点击链接到一个函数即可 3.场景切换和摄像头一直居中 4.class_name命名一个类,extends继承&…

【TB作品】MSP430F149,ADC采集,光强GY-30,DS18B20温度采集

功能 读取了GY-30 DS18B20 P6.0ADC P6.1ADC 显示到了LCD12864 硬件 //GY30 //SCL–P1.0 //SDA–P1.1 //VCC–3.3V //GND–GND //ADDR–不接 //DS18B20 //DATA–P1.6 //VCC–3.3V //GND–GND //ADC //DATA–P1.6 //P6.0 P6.1 ADC输入口 部分程序 #include <msp430.h>…

碰撞检测技术在AI中的重要作用

引言&#xff1a; 随着人工智能技术的不断发展&#xff0c;AI已经渗透到我们生活的方方面面。在游戏、机器人、虚拟现实等领域中&#xff0c;碰撞检测技术扮演着至关重要的角色。本文将探讨碰撞检测技术在AI中的作用&#xff0c;以及如何利用这项技术来改善AI系统的性能和用户体…

网络空间安全数学基础·环

4.1 环与子环 &#xff08;理解&#xff09; 4.2 整环、除环、域 &#xff08;熟练&#xff09; 4.3 环的同态、理想 &#xff08;掌握&#xff09; 4.1 环与子环 定义&#xff1a;设R是一非空集合&#xff0c;在R上定义了加法和乘法两种代数运算&#xff0c; 分别记为ab和a…

考研数学:有些无穷小不能用等价无穷小的公式?

今天要给大家分享的笔记是&#xff1a;《有些无穷小虽然是无穷小&#xff0c;但却不能用无穷小的相关公式》&#xff1a;

MySQL(十一) 用户管理

1.用户 1.1 用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中 mysql> select host,user,authentication_string from user; --------------------------------------------------------------------- | host | user | authentication…

重载运算符C++---学习笔记

一、笔记 1. 重载运算符基础知识 重载运算符进行的运算和普通数的加减运算不同之处在于重载运算符的操作数为一个一个自定义的对象&#xff0c;所以相应的要对普通的运算符如-*%/的调用方法进行重写&#xff0c;重载的本质还是函数调用 2. 重载运算符的语法 重载运算符的语…

Python PyInstaller打包方法介绍

为了将开发好的Python工具交付给其他人使用&#xff0c;除了在目标电脑部署Python编译环境以外&#xff0c;我们还可以将它打包成可执行文件&#xff0c;这样目标电脑不需要安装Python环境就可以运行。将Python程序打包成可执行文件的方法有多种&#xff0c;比如Nuitka、PyInst…

Java基础教程:算术运算符快速掌握

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

基于HTML+CSS制作感恩,传统节日,感恩节【网页设计】

一、&#x1f468;‍&#x1f393;网站题目 &#x1f967; 感恩、&#x1f370;传统节日、&#x1f990;地方美食小吃文化、&#x1f37a;餐饮文化、等网站的设计与制作。 二、✍️网站描述 &#x1f367;感恩主题网站 主要对各种感恩进行展示&#xff0c;让浏览者清晰地了解…

c++初试

c初试 字符串的使用和bool类型 定义自己的命名空间my_sapce&#xff0c;在my_sapce中定义string类型的变量s1&#xff0c;再定义一个函数完成对字符串的逆置。 #include <iostream>using namespace std; namespace my_sapce {string s1 "abcdefg";void Inve…

基于字典树可视化 COCA20000 词汇

COCA20000 是美国当代语料库中最常见的 20000 个词汇&#xff0c;不过实际上有一些重复&#xff0c;去重之后大概是 17600 个&#xff0c;这些单词是很有用&#xff0c;如果能掌握这些单词&#xff0c;相信会对英语的能力有一个较大的提升。我很早就下载了这些单词&#xff0c;…

CPVT(ICLR 2023)论文解读

paper&#xff1a;Conditional Positional Encodings for Vision Transformers official implementation&#xff1a;GitHub - Meituan-AutoML/CPVT 存在的问题 位置编码的局限性&#xff1a;传统Transformer中的绝对位置编码&#xff08;无论是可学习的还是固定的&#xff…

“世界酒中国菜”系列活动如何助推乡村振兴和文化交流?

"世界酒中国菜"系列活动如何助推乡村振兴和文化交流&#xff1f; 《经济参考报》&#xff08;2024年5月24日 第6版&#xff09; 新华社北京&#xff08;记者 张晓明&#xff09; “世界酒中国菜”系列活动自启动以来&#xff0c;已在国内外产生了广泛影响。这一国家…

6,串口编程———通过串口助手发送数据,控制led亮灭

//功能&#xff1a;串口助手每次发送数据格式&#xff1a;0000& // 第二个字节控制LED1亮灭 // 第三个字节控制LED2亮灭 // 第四个字节控制LED3亮灭 // 第无个字节控制LED4亮灭 //要求&#xff1a;代码能够一直运行&#xff0c;能够接收多字节数据 上节讲了串口的基本…

生态融合促发展 YashanDB与丰图科技完成兼容性认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB V23与丰图科技智域城市数字孪生平台顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;充分满足企事业单位在高性能、高可用性、高稳定性及高可控性方面的核心需求&…

【Linux系统编程】冯诺依曼体系、操作系统、进程的认识

目录 一、认识冯诺依曼体系 二、认识操作系统 三、认识进程 一、认识冯诺依曼体系 我们日常使用的计算机&#xff0c;笔记本和我们不常见的计算机如服务器&#xff0c;它们都遵循冯诺依曼体系。 下图是冯诺依曼体系结构的图解&#xff1a; 我们可以看到冯诺依曼体系结构由…

String,StringBuffer ,StringBuilder 的区别及其详解

目录 一、String1.1 String介绍1.2 深入理解String的不可变性1.3 String 操作字符串方法 二、StringBuffer2.1 StringBuffer介绍2.2 StringBuffer 构造方法2.3 StringBuffer 常用方法 三、StringBuilder2.1 StringBuffer介绍 四、String&#xff0c;StringBuffer &#xff0c;S…

MySQL中的redo log 和 undo log

undo log和redo log 先引入两个概念&#xff1a; 当我们做了一些操作 (update/delete/insert)&#xff0c;提交事务后要操作MySql中的数据。 为了能够提升性能&#xff0c;引入了两块区域&#xff1a;内存结构和磁盘结构。 磁盘结构&#xff1a; 主要存储的就是数据页&#x…

OSG学习记录

osg开发配置与第一个osg程序-CSDN博客 #include <osg/Geode> #include <osg/ShapeDrawable> #include <osgViewer/Viewer> #include <iostream>int main(int argc, char** argv) {std::cout << "Hello, osg!" << std::endl;osg:…