數據處理和統計分析——08 apply自定義函數

1 apply()函數

1.1 apply()函數簡介

  • Pandas提供了很多數據處理的API,但當提供的API不能滿足需求的時候,需要自己編寫數據處理函數, 這個時候可以使用apply()函數;
  • apply()函數可以接收一個自定義函數,可以將DataFrame的行或列數據傳遞給自定義函數處理;
  • apply()函數類似于編寫了一個for循環,遍歷行/列的每一個元素,但比使用for循環效率高很多。

1.2 使用方法

  • 數據準備:

    在這里插入圖片描述

  • 自定義一個求平方的函數:

    在這里插入圖片描述

  • apply()函數有一個func參數,用于接收一個函數,然后應用于Series的每個元素

    • 注意:傳入的是函數名,不要帶上()

    在這里插入圖片描述

  • 如果自定義的函數有其它參數需要傳入時:

    在這里插入圖片描述

  • 上面是將自定義函數作用于Series,也可以作用于一整個DataFrame:

    在這里插入圖片描述

  • 如果自定義函數中有輸出語句:

    在這里插入圖片描述

  • 注意:apply()函數是直接將一整個DataFrame或者Series作為一個參數傳遞給自定義函數

    在這里插入圖片描述

    • 從報錯的信息中看到,實際上avg_3函數接收到的只有一個變量,這個變量可以是DataFrame的行也可以是DataFrame的列;
  • 使用apply()函數的時候,可以通過axis參數指定按行或者按列傳入數據;

    • axis = 0:按列處理(默認)

      在這里插入圖片描述

    • axis = 1:按行處理

      在這里插入圖片描述

2 apply()使用案例

  • 使用titanic數據集,先加載數據:

    在這里插入圖片描述

  • 準備三個函數:

    在這里插入圖片描述

  • 把前面定義好的函數應用于數據的各列:

    在這里插入圖片描述

  • 把前面定義好的函數應用于數據的各行:

    在這里插入圖片描述

3 函數向量化

  • 準備一個DataFrame:

    在這里插入圖片描述

  • 創建一個自定義函數,用于計算DataFrame中每行的平均值:

    在這里插入圖片描述

  • 修改一下上面的自定義函數,在其中加入一個if判斷,結果發現報錯:

    在這里插入圖片描述

    • ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 是因為在 avg_2_mod 函數中,嘗試對 pandasSeries 對象進行布爾判斷,而這種判斷在 pandas 中是不明確的;
    • x == 20 的問題:
      • avg_2_mod()函數中,xdf['a'],它是一個 pandasSeries 對象;
      • x == 20 會返回一個布爾型的 Series,表示 df['a'] 中每個元素是否等于 20;
      • 然而,if 語句需要一個單一的布爾值,而不是一個布爾型的 Series,因此會導致報錯;
  • 解決1:使用np.vectorize()將函數向量化

    在這里插入圖片描述

  • 解決2:使用@np.vectorize裝飾器,可以自動將一個普通的 Python 函數轉換為向量化函數

    在這里插入圖片描述

4 Lambda表達式

  • 當函數比較簡單的時候, 沒有必要用def創建函數,可以使用Lambda表達式創建匿名函數

    在這里插入圖片描述

    • lambda x: x + 1是一個匿名函數,它接受一個參數x,并返回x + 1
  • 或者:

    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91723.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91723.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91723.shtml

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

相關文章

C++冰箱管理實戰代碼

基于C++的冰箱管理實例 以下是一些基于C++的冰箱管理實例示例,涵蓋不同功能場景,每個示例聚焦特定實現點,代碼可直接擴展或整合到項目中。 示例1:基礎冰箱類定義 class Refrigerator { private:int capacity;std::vector<std::string> items; public:Refrigerator(…

【Python】【數據分析】Python 數據分析與可視化:全面指南

目錄1. 環境準備2. 數據處理與清洗2.1 導入數據2.2 數據清洗示例&#xff1a;處理缺失值示例&#xff1a;處理異常值2.3 數據轉換3. 數據分析3.1 描述性統計3.2 分組分析示例&#xff1a;按年齡分組計算工資的平均值3.3 時間序列分析4. 數據可視化4.1 基本繪圖示例&#xff1a;…

【AI】AIService(基本使用與指令定制)

【AI】AIService(基本使用與指令定制) 文章目錄【AI】AIService(基本使用與指令定制)1. 簡介2. AIService2.1 引入依賴2.2 編寫AIService接口2.3 測試代碼3. 指令定制3.1 系統提示詞3.2 用戶提示詞1. 簡介 AIService可以被視為應用程序服務層的一個組件&#xff0c;提供對應的…

AAAI趕稿后的心得

總結 已經第三次和老師們一起趕稿了&#xff0c;但是還是紕漏重重&#xff0c;每次都被我的垃圾寫作給嚇到。每次都手忙腳亂找不到重點&#xff0c;唉&#xff0c;我大概這輩子都成為不了郭老師&#xff1a; 自己把故事先捋清楚&#xff1a; 所有的東西都要抽象出來&#xff0c…

書籍推薦算法研究

## 項目概述本項目是一個完整的書籍推薦系統第五版(Complete Book Recommendation System V5),采用混合推薦策略,能夠處理6種不同的用戶場景,提供智能化的書籍推薦服務。## 系統架構### 核心設計思路系統采用**混合推薦策略**,結合了以下幾種推薦算法:1. **協同過濾推薦…

工具自動生成Makefile

cmake 基礎 cmake主要是生成Makefile&#xff0c;以便工程管理&#xff0c;只需要編寫CMakeLists.txt安裝camkesudo apt install cmake 安裝cmake camke --version 查看cmake版本 sudo apt upgrade cmake 升級cmake源碼隔離 在工程文件下創建一個build文件&…

Java項目:基于SSM框架實現的校園活動資訊網管理系統【ssm+B/S架構+源碼+數據庫+畢業論文+遠程部署】

摘 要 使用舊方法對校園活動資訊進行系統化管理已經不再讓人們信賴了&#xff0c;把現在的網絡信息技術運用在校園活動資訊的管理上面可以解決許多信息管理上面的難題&#xff0c;比如處理數據時間很長&#xff0c;數據存在錯誤不能及時糾正等問題。 這次開發的校園活動資訊網…

關于echarts的性能優化考慮

作為資深前端工程師&#xff0c;在處理 ECharts 性能問題時&#xff0c;核心思路是減少渲染壓力、優化數據處理、避免不必要的計算&#xff0c;尤其在大數據量&#xff08;萬級以上&#xff09;、高頻交互或多圖表場景下&#xff0c;性能優化尤為關鍵。以下是實戰中驗證過的有效…

汽車EDI:Vitesco EDI 項目案例

Vitesco Technologies&#xff08;緯湃科技&#xff09;脫胎于大陸集團的動力總成部門&#xff0c;是一家于2021年上市的全球領先汽車技術供應商。公司專注于電動出行領域&#xff0c;提供電驅動系統、電池管理系統、功率電子及熱管理等關鍵技術解決方案。同時&#xff0c;其業…

譯|Netflix 技術博客:一個利用視覺-語言模型和主動學習高效構建視頻分類器的框架

本篇介紹了Netflix的視頻標注器&#xff08;VA&#xff09;&#xff0c;一個利用視覺-語言模型和主動學習的交互式框架。其技術亮點在于通過人機協作系統&#xff0c;結合零樣本能力和主動學習&#xff0c;引導領域專家高效標注視頻數據&#xff0c;顯著提升了模型樣本效率和平…

前端應用權限設計面面觀

目錄 1. 權限設計:前端為啥要操這份心? 2. 權限模型的“內功心法”:RBAC 和 ABAC RBAC:簡單粗暴的角色分配 ABAC:靈活但燒腦的屬性控制 3. 權限數據的“物流體系”:從后端到前端的旅程 權限數據從哪兒來? 權限數據咋存? 權限數據咋用? 4. 路由守衛:權限的“第…

Javaweb————Apache Tomcat服務器介紹及Windows,Linux,MAC三種系統搭建Apache Tomcat

&#x1f3cd;?&#x1f3cd;?&#x1f3cd;?第一部分&#xff1a;什么是服務器&#xff1f; 服務器是遠程的一個電腦,里面安裝服務器程序監聽對應的端口對外提供服務&#xff0c;可以根據用戶的請求去獲取對應的數據并返回給調用方。 &#x1f3cd;?&#x1f3cd;?&#…

winsock socket通訊為什么UDP服務器無法獲取客戶端IP?

針對VB6 Winsock開發中UDP服務器無法獲取客戶端IP的問題&#xff0c;以下是系統性排查方案&#xff1a; 一、基礎協議特性確認UDP無連接特性 Winsock的UDP協議本身是無連接的&#xff0c;需通過GetPeerName方法主動獲取對端IP&#xff0c;而非自動存儲。數據接收處理 必須在Dat…

大模型時代,Transformer 架構中的核心注意力機制算法詳解與優化實踐

大模型時代&#xff0c;Transformer 架構中的核心注意力機制算法詳解與優化實踐Transformer 注意力機制深度解析與工業級優化實踐一、注意力機制核心原理1.1 基礎注意力公式1.2 多頭注意力&#xff08;Multi-Head&#xff09;1.3 注意力機制可視化二、工業級優化技術2.1 計算效…

自學嵌入式 day40 51單片機

一、嵌入式&#xff1a;以應用為中心&#xff0c;計算機為基礎&#xff0c;軟硬件可剪裁的專用計算機系統二、MCU&#xff1a;Micro Controcler Unit 微控制單元->單片機1、特點&#xff1a;集成化高&#xff0c;集成到一塊芯片外設&#xff08;GPIO、UART、ADC&#xff09;…

Minimizing Coins(Dynamic Programming)

題目描述Consider a money system consisting of n coins. Each coin has a positive integer value. Your task is to produce a sum of money x using the available coins in such a way that the number of coins is minimal. For example, if the coins are {1,5,7} and t…

Kafka——關于Kafka動態配置

引言在Kafka的運維實踐中&#xff0c;參數配置的調整曾是一件令工程師頭疼的事情。傳統模式下&#xff0c;Broker的所有參數都需要在server.properties中靜態定義&#xff0c;任何修改都必須重啟Broker才能生效。對于承載著核心業務的生產集群而言&#xff0c;頻繁重啟不僅意味…

MSQL-聚簇索引與非聚簇索引的比較

聚簇索引詳解InnoDB 的聚簇索引特性表數據本身就是聚簇索引&#xff1a;數據行實際存儲在聚簇索引的葉子節點中"表就是索引&#xff0c;索引就是表"的結構每個InnoDB表有且只有一個聚簇索引聚簇索引的葉子節點存儲的是&#xff1a;真實數據主鍵作為聚簇索引&#xff…

語音識別數據集

目錄 Voice Activity Detection 自己采集&#xff1a; 1. ASR Resources&#xff08;語音識別資源&#xff09; 2. LM Resources&#xff08;語言模型資源&#xff09; 這是一個數據表&#xff1a; 噪聲數據集&#xff1a; Voice Activity Detection 自己采集&#xff1a…

Linux線程同步與互斥(上)

目錄 前言 1.互斥 1.先來見一種現象&#xff08;數據不一致問題&#xff09; 2.如何解決上述問題 3.理解為什么數據會不一致&&認識加鎖的接口 4.理解鎖 5.鎖的封裝 前言 在前面對線程的概念和控制的學習過程中&#xff0c;我們知道了線程是共享地址空間的&#…