国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

pandas之a(chǎn)pply函數(shù)簡(jiǎn)介及用法詳解

這篇具有很好參考價(jià)值的文章主要介紹了pandas之a(chǎn)pply函數(shù)簡(jiǎn)介及用法詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.基本信息

? Pandas 的 apply() 方法是用來調(diào)用一個(gè)函數(shù)(Python method),讓此函數(shù)對(duì)數(shù)據(jù)對(duì)象進(jìn)行批量處理。Pandas 的很多對(duì)象都可以使用 apply() 來調(diào)用函數(shù),如 Dataframe、Series、分組對(duì)象、各種時(shí)間序列等。

2.語(yǔ)法結(jié)構(gòu)

? apply() 使用時(shí),通常放入一個(gè) lambda 函數(shù)表達(dá)式、或一個(gè)函數(shù)作為操作運(yùn)算,官方上給出DataFrame的 apply() 用法:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwargs)

參數(shù):

  • func:函數(shù)或 lambda 表達(dá)式,應(yīng)用于每行或者每列

  • axis:{0 or ‘index’, 1 or ‘columns’}, 默認(rèn)為0

    • 0 or ‘index’: 表示函數(shù)處理的是每一列
    • 1 or ‘columns’: 表示函數(shù)處理的是每一行
  • raw:bool 類型,默認(rèn)為 False;

    • False ,表示把每一行或列作為 Series 傳入函數(shù)中;
    • True,表示接受的是 ndarray 數(shù)據(jù)類型;
  • result_type:{‘expand’, ‘reduce’, ‘broadcast’, None}, default None

    These only act when axis=1 (columns):

    • ‘expand’ : 列表式的結(jié)果將被轉(zhuǎn)化為列。
    • ‘reduce’ : 如果可能的話,返回一個(gè) Series,而不是展開類似列表的結(jié)果。這與 expand 相反。
    • ‘broadcast’ : 結(jié)果將被廣播到 DataFrame 的原始形狀,原始索引和列將被保留。
  • args: func 的位置參數(shù)

  • **kwargs:要作為關(guān)鍵字參數(shù)傳遞給 func 的其他關(guān)鍵字參數(shù),1.3.0 開始支持

返回值:

  • Series 或者 DataFrame:沿?cái)?shù)據(jù)的給定軸應(yīng)用 func 的結(jié)果
	Objects passed to the function are Series objects whose index is either the DataFrame's index (``axis=0``) or the DataFrame's columns(``axis=1``). 
	傳遞給函數(shù)的對(duì)象是Series對(duì)象,其索引是DataFrame的索引(axis=0)或DataFrame的列(axis=1)。
	By default (``result_type=None``), the final return type is inferred from the return type of the applied function. Otherwise,it depends on the `result_type` argument.
	默認(rèn)情況下( result_type=None),最終的返回類型是從應(yīng)用函數(shù)的返回類型推斷出來的。否則,它取決于' result_type '參數(shù)。

注:DataFrame與Series的區(qū)別與聯(lián)系:

區(qū)別:

  • series,只是一個(gè)一維結(jié)構(gòu),它由index和value組成。
  • dataframe,是一個(gè)二維結(jié)構(gòu),除了擁有index和value之外,還擁有column。

聯(lián)系:

  • dataframe由多個(gè)series組成,無論是行還是列,單獨(dú)拆分出來都是一個(gè)series。

3.使用案例

3.1 DataFrame使用apply

官方使用案例

import pandas as pd
import numpy as np

df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
df
   A  B
0  4  9
1  4  9
2  4  9


# 使用numpy通用函數(shù) (如 np.sqrt(df)),
df.apply(np.sqrt)
'''
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0
'''

# 使用聚合功能
df.apply(np.sum, axis=0)
'''
A    12
B    27
dtype: int64
'''

df.apply(np.sum, axis=1)
'''
0    13
1    13
2    13
dtype: int64
'''

# 在每行上返回類似列表的內(nèi)容
df.apply(lambda x: [1, 2], axis=1)
'''
0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype: object
'''

# result_type='expand' 將類似列表的結(jié)果擴(kuò)展到數(shù)據(jù)的列
df.apply(lambda x: [1, 2], axis=1, result_type='expand')

'''
   0  1
0  1  2
1  1  2
2  1  2
'''

# 在函數(shù)中返回一個(gè)序列,生成的列名將是序列索引。
df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)

'''
   foo  bar
0    1    2
1    1    2
2    1    2
'''

# result_type='broadcast' 將確保函數(shù)返回相同的形狀結(jié)果
# 無論是 list-like 還是 scalar,并沿軸進(jìn)行廣播
# 生成的列名將是原始列名。
df.apply(lambda x: [1, 2], axis=1, result_type='broadcast')
'''
A  B
0  1  2
1  1  2
2  1  2
'''

其他案例:

import numpy as np
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]},
                  index=['a', 'b', 'c'])
df
	A	B	C
a	1	4	7
b	2	5	8
c	3	6	9

# 對(duì)各列應(yīng)用函數(shù) axis=0
df.apply(lambda x: np.sum(x))
A     6
B    15
C    24
dtype: int64

# 對(duì)各行應(yīng)用函數(shù)
df.apply(lambda x: np.sum(x), axis=1)
a    12
b    15
c    18
dtype: int64

3.2 Series使用apply

官網(wǎng)案例

s = pd.Series([20, 21, 12],index=['London', 'New York', 'Helsinki'])
s
'''
London      20
New York    21
Helsinki    12
dtype: int64
'''

# 定義函數(shù)并將其作為參數(shù)傳遞給 apply,求值平方化。
def square(x):
     return x ** 2

s.apply(square)
'''
London      400
New York    441
Helsinki    144
dtype: int64
'''

# 通過將匿名函數(shù)作為參數(shù)傳遞給 apply
s.apply(lambda x: x ** 2)
'''
London      400
New York    441
Helsinki    144
dtype: int64
'''

# 定義一個(gè)需要附加位置參數(shù)的自定義函數(shù)
# 并使用args關(guān)鍵字傳遞這些附加參數(shù)。
def subtract_custom_value(x, custom_value):
     return x - custom_value

s.apply(subtract_custom_value, args=(5,))
'''
London      15
New York    16
Helsinki     7
dtype: int64
'''

# 定義一個(gè)接受關(guān)鍵字參數(shù)并將這些參數(shù)傳遞
# 給 apply 的自定義函數(shù)。
def add_custom_values(x, **kwargs):
     for month in kwargs:
         x += kwargs[month]
     return x

s.apply(add_custom_values, june=30, july=20, august=25)
'''
London      95
New York    96
Helsinki    87
dtype: int64
'''

# 使用Numpy庫(kù)中的函數(shù)
s.apply(np.log)
'''
London      2.995732
New York    3.044522
Helsinki    2.484907
dtype: float64
'''

3.3 其他案例

import pandas as pd

# 顯示所有列
pd.set_option('display.max_columns', None)
# 顯示所有行
pd.set_option('display.max_rows', None)
# 設(shè)置value的顯示長(zhǎng)度為100,默認(rèn)為50
pd.set_option('max_colwidth', 100)
# 用來計(jì)算日期差的包
import datetime


def dataInterval(data1, data2):
    """
    Args:
    :param data1: datetime
    :param data2: datetime
    :return: delta days
    """
    d1 = datetime.datetime.strptime(data1, '%Y-%m-%d')
    d2 = datetime.datetime.strptime(data2, '%Y-%m-%d')
    delta = d1 - d2
    return delta.days


def getInterval(arrLike):  
    """
    Args:
    :param arrLike: DataFrame 
    :return: delta days
    """
    PublishedTime = arrLike['PublishedTime']
    ReceivedTime = arrLike['ReceivedTime']
    days = dataInterval(PublishedTime.strip(), ReceivedTime.strip()) 
    return days


def getInterval_new(arrLike, before, after): 
    """
    Args:
    :param arrLike: DataFrame
    :param before: forward time
    :param after: backwar time
    :return: delta days
    """
    before = arrLike[before]
    after = arrLike[after]
    days = dataInterval(after.strip(), before.strip())  
    return days
if __name__ == '__main__':
    df = pd.read_excel('./data/NS_info.xls')
    print(df.head())
    # method 1
    df['TimeInterval'] = df.apply(getInterval, axis=1)
    print(df.head())
    # method 2
    df['TimeInterval'] = df.apply(getInterval_new,axis=1, 
                                  args=('ReceivedTime', 'PublishedTime')) 
	# method 3
    df['TimeInterval'] = df.apply(getInterval_new,axis=1, 
                   **{'before': 'ReceivedTime', 'after': 'PublishedTime'})  
	# method 4
    df['TimeInterval'] = df.apply(getInterval_new,axis=1, before='ReceivedTime', after='PublishedTime') 

pandas之a(chǎn)pply函數(shù)簡(jiǎn)介及用法詳解

4.總結(jié)

1.apply方法都是通過傳入一個(gè)函數(shù)或者lambda表達(dá)式對(duì)數(shù)據(jù)進(jìn)行批量處理

2.apply方法處理的都是一個(gè)Series對(duì)象

參考鏈接:

1.https://blog.csdn.net/missyougoon/article/details/83301712

2.https://blog.csdn.net/qq_19528953/article/details/79348929文章來源地址http://www.zghlxwxcb.cn/news/detail-437685.html

到了這里,關(guān)于pandas之a(chǎn)pply函數(shù)簡(jiǎn)介及用法詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Pytorch:torch.nn.Module.apply用法詳解

    torch.nn.Module.apply 是 PyTorch 中用于遞歸地應(yīng)用函數(shù)到模型的所有子模塊的方法。它允許對(duì)模型中的每個(gè)子模塊進(jìn)行操作,比如初始化權(quán)重、改變參數(shù)類型等。 以下是關(guān)于 torch.nn.Module.apply 的示例: 1. 語(yǔ)法 Module:PyTorch 中的神經(jīng)網(wǎng)絡(luò)模塊,例如 torch.nn.Module 的子類。 fn:要應(yīng)用到

    2024年01月15日
    瀏覽(41)
  • JavaScript【History 對(duì)象、Cookie 對(duì)象 、封裝cookie操作、apply、call和bind函數(shù)、面向?qū)ο蠛?jiǎn)介、new 命令】(十八)
  • NumPy和Pandas庫(kù)的基本用法,用于數(shù)據(jù)處理和分析

    當(dāng)涉及到數(shù)據(jù)處理和分析時(shí),NumPy和Pandas是兩個(gè)非常常用的Python庫(kù)。下面是它們的基本用法: NumPy(Numerical Python): 導(dǎo)入NumPy庫(kù):在代碼中使用import numpy as np導(dǎo)入NumPy庫(kù)。 創(chuàng)建NumPy數(shù)組:使用np.array()函數(shù)可以創(chuàng)建一個(gè)NumPy數(shù)組。例如,arr = np.array([1, 2, 3, 4, 5])創(chuàng)建一個(gè)包含整數(shù)

    2024年02月11日
    瀏覽(38)
  • python——pandas用法詳解

    python——pandas用法詳解

    目錄 一、pandas簡(jiǎn)介 1.1 pandas來源 1.2 pandas特點(diǎn) 1.3 pandas的兩種主要數(shù)據(jù)結(jié)構(gòu) 二、 pandas數(shù)據(jù)結(jié)構(gòu)詳解 2.1 pandas——series 2.1.1 由字典創(chuàng)建一個(gè)series 2.1.2 由ndarray創(chuàng)建Series 2.1.3 由標(biāo)量創(chuàng)建Series 2.1.4 Series特性 2.1.4.1 類ndarray 2.1.4.2 類dict(字典) 2.1.4.3 向量化操作(廣播)和標(biāo)簽對(duì)齊 2.1

    2024年02月09日
    瀏覽(24)
  • 【python】Pandas庫(kù)用法詳解!

    【python】Pandas庫(kù)用法詳解!

    pandas 是基于NumPy 的一種工具,該工具是為解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會(huì)發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分

    2024年02月04日
    瀏覽(21)
  • 【Python】進(jìn)階學(xué)習(xí):pandas--info()用法詳解

    【Python】進(jìn)階學(xué)習(xí):pandas--info()用法詳解

    【Python】進(jìn)階學(xué)習(xí):pandas–info()用法詳解 ?? 個(gè)人主頁(yè):高斯小哥 ?? 高質(zhì)量專欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門教程?? 希望得到您的訂閱和支持~ ?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、PyTorch、P

    2024年03月10日
    瀏覽(18)
  • 【Python】進(jìn)階學(xué)習(xí):pandas--rename()用法詳解

    【Python】進(jìn)階學(xué)習(xí):pandas--rename()用法詳解

    【Python】進(jìn)階學(xué)習(xí):pandas-- rename()用法詳解 ?? 個(gè)人主頁(yè):高斯小哥 ?? 高質(zhì)量專欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門教程?? 希望得到您的訂閱和支持~ ?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、PyTorch、

    2024年04月11日
    瀏覽(29)
  • 【pandas】drop()函數(shù)詳解

    【pandas】drop()函數(shù)詳解

    功能: 刪除數(shù)據(jù)集中多余的數(shù)據(jù) 語(yǔ)法如下所示: 常用參數(shù)詳解: labels: 待刪除的行名or列名; axis: 刪除時(shí)所參考的軸,0為行,1為列; index: 待刪除的行名 columns: 待刪除的列名 level: 多級(jí)列表時(shí)使用,暫時(shí)不作說明 inplace: 布爾值,默認(rèn)為False,這是返回的是一個(gè)copy;若為True,返

    2024年02月11日
    瀏覽(19)
  • 【Python】進(jìn)階學(xué)習(xí):pandas--read_excel()函數(shù)的基本使用

    【Python】進(jìn)階學(xué)習(xí):pandas--read_excel()函數(shù)的基本使用

    【Python】進(jìn)階學(xué)習(xí):pandas–read_excel()函數(shù)的基本使用 ?? 個(gè)人主頁(yè):高斯小哥 ?? 高質(zhì)量專欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門教程?? 希望得到您的訂閱和支持~ ?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、

    2024年03月09日
    瀏覽(42)
  • 詳解Pandas分組函數(shù)groupby

    在數(shù)據(jù)分析時(shí),經(jīng)常需要將數(shù)據(jù)分成不同的群組,pandas中的groupby()函數(shù)可以完美地完成各種分組操作。 分組是根據(jù)DataFrame/Series的某個(gè)字段值,將該字段的值相等的行/列分到同一組中,每一個(gè)小組是一個(gè)新的DataFrame或Series。 groupby()也可以按DataFrame中的多個(gè)字段分組,當(dāng)多個(gè)字

    2024年02月02日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包