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.pswp.cn/web/91681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91681.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排序算法入門:直接插入排序詳解

這里寫目錄標題介紹原理代碼實現分析介紹 直接插入排序是一種簡單直觀的排序算法,適用于小規模數據或基本有序的數據集。其核心思想是構建有序序列,對于未排序數據,在已排序序列中從后向前掃描,找到相應位置并插入。 原理 我們…

ClickHouse MergeTree引擎:從核心架構到三級索引實戰

摘要 MergeTree是ClickHouse最核心的存儲引擎,采用列式存儲LSM-Tree架構設計,支持高效的數據寫入、合并和查詢。本文將全面解析MergeTree引擎的基礎概念、數據流、核心架構、索引系統以及常見問題。 基礎篇: 一、MergeTree引擎基礎概念 1. 定…

電腦手機熱點方式通信(上)

電腦連接手機熱點時的無線鏈路情況: 電腦上網時(從服務器下載數據,或者上傳指令、數據),首先電腦與手機之間基于WiFi協議在2.4G頻段或者5G頻段通信,然后手機與基站之間再基于4G LTE或者5G NR協議在2412MHz…

MySQL CPU占用過高排查指南

MySQL CPU 占用過高時,排查具體占用資源的表需結合系統監控、數據庫分析工具和 SQL 診斷命令。🔍 ?一、快速定位問題根源??確認 MySQL 進程占用 CPU?使用 top 或 htop 命令查看系統進程,確認是否為 mysqld 進程導致 CPU 飆升。若 MySQL 進…

軟件交付終極閘口:驗收測試全解析

驗收測試:軟件交付的關鍵環節 目錄 驗收測試:軟件交付的關鍵環節 一、驗收測試:軟件交付的終極閘口 核心目標與作用 在 SDLC 中的位置 二、驗收測試類型詳解:精準匹配業務場景 三、驗收測試全流程解析:從計劃到…

深度學習核心:卷積神經網絡 - 原理、實現及在醫學影像領域的應用

🧑 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C, C#,Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C、C#等開發語言,熟悉Java常用開發…

多線程(二) ~ 線程核心屬性與狀態

文章目錄一. 線程創建(start)(一)繼承Thread類,重寫run(二)繼承Runnable類,重寫run(三)Thread匿名內部類重寫(四)Runnable匿名內部類重…

Linux---編輯器vim

一、vim的基本概念1.三種模式①命令模式控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入插入模式或者進去底行模式②插入模式可進行文本輸入,按Esc回到命令行模式③底行模式文件保存或退出,也可以進行文件替換&#…

如何在 Ubuntu 24.04 或 22.04 LTS Linux 上安裝 Guake 終端應用程序

通過本教程的簡單步驟,在 Ubuntu 24.04 或 22.04 LTS Jammy JellyFish 上安裝 Guake 終端以運行命令。 Guake(基于 Quake)是一個基于 Python 的終端模擬器。Guake 的行為類似于 Quake 中的終端:通過某個按鍵(熱鍵)按下時,窗口會從屏幕頂部滾下來,再次按下相同的按鍵時…

谷歌Gemini 2.5重磅應用:多模態研究助手Multi-Modal Researcher,實現全網自動研究與AI播客生成

在人工智能賦能科研與內容創作的浪潮中,谷歌基于其最新大模型 Gemini 2.5 推出了突破性工具 Multi-Modal Researcher。這一系統通過整合多模態數據(文本、視頻、實時網絡信息),實現了從自動研究到內容生成的全流程自動化。用戶只需輸入研究主題或YouTube視頻鏈接,系統即可…

防御綜合實驗

一、實驗拓補圖二、實驗需求及配置需求一設備接口VLAN接口類型SW2GE0/0/2VLAN 10AccessGE0/0/3VLAN 20AccessGE0/0/1VLAN List : 10 20Trunk[SW2]vlan 10 [SW2]vlan 20 [SW2]interface GigabitEthernet 0/0/2 [SW2-GigabitEthernet0/0/2]port link-type access [SW2-GigabitEt…

堆----2.前 K 個高頻元素

347. 前 K 個高頻元素 - 力扣(LeetCode) /** 桶排序: 首先遍歷數組,使用HashMap統計每個元素出現的次數 創建一個大小為length 1的List數組,下標代表元素出現次數,出現次數一致的元素放在同一個數組中 倒數遍歷List數組即可得得到前K個高頻元素 細節注…

如何分析Linux內存性能問題

一、Linux中的buffer與cache的區別 Linux的內存管理與監控_linux服務器虛假內存和真實內存怎么區分-CSDN博客文章瀏覽閱讀66次。本文主要是關于【Linux系統的物理內存與虛擬內存講解】【重點對虛擬內存的作用與用法進行了講解說明】【最后還對如何新增擴展、優化、刪除內存交換…

二次型 線性代數

知識結構總覽首先是我們的二次型的定義,就是說什么樣的才算是一個二次型。然后就是如何把二次型化為標準型,最后就是正定二次型的定義和判斷的一些條件。二次型的定義二次型其實是一種函數表達的方式,如上,含義其實就是每個項都是…

云原生三劍客:Kubernetes + Docker + Spring Cloud 實戰指南與深度整合

在當今微服務架構主導的時代,容器化、編排與服務治理已成為構建彈性、可擴展應用的核心支柱。本文將深入探討如何將 Docker(容器化基石)、Kubernetes(編排引擎)與 Spring Cloud(微服務框架) 無縫…

vue讓elementUI和elementPlus標簽內屬性支持rem單位

vue讓elementUI和elementPlus標簽內屬性支持rem單位 如 Element Plus 的 el-table 默認不直接支持使用 rem 作為列寬單位 解決方法: 將 rem 轉換為像素值(基于根元素字體大小) // 計算rem對應的像素值 const calcRem (remValue) > {// 獲取根元素(ht…

基于OAuth2與JWT的微服務API安全實戰經驗分享

引言 在微服務架構中,API 安全成為了保護服務免受未授權訪問和攻擊的關鍵要素。本文結合真實生產環境案例,以實戰經驗為出發點,分享基于 OAuth2 JWT 的微服務 API 安全方案,從業務場景、技術選型、實現細節、踩坑及解決方案&…

scrapy庫進階一

scrapy 庫復習 scrapy的概念:Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架 scrapy框架的運行流程以及數據傳遞過程: 爬蟲中起始的url構造成request對象–>爬蟲中間件–>引擎–>調度器調度器把request–>引擎…

Objective-C實現iOS平臺微信步數修改指南

本文還有配套的精品資源,點擊獲取 簡介:本文介紹如何在iOS平臺上使用Objective-C語言,通過蘋果的HealthKit框架讀取和修改微信步數以及相關健康數據。首先介紹如何引入和使用HealthKit框架,包括請求權限、讀取步數數據、寫入步…

【ElementPlus】深入探索ElementPlus:前端界面的全能組件庫

📚 引言在現代 Web 開發中,創建既美觀又功能強大的用戶界面是一項挑戰。Element Plus,作為 Vue 3 生態中的明星 UI 組件庫,以其豐富的組件、優秀的性能和易用性贏得了廣大開發者的青睞。本文將全面覆蓋 Element Plus 的 常用核心組…