高效的5个pandas函数,你都用过吗?

之前为大家介绍过10个高效的pandas函数,颇受欢迎,里面的每一个函数都能帮我们在数据分析过程中节省时间。pandas还有很多让人舒适的用法,这次再为大家介绍5个pandas函数,作为这个系列的第二篇。

1. explode

explode用于将一行数据展开成多行。比如说dataframe中某一行其中一个元素包含多个同类型的数据,若想要展开成多行进行分析,这时候explode就派上用场,而且只需一行代码,非常节省时间。

用法:

DataFrame.explode(self, column: Union[str, Tuple])

参数作用:

  • column : str或tuple

以下表中第三行、第二列为例,展开[2,3,8]:

# 先创建表 id = ['a','b','c'] measurement = [4,6,[2,3,8]] day = [1,1,1] df1 = pd.DataFrame({'id':id, 'measurement':measurement, 'day':day}) df1

使用explode轻松将[2,3,8]转换成多行,且行内其他元素保持不变。

df1.explode('measurement').reset_index(drop=True)

2. Nunique

Nunique用于计算行或列上唯一值的数量,即去重后计数。这个函数在分类问题中非常实用,当不知道某字段中有多少类元素时,Nunique能快速生成结果。

用法:

Series.nunique(dropna=True) # 或者 DataFrame.nunique(axis=0, dropna=True)

参数作用:

  • axis:int型,0代表行,1代表列,默认0;
  • dropna:bool类型,默认为True,计数中不包括NaN;

先创建一个df:

values_1 = np.random.randint(10, size=10) values_2 = np.random.randint(10, size=10) years = np.arange(2010,2020) groups = ['A','A','B','A','B','B','C','A','C','C'] df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1, 'value_2':values_2}) df

对year列进行唯一值计数:

df.year.nunique()

输出:10 对整个dataframe的每一个字段进行唯一值计数:

df.nunique()

3. infer_objects

infer_objects用于将object类型列推断为更合适的数据类型。

用法:

# 直接将df或者series推断为合适的数据类型 DataFrame.infer_objects()

pandas支持多种数据类型,其中之一是object类型。object类型包括字符串和混合值(数字及非数字)。

object类型比较宽泛,如果可以确定为具体数据类型,则不建议用object。

df = pd.DataFrame({"A": ["a", 1, 2, 3]}) df = df.iloc[1:] df

df.dtypes

使用infer_objects方法将object推断为int类型:

df.infer_objects().dtypes

4. memory_usage

memory_usage用于计算dataframe每一列的字节存储大小,这对于大数据表非常有用。

用法:

DataFrame.memory_usage(index=True, deep=False)

参数解释:
index:指定是否返回df中索引字节大小,默认为True,返回的第一行即是索引的内存使用情况;
deep:如果为True,则通过查询object类型进行系统级内存消耗来深入地检查数据,并将其包括在返回值中。

首先创建一个df,共2列,1000000行。

df_large = pd.DataFrame({'A': np.random.randn(1000000), 'B': np.random.randint(100, size=1000000)}) df_large.shape

返回每一列的占用字节大小:

df_large.memory_usage()

第一行是索引index的内存情况,其余是各列的内存情况。

5. replace

顾名思义,replace是用来替换df中的值,赋以新的值。

用法:

DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

参数解释:

  • to_replace:被替换的值
  • value:替换后的值
  • inplace:是否要改变原数据,False是不改变,True是改变,默认是False
  • limit:控制填充次数
  • regex:是否使用正则,False是不使用,True是使用,默认是False
  • method:填充方式,pad,ffill,bfill分别是向前、向前、向后填充

创建一个df:

values_1 = np.random.randint(10, size=10) values_2 = np.random.randint(10, size=10) years = np.arange(2010,2020) groups = ['A','A','B','A','B','B','C','A','C','C'] df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1, 'value_2':values_2}) df

将A全部替换为D:

df.replace('A','D')

将B替换为E,C替换为F:

df.replace({'B':'E','C':'F'})

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信号去噪算法:VMD、优化VMD、WD及多模型混合的Matlab实践

基于变分模态分解算法(VMD)、优化VMD算法、小波阈值去噪(WD)以及多模型混合的信号去噪算法 Matlab语言实现,代码质量极高,方便学习和替换数据。 在信号处理领域,去噪是一项至关重要的任务,它能让我们从嘈杂的数据中提取出真正有用…

每天五分钟:leetcode动态规划-递归与递推_day2

0)先记住一句话(贯穿两种写法)到第 n 阶的方法数:最后一步要么走 1 阶:从 n-1 来要么走 2 阶:从 n-2 来所以永远是:f(n) f(n-1) f(n-2)1)递归版本(从“大问题”往下问“…

基于Java的安全生产考试座位签到智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安全生产考试座位签到智慧管理系统主要功能模块包括会员管理、机构管理、考试安排管理、座位管理和理论签到管理。该系统采用SpringMVC开发框架,MySQL数据库,并结合JavaScript和ECharts.js实现数据可视化。普通员工负…

什么叫“结构表示”和“文本表示”不对齐?(Self)

在做 GNN 文本 / LLM 的服务推荐时,经常会看到一句话:“现有方法难以有效对齐结构表示与文本表示。”第一次看到这句话时,很容易误以为是向量数值范围不一样、尺度不同之类的数学问题。 但其实,这个理解是 不对的。一句话先说结论…

【大模型】-LangChain--RAG文档系统

文章目录1.完整代码2.结果展示3. RAG介绍1.完整代码 由于使用的是通义,所以代码改造了下,因为openAI需要钱 import streamlit as st import tempfile import osfrom langchain_classic.memory import ConversationBufferMemory from langchain_communi…

基于Java的安全生产视频监控智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安全生产视频监控智慧管理系统旨在通过先进的技术手段,提升企业安全管理效率与水平。该系统摒弃了传统的单一摄像头监控模式,引入会员、设备及事件管理等多层次功能模块,提供全方位的安全保障服务。相比以…

昇腾CANN从单算子到融合优化实战

目录 1 摘要 2 技术原理 2.1 架构设计理念解析 2.2 核心算法实现 2.2.1 三级流水线设计原理 2.2.2 Tiling策略与数据重用 2.3 性能特性分析 2.3.1 理论性能模型 2.3.2 实测性能数据 3 实战部分 3.1 完整可运行代码示例 3.2 分步骤实现指南 步骤1:环境配…

基于DSP的移相全桥开关电源设计资料:TMS320F28034控制模式下的50kHz高效率电源...

基于DSP的移相全桥开关电源设计资料 拓扑结构:移相全桥 控制芯片:TMS320F28034 控制模式&#xff1a;恒压限流控制模式 开关频率:50kHz 可以实现MOS零电压开通(ZVS) 输入电压范围:24Vdc~26Vdc 输出满载功率:100W 输出电压范围:12Vdc~24Vdc 最大输出电流:4.2A 输出纹波:<20…

无刷直流电机双闭环仿真:稳定运行与制动工况下的调制探索

无刷直流电机稳定运行和制动工况双闭环仿真&#xff0c;PWM-ON-PWM,PWM-OFF-PWM调制方式。 图一为拓扑图&#xff0c;图二为调制方式&#xff0c;图三为转速和电磁转矩波形&#xff0c;图四和图五为三相电流和电磁转矩放大和整体图&#xff0c;换相区间电磁转矩幅值较小&#x…

当AI遇上电影工业:一个让“抽卡式“视频生成彻底翻篇的工程化实践

从剧本到成片,我们如何用关键帧驱动理念重构AI视频生产流程 写在前面的话 说实话,当我第一次看到市面上那些"输入一句话就能生成视频"的AI工具时,内心是激动的。但当我真正尝试用它们做点正经事——比如制作一个30秒的品牌宣传片——我就发现了问题:生成的视频就像开…

探索非线性电液伺服系统的模型自适应反步控制

非线性电液伺服系统模型自适应反步控制&#xff0c;考虑模型参数不确定性。pdf教程matlab/simulink源程序 s函数编写在自动化控制领域&#xff0c;非线性电液伺服系统一直是个热门研究对象。今天咱们就聊聊它基于模型自适应反步控制&#xff0c;并且考虑模型参数不确定性的实现…

基于Java的安全生产能源安全智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安全生产能源安全智慧管理系统的设计与实现全面解析&#xff0c;系统功能模块涵盖应急预案管理、应急资源管理、应急演练管理等18个方面。相比传统选题&#xff0c;本项目具有显著优势&#xff1a;不仅创新性地引入了数据可视化组件ECharts…

当AI遇上A股:一个让机器读懂财经新闻的量化框架

"如果你能让机器理解新闻,它就能预测股价。"这听起来像科幻小说,但CSMD项目正在把这个想法变成现实。 一、缘起:股市预测为什么这么难? 周五下午三点,你盯着电脑屏幕上跳动的K线图,心里盘算着下周一该不该加仓。突然,手机推送了一条新闻:"某龙头企业获得重大技…

聊聊三相、五相电机的容错控制

三相、五相电机容错控制 三相电机断开一相容错控制&#xff1b; 五相电机断开一相、相邻两相容错控制在电机控制领域&#xff0c;容错控制可是个相当重要的课题。想象一下&#xff0c;电机在运行过程中突然某一相出了问题&#xff0c;如果没有有效的容错机制&#xff0c;那整个…

21、GNU 开发实用工具:函数、变量与调试技巧

GNU 开发实用工具:函数、变量与调试技巧 1. 关联数组与命名栈 在开发过程中,关联数组和命名栈是非常实用的数据结构。对于关联数组,可使用 defined 函数来测试键是否存在。 defined Arguments: 1: Name of associative array2: The key to test Returns: $(true) if …

基于Java的安全监管网络人员信息智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安全监管网络人员信息智慧管理系统基于Java技术栈实现&#xff0c;主要针对传统选题进行创新升级。系统涵盖基础字典管理、执法人员档案管理、执法证件管理和镇域管理四大模块功能&#xff0c;并采用SpringMVC开发框架与MySQL数据库相结合的…

16、构建与GNU Make的常见问题及算术实现

构建与GNU Make的常见问题及算术实现 在软件开发过程中,构建系统的效率和功能对于项目的顺利推进至关重要。本文将探讨一些构建相关的常见问题,以及如何利用GNU Make实现算术功能,甚至构建一个简单的计算器。 处理器数量与构建加速 在小型构建任务中,处理器数量对构建速…

基于Java的安全生产职业危害智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安全生产职业危害智慧管理系统集成了多项功能模块&#xff0c;如职业病防控管理、安全培训管理等二十个子系统。与传统选题相比&#xff0c;该系统的创新性在于结合了最新的数据可视化技术和预警预防机制&#xff0c;能够实现全面的数据监控…

信捷XDM PLC三轴可编程运动控制:强大且灵活的工业利器

信捷xdm plc三轴可编程运动控制支持信捷XDM系列PLC 信捷TG765触摸屏 支持直线插补 &#xff0c;圆弧插补&#xff0c;延时&#xff0c;等待输入ON&#xff0c;等待输入OFF&#xff0c;执行输出ON&#xff0c;执行输出OFF。可视化加工轨迹&#xff0c;支持电子手轮&#xff0c;改…