當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas.apply()用法及代碼示例


Pandas.apply允許用戶傳遞函數並將其應用於Pandas係列的每個單個值。這是對 Pandas 庫的一項重大改進,因為此函數有助於根據所需條件將數據隔離,從而有效地將其用於數據科學和機器學習。

安裝:
在終端上使用以下命令將Pandas模塊導入python文件:

pip install pandas

要讀取csv文件並將其壓縮為pandas係列,請使用以下命令:


import pandas as pd
s = pd.read_csv("stock.csv", squeeze=True)

用法:

s.apply(func, convert_dtype=True, args=())

參數:

  • func:.apply接受一個函數並將其應用於pandas係列的所有值。
    convert_dtype:根據函數的操作轉換dtype。
    args =():傳遞給函數而不是序列的其他參數。
    返回類型:應用函數/操作後的 Pandas 係列。

對於數據集,請單擊此處下載。

範例1:

以下示例傳遞一個函數,並依次檢查每個元素的值,並相應地返回低,正常或高。

import pandas as pd 
  
# reading csv 
s = pd.read_csv("stock.csv", squeeze = True) 
  
# defining function to check price 
def fun(num): 
  
    if num<200: 
        return "Low"
  
    elif num>= 200 and num<400: 
        return "Normal"
  
    else: 
        return "High"
  
# passing function to apply and storing returned series in new 
new = s.apply(fun) 
  
# printing first 3 element 
print(new.head(3)) 
  
# printing elements somewhere near the middle of series 
print(new[1400], new[1500], new[1600]) 
  
# printing last 3 elements 
print(new.tail(3))

輸出:

範例2:

在以下示例中,使用lambda在.apply自身中製作了一個臨時匿名函數。它將每個序列的值加5,然後返回一個新的序列。

import pandas as pd 
s = pd.read_csv("stock.csv", squeeze = True) 
  
# adding 5 to each value 
new = s.apply(lambda num : num + 5) 
  
# printing first 5 elements of old and new series 
print(s.head(), '\n', new.head()) 
  
# printing last 5 elements of old and new series 
print('\n\n', s.tail(), '\n', new.tail())

輸出:

0    50.12
1    54.10
2    54.65
3    52.38
4    52.95
Name: Stock Price, dtype: float64 

0    55.12
1    59.10
2    59.65
3    57.38
4    57.95
Name: Stock Price, dtype: float64

3007    772.88
3008    771.07
3009    773.18
3010    771.61
3011    782.22
Name: Stock Price, dtype: float64
 
3007    777.88
3008    776.07
3009    778.18
3010    776.61
3011    787.22
Name: Stock Price, dtype: float64

觀察到,新值=舊值+ 5



相關用法


注:本文由純淨天空篩選整理自Kartikaybhutani大神的英文原創作品 Python | Pandas.apply()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。