当前位置: 首页 > news >正文

Pandas | 理性判断数据是否存在缺失值的一种方法

理性判断

    • 一般思路
    • 进一步思考
      • df['B'].explode()

一般思路

tcc.info()

在这里插入图片描述

上述信息info显示没有缺失值 但是真实的情况还是要根据业务实际分析
tcc.isnull().sum() # 和tcc.info()

在这里插入图片描述
作用和tcc.info() 其实是一样的

进一步思考

在此过程中,我们需要检验是否存在采用别的值来表亓缺失值的情况。就像此前所说我们通过isnull只能检验出None(Python/原生对象)和np.Nan(numpy/pandasi在读取数据文件时文件内部缺失对象的读取后表示形式)对象。
但此外我们还需要注意数据集中是否包含采用某符号表示缺失值的情况,例如某些时候可能使用空格(其本质也是一种字符)来代替空格:

df= pd.DataFrame({'A':['Y',None,'N','N'],'B':[np.NaN,'','Y','N']})
df

在这里插入图片描述

df.isnull()

在这里插入图片描述

但根据实际情况来看,空格可能确实是代表着数据采集时数据是缺失的,因此我们仍然需要将其识别然后标记为缺失值,此时可以通过比较数据集各列的取值水平是否和既定的一致来进行检查。例如,对于上述d数据集来说,特征A和B默认情况只有Y和N两种取值,而B列由于通过空格表示了缺失值,因此用nuniquei查看数据集的话,B列将出现3种取值:

df.nunique()

在这里插入图片描述

| 注意,缺失值None或NaN并不是某一种取值

此时我们可以进一步查看B列每个不同取值出现的次数:

df['B'].explode().value_counts().to_dict()

{‘’: 1, ‘Y’: 1, ‘N’: 1}

df[‘B’].explode()

pandas 中,explode() 函数用于将 DataFrameSeries 中的列表、元组、集合或字典类型的元素展开成多行。如果列中的元素是列表或类似的可迭代对象,explode() 会将这些元素分解成单独的行,每个元素占据一行,从而增加行数。

例如,假设你有一个 DataFrame df,其中包含一个名为 ‘B’ 的列,该列包含列表:

import pandas as pd# 示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3],'B': [[1, 2, 3], [4, 5], [6]]
})print("原始 DataFrame:")
print(df)

输出将是:

   A       B
0  1  [1, 2, 3]
1  2     [4, 5]
2  3      [6]

如果你对这个 ‘B’ 列使用 explode() 方法,每个列表中的元素将被展开成单独的行:

# 使用 explode() 展开 'B' 列
df_exploded = df['B'].explode().reset_index(drop=True)print("\n展开后的 DataFrame:")
print(df_exploded)

输出将是:

0    1
1    2
2    3
3    4
4    5
5    6

注意,explode() 默认返回的是一个 Series,如果你想要将其转换回 DataFrame,可以使用 reset_index(drop=True) 来重置索引并丢弃原来的索引。

explode() 方法不会修改原始的 DataFrame,它返回一个新的 DataFrameSeries。如果你想要直接在原始 DataFrame 上进行操作,可以使用 assign() 方法或者直接将结果赋值回原来的 DataFrame

http://www.lryc.cn/news/478901.html

相关文章:

  • ENSP (虚拟路由冗余协议)VRRP配置
  • move_base
  • Android Intent 跳转常见系统设置
  • [复健计划][紫书]Chapter 7 暴力求解法
  • 基于SpringBoot的社区讯息服务小程序【附源码】
  • springboot图书管理系统(一个简单的单体架构项目,适合小白)
  • 《CLR via C#》读书笔记--CLR的执行模型
  • Javascript常见数据结构及其应用场景
  • 简单的签到程序 python笔记
  • 30天如何成功转行成为AI产品经理?如果你也想转行到AI,赶紧进来抄作业!!!
  • 基于Python+Vue开发的蛋糕商城管理系统
  • WSL开发--利用Git连接远程仓库(详细步骤)
  • VLAN高级+以太网安全
  • R7:糖尿病预测模型优化探索
  • Spring核心:探索IoC容器与依赖注入的奥秘
  • 15分钟学 Go 实践项目二:打造博客系统
  • Follow软件的使用入门教程
  • 【IC验证】systemverilog的设计特性
  • 【点击劫持漏洞(附测试代码)】
  • 【AD】3-4 在原理图中放置元件
  • 协程2 --- 相关概念
  • Hadoop-005-HDFS分布式文件存储原理
  • 【多线程入门篇】 创建线程以及线程的属性
  • 三十四、Python基础语法(文件操作-上)
  • 【大咖云集,院士出席 | ACM独立出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17日)--冬季主会场
  • 03 Oracle进程秘籍:深度解析Oracle后台进程体系
  • AndroidStudio通过Bundle进行数据传递
  • Linux篇(文件管理命令)
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:数据存储分区的艺术与实践(下)(2/30)
  • 【数据结构】B树