python數據分析——apply 1

參考資料:活用pandas庫

? ? ? ? apply是指把函數同時作用于DataFrame的每一行或每一列。類似于編寫一些跨每行或每列的for循環,并同時調用apply函數。

1、函數

? ? ? ? 函數是對python代碼進行分組和復用的一種方法。如果某段代碼會被多次使用,并且使用時是需要做少量修改,這時就應該考慮把這段代碼放入一個函數中。

# 編寫一個函數
# 求平方的函數
def my_sq(x):"""求平方"""return x**2# 求平均數的函數
def my_avg(x,y):"""求兩個數的平均值"""return(x+y)/2

? ? ? ? 三重引號中的文本是文檔字符串。在查找某個函數的幫助文檔時,就會看到它們。可以是使用這些文檔字符串為自定的函數創建幫助文檔。

2、使用函數

# 導入庫
import pandas as pd# 創建一個DataFrame
df=pd.DataFrame({'a':[10,20,30],'b':[20,30,40]
})

(1)Series的apply方法

? ? ? ? Series有一個apply方法。該方法有一個func參數。當傳遞給它一個函數之后,apply方法就會把傳入的函數應用于Series的每個元素。

# 把自定義的平方函數應用于列a
sq=df['a'].apply(my_sq)
print(sq)

? ? ? ? 請注意,當把my_sq傳遞給apply時,不要在my_sq后面加上圓括號。

? ? ? ? 當自定函數有多個參數時,系統會將Series數據分配給第一個參數。

# 定義一個冪函數,包含兩個參數
def my_exp(x,e):return x**e
# 當把my_exp函數應用于一個Series時,除了要把my_exp傳遞給apply之外,
# 還要多久傳遞一個參數,用于指定指數的大小。
# 傳遞改參數時,可以使用關鍵字參數。
ex=df['a'].apply(my_exp,e=3)
print(ex)

(2)DataFrame的apply方法

? ? ? ? DataFrame通常有至少兩個維度(或稱字段/列)。因此,當向DataFrame應用一個函數時,首先需要指定應用該函數的軸,例如逐行或逐列。

? ? ? ? 如果把apply方法的axis參數設置為0(默認值),則表示按列應用指定函數。如果把axis參數設置為1,則按行應用指定函數。

? ? ? ? 當向DataFrame應用一個函數時(默認按列應用),這個軸(如列)會傳遞到函數的第一個參數中。

# 自定義一個函數,它接收一個值,并將其輸出。
def print_me(x):print(x)# 按列應用,函數的第一個參數就是一個完整數據列,而不是一列的某個值
df.apply(print_me)

? ? ? ? 如下的應用函數則會報錯:

# 自定義一個函數,含有3個參數
def avg_3(x,y,z):return (x+y+z)/3
# 
df.apply(avg_3)

? ? ? ? 正確的函數應用應該是:

3、apply高級用法

# 導入numpy庫
import numpy as np
# 導入Titanic數據集
titanic=pd.read_csv(r"...\seaborn常用數據案例\titanic.csv")
# 查看數據集的基本信息
print(titanic.info())# 編寫函數
def count_missing(vec):"""計算一個向量中缺失值的個數"""# 根據值是否缺失獲取一個由True/False值組成的向量null_vec=pd.isnull(vec)# 得到null_vec中的null值得個數# null值對應True,True為1,False為0null_count=np.sum(null_vec)# 返回向量中缺失值的個數return null_countdef prop_missing(vec):"""計算向量中缺失值的占比"""# 調用count_missing函數計算缺失值的個數num=count_missing(vec)# 獲得向量中元素的個數dem=vec.size# 返回缺失值的占比return num/demdef prop_complete(vec):"""向量中非缺失值的占比"""# 調用prop_missing函數計算缺失值的占比return 1-prop_missing(vec)# 按列應用,用于對列的缺失數據情況進行分析
cmis_col=titanic.apply(count_missing)
pmis_col=titanic.apply(prop_missing)
pcom_col=titanic.apply(prop_complete)
print(cmis_col)
print(pmis_col)
print(pcom_col)# 按行應用,用于行的缺失數據分析
cmis_row=titanic.apply(count_missing,axis=1)
pmis_row=titanic.apply(prop_missing,axis=1)
pcom_row=titanic.apply(prop_complete,axis=1)
print(cmis_row.head())
print(pmis_row.head())
print(pcom_row.head())

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

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

相關文章

JS Lab

如何用 JavaScript 在瀏覽器中彈窗如何在 JavaScript 中制作鼠標滑過按鈕改變背景顏色如何在 JS 中點擊按鈕使數字增加如何在 JS 中循環打印多少次 HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…

優化FPGA SelectIO接口VREF生成電路

引言&#xff1a;FPGA設計中使用了各種PCB SelectIO?接口VREF生成電路。有時即使在以前的設計中已經成功的在電路板上設計了VREF生成電路&#xff0c;也會在VREF引腳上發現大量噪聲&#xff08;200–400mV&#xff09;。大量VREF噪聲的存在可能導致高性能SelectIO接口&#xf…

瑞昱半導體AMB82 MINI(RTL8735B)Arduino 方法介紹

介紹瑞昱半導體&#xff08;Realtek &#xff09;AMB82-Mini 物聯網 AI開發板 Ameba是一個易于編程的平臺&#xff0c;用于開發各種物聯網應用程序。AMB82 MINI配備了各種外設接口&#xff0c;包括WiFi、BLE、GPIO INT、I2C、UART、SPI、PWM、ADC。通過這些接口&#xff0c;AM…

找出只出現一次的數字

輸入一些數字&#xff0c;每個數字以逗號分隔&#xff0c;其中有一個數字出現1次&#xff0c;其余數字均會出現2次。請找出那個只出現一次的數字! 提示&#xff1a;使用字典的方式實現 # 輸入一些數字&#xff0c;每個數字以逗號分隔 input_nums input("請輸入一些數字…

從0開始學統計-秩和檢驗

1.什么是秩和檢驗&#xff1f; 秩和檢驗&#xff0c;也稱為Wilcoxon 秩和檢驗&#xff0c;是一種非參數統計檢驗方法&#xff0c;用于比較兩個獨立樣本的中位數是否有顯著差異。它不要求數據滿足正態分布假設&#xff0c;因此適用于小樣本或者數據不滿足正態分布假設的情況。 …

51單片機-實機演示(單個數碼管)

仿真單個數碼管鏈接&#xff1a;http://t.csdnimg.cn/BLMut 一。插線 注意P00連接到A 測試代碼為 #include <reg52.h> //此文件中定義了單片機的一些特殊功能寄存器// sbit KEY2 P3^2; // 獨立按鍵2void main() {P0 0x00;while (1) {}…

Spring AOP實現Mapper層查詢返回重新賦值

需求&#xff1a; 針對查詢返回的數據&#xff0c;在數據庫層處理可能會影響到性能&#xff0c;在考慮性能及維護方便的情況下&#xff0c;采用AOP實現 1&#xff0c;自定義注解 import java.lang.annotation.*;/*** 針對 mapper層返回值 按照一定規則進行特殊處理后返回*/ Ta…

Vue學習JSON.parse()與JSON.stringify()對象與字符串互轉

Vue學習JSON.parse(&#xff09;與JSON.stringify(&#xff09;對象與字符串互轉 一、前言1、代碼 一、前言 JSON.parse() 和 JSON.stringify() 是 JavaScript 中用于處理 JSON 數據的兩個方法。 JSON.parse() 方法將一個 JSON 字符串解析為對應的 JavaScript 對象或數組。例…

kaggle競賽實戰3

接前文&#xff0c;本文主要做以下幾件事&#xff1a; 1、把前面處理完的幾個表拼成一個大表 2、做特征衍生&#xff08;把離散特征和連續特征兩兩組合得出&#xff09; # In[89]: #開始拼接表 transaction pd.concat([new_transaction, history_transaction], axis0, ignor…

JAVA實現圖書管理系統(初階)

一.抽象出對象: 1.要有書架&#xff0c;圖書&#xff0c;用戶&#xff08;包括普通用戶&#xff0c;管理員用戶&#xff09;。根據這些我們可以建立幾個包&#xff0c;來把繁雜的代碼分開&#xff0c;再通過一個類來把這些&#xff0c;對象整合起來實現系統。說到整合&#xf…

[數組查找]2.圖解二分查找及其代碼實現

二分查找 二分查找也是一種在數組中查找數據的算法。和線性查找不同&#xff0c;它只能查找已經排好序的數據。二分查找通過比較數組中間的數據與目標數據的大小&#xff0c;可以得知目標數據是在數組的左邊還是右邊。因此&#xff0c;比較一次就可以把查找范圍縮小一半。重復執…

嵌入式進階——舵機控制PWM

&#x1f3ac; 秋野醬&#xff1a;《個人主頁》 &#x1f525; 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 舵機信號線代碼示例初始化PWM初始化UART打印日志初始化外部中斷Extimain函數 舵機最早用于船舶上實現轉向功能,由于可以通過程序連…

MySQL中, 自增主鍵和UUID作為主鍵有什么區別?

首先我們來看看, 存儲自增主鍵和uuid的數據類型 我們知道, mysql中作為主鍵的通常是int類型的數據, 這個 數據從第一條記錄開始, 從1開始主鍵往后遞增, 例如我有100條數據, 那么根據主鍵排序后, 里面的記錄從上往下一次就是1, 2, 3 ... 100, 但是UUID就不一樣了, UUID是根據特殊…

打卡信奧刷題(21)用Scratch圖形化工具信奧P7071 [CSP-J2020] 優秀的拆分

使用2進制進行拆分是比較好的解決方案&#xff0c;畢竟對于大家來說二進制轉換是非常熟的&#xff0c;如果不會可以參考打卡信奧刷題&#xff08;19&#xff09;用Scratch圖形化工具信奧B3972 [語言月賽 202405] 二進制 題解 &#xff0c;輸出的時候再轉換一下輸出&#xff0c;…

M功能-支付平臺(三)

target&#xff1a;離開柬埔寨倒計時-221day 前言 今天周六&#xff0c;但是在柬埔寨還是工作日&#xff0c;想著國內的朋友開始休周末就羨慕呀&#xff0c;記不清在這邊過了多少個周六了&#xff0c;多到我已經習慣了。而且今天技術部還停電了&#xff0c;真的是熱的受不了呀…

c++11:智能指針的種類以及使用場景

指針管理困境 內存釋放&#xff0c;指針沒有置空&#xff1b;內存泄漏&#xff1b;資源重復釋放 怎樣解決&#xff1f; RAII 智能指針種類 shared_ptr 實現原理&#xff1a;多個指針指向同一資源&#xff0c;引用計數清零&#xff0c;再調用析構函數釋放內存。 使用場景…

ASP.NET 代碼審計

ASP.NET 官方文檔 名詞解釋 IIS&#xff08;Internet Information Services&#xff09; IIS 是微軟開發的一款 Web 服務器軟件&#xff0c;用于在 Windows 服務器上托管和提供Web應用程序和服務。它支持 HTTP、HTTPS、FTP、SMTP 等多種協議&#xff0c;主要用于&#xff1a…

基于混合Transformer-CNN模型的多分辨率學習方法的解剖學標志檢測

文章目錄 Anatomical Landmark Detection Using a Multiresolution Learning Approach with a Hybrid Transformer-CNN Model摘要方法實驗結果 Anatomical Landmark Detection Using a Multiresolution Learning Approach with a Hybrid Transformer-CNN Model 摘要 精確定位…

跨域計算芯片,一把被忽視的汽車降本尖刀

作者 |王博 編輯 |德新 2019年前后&#xff0c;「中央運算單元區域控制」的架構被提出。基于這一趨勢&#xff0c;從板級的多芯片&#xff0c;到板級的單芯片&#xff0c;集成度越來越高&#xff0c;跨域計算芯片隨之來到聚光燈下。 跨域計算芯片的特點是&#xff0c;與專為智…

Django 里傳參給html文件

第一步&#xff1a;在 urls.py 文件里修改 from django.contrib import admin from django.urls import path from app01 import views # 添加這一行urlpatterns [#path(admin/, admin.site.urls),path(index/, views.index), # 添加這一行 ]第二步&#xff1a;在 settings…