【数据分析面试】34.填充NaN值 (Python:groupby/sort_value/ffill)

2024-04-29 18:44

本文主要是介绍【数据分析面试】34.填充NaN值 (Python:groupby/sort_value/ffill),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

题目:填充NaN值 (Python)

给定一个包含三列的DataFrame:client_id、ranking、value

编写一个函数,将value列中的NaN值用相同client_id的前一个非NaN值填充,按升序排列。

如果不存在前一个client_id,则返回前一个值。

输入:

print(clients_df)
client_idrankingvalue
100111000
10012NaN
100131200
100211500
100221250
10023NaN
100311100
10032NaN

输出:

client_idrankingvalue
100111000
100211500
100311100
100121000
100221250
100321100
100131200
100231250

答案

解题思路

该问题的关键在于确定每个NaN值应该被填充的值。我们需要按照client_idranking升序排列DataFrame,并逐行处理NaN值。

答案代码

import pandas as pddef fill_nan(df):df.sort_values(by=['client_id', 'ranking'], inplace=True)  # 按client_id和ranking升序排列df['value'] = df.groupby('client_id')['value'].ffill()  # 使用前一个非NaN值填充NaNreturn df# 示例DataFrame
clients_df = pd.DataFrame({'client_id': [1001, 1001, 1001, 1002, 1002, 1002, 1003, 1003],'ranking': [1, 2, 3, 1, 2, 3, 1, 2],'value': [1000, None, 1200, 1500, 1250, None, 1100, None]
})print(fill_nan(clients_df))

groupby/sort_value/ffill

groupby()

官方文档:
pandas.DataFrame.groupby — pandas 2.2.2 documentation

语法说明:

DataFrame.groupby(by=None, axis=0, level=None, as_index=True,dropna=True)
  • by: 指定用于分组的列名或列名列表。
  • axis: 指定分组的轴向,默认为 0 表示按行分组。
  • level: 如果轴是多层索引的,则指定要在该级别上分组。
  • as_index: 指定是否将分组键作为索引,默认为 True。
  • dropna: 指定是否将 NaN 值排除在分组之外,默认为 True。

参数axis : 在2.1.0之后的版本被移除。对于 axis=1,使用 frame.T.groupby(...)

sort_values()

官方文档:pandas.DataFrame.sort_values — pandas 2.2.2 documentation

语法说明:

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False)
  • by: 指定用于排序的列名或列名列表。
  • axis: 指定排序的轴向,默认为 0 表示按行排序。
  • ascending: 指定是否按升序排序,默认为 True。
  • inplace: 指定是否在原地排序,默认为 False。

ffill()

官方文档 :pandas.DataFrame.ffill — pandas 2.2.2 documentation

语法说明:

DataFrame.ffill(axis=None, inplace=False, limit=None)
  • axis: 指定填充方向,默认为 None 表示沿着列的方向填充。
  • inplace: 指定是否在原地填充,默认为 False。
  • limit: 指定填充的最大连续 NaN 值的数量,默认为 None 表示不限制。

ffill 是 “forward fill”,向前填充缺失值,与之相对应的是bfill ,全称是 “backward fill”,意思是向后填充缺失值,即使用后一个非 NaN 值来填充缺失值。

更多详细答案可关注公众号查阅。
在这里插入图片描述

这篇关于【数据分析面试】34.填充NaN值 (Python:groupby/sort_value/ffill)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946863

相关文章

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模