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

Python Pandas.unique函数解析与实战教程

Python Pandas.unique 函数解析与实战教程

摘要

本文章旨在全面地解析 pandas 库中的 unique 函数。pandas.unique 是一个用于从一维数组型(array-like)对象中提取唯一值的高效工具。我们将从其核心功能、函数签名、参数详解、返回值类型,到关键行为特性(如顺序保留、缺失值处理)进行详细阐述。此外,还将包含丰富的实战代码示例,涵盖不同数据类型的应用场景,并对 pandas.uniqueSeries.uniquenumpy.unique 及原生 set() 在性能上进行对比分析。最后,本文章将探讨一些常见的错误处理和使用注意事项,以帮助读者在数据分析实践中更准确、高效地使用此函数。


1. 核心功能与函数签名

pandas.unique 是 Pandas 库提供的一个顶层函数(top-level function),其主要目标是从一个一维数据结构中,按照值首次出现的顺序,提取出所有不重复的元素。

1.1 函数签名

pandas.unique 的函数签名非常简洁 。

pandas.unique(values)

1.2 参数详解 (values)

该函数仅接受一个参数:

  • values:
    • 类型: 1d array-like (一维数组型对象) 。
    • 说明: 这是你希望从中提取唯一值的数据源。它可以是多种形式,包括但不限于:
      • pandas.Series
      • pandas.Index
      • numpy.ndarray
      • Python list
      • Python tuple

1.3 返回值详解

pandas.unique 的返回值类型并不是固定的,而是取决于输入 values 的数据类型,这一点对于后续操作至关重要 。

  • numpy.ndarray: 这是最常见的返回类型。当输入是 pandas.Seriesnumpy.ndarray 或包含数值、字符串等基本类型的列表时,函数会返回一个 NumPy 数组 。
  • pandas.Index: 如果输入本身就是一个 pandas.Index 对象,则返回的唯一值集合也将被封装在一个新的 Index 对象中 。
  • pandas.Categorical: 如果输入的数据类型是 Categorical(分类型),则返回值也是一个 Categorical 对象,它包含了数据中实际出现的类别 。
  • ExtensionArray: 对于 Pandas 中其他扩展数组类型(如带时区的时间序列数据),函数会返回相应类型的 ExtensionArray

2. 关键行为特性

理解 pandas.unique 的核心行为是正确使用它的基础。

2.1 顺序保留

这是 pandas.unique 最重要的特性之一。它返回的唯一值是按照它们在原始数据 values首次出现的顺序排列的。函数不会对结果进行排序 。这与 numpy.unique(默认排序)和 Python 的 set(无序)有显著区别。

import pandas as pddata = pd.Series(['apple', 'banana', 'apple', 'cherry', 'banana'])
# 顺序将是 'apple', 'banana', 'cherry'
print(pd.unique(data))
# 输出: ['apple' 'banana' 'cherry']

2.2 缺失值处理

pandas.unique 将缺失值(NA)视为一个有效的、唯一的元素,并会将其包含在返回结果中 。这包括:

  • numpy.nan (用于浮点数)
  • None (用于对象类型)
  • pd.NA (通用缺失值标记)
  • pd.NaT (用于日期时间类型)
import numpy as npdata_with_na = [2, 1, np.nan, 3, 1, np.nan, 2]
# np.nan 会被当做一个唯一值包含在内
print(pd.unique(data_with_na))
# 输出: [ 2.  1. nan  3.]

如果你希望得到不包含缺失值的结果,需要在调用 unique 之前手动过滤掉它们 。

series = pd.Series([2, 1, np.nan, 3
http://www.dtcms.com/a/311321.html

相关文章:

  • mac中使用gvm install没有效果
  • 【Android】进度条ProgressBar 可拖拽进度条Seekbar
  • 云运维解决方案(word)
  • Python 入门指南:从零基础到环境搭建
  • 数字化转型-灯塔工厂建设
  • StyleX:Meta推出的高性能零运行时CSS-in-JS解决方案
  • 数字图像处理(冈萨雷斯)第三版:第一章绪论主要内容和重点——(数字图像处理的一些概念)
  • C语言数据结构(4)单链表专题2.单链表的应用
  • 什么是需量跟随
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路上头盔的检测识别(C#代码,UI界面版)
  • Linux 嵌入式开发全流程
  • C语言(长期更新)第7讲:VS实用调试技巧
  • LVGL + ESP-Brookesia 在Windows下的编译和运行
  • Elasticsearch+Logstash+Filebeat+Kibana单机部署
  • 卡尔曼滤波轨迹跟踪算法与MATLAB实现
  • GitHub 趋势日报 (2025年08月01日)
  • Kubernetes Service 全面详解:从概念到实践
  • 前端Canvas实现图片水印全攻略:从基础到高级防伪技术
  • 解决mac在安装nvm过程中可能遇到的一些问题
  • 深度学习核心:卷积神经网络 - 原理、实现及在医学影像领域的应用
  • 【读论文】从Qwen3技术报告到Qwen3-30B-A3B 模型的深度解读
  • 我的世界进阶模组教程——物品(2)
  • sqli-labs:65个关卡的文章汇总
  • 2025牛客多校第六场 D.漂亮矩阵 K.最大gcd C.栈 L.最小括号串 个人题解
  • C++冰箱管理实战代码
  • 【Flutter3.8x】flutter从入门到实战基础教程(八):公共state的集中管理机制
  • 人工智能开发框架 08. MNIST手写数字识别任务(一)
  • Java基础——实现图书管理系统交互功能
  • Hyper-V + Centos stream 9 搭建K8s集群(一)
  • HTTP数据请求