最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pandas的apply函數(shù)用法詳解

 更新時(shí)間:2023年01月11日 09:59:45   作者:獨(dú)影月下酌酒  
本文主要介紹了pandas的apply函數(shù)用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.基本信息

Pandas 的 apply() 方法是用來(lái)調(diào)用一個(gè)函數(shù)(Python method),讓此函數(shù)對(duì)數(shù)據(jù)對(duì)象進(jìn)行批量處理。Pandas 的很多對(duì)象都可以使用 apply() 來(lái)調(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ù)的返回類型推斷出來(lái)的。否則,它取決于' 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組成,無(wú)論是行還是列,單獨(dú)拆分出來(lái)都是一個(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é)果
# 無(wú)論是 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
'''

# 通過(guò)將匿名函數(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)
# 用來(lái)計(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')?

4.總結(jié)

1.apply方法都是通過(guò)傳入一個(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

到此這篇關(guān)于pandas的apply函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)pandas apply用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • django admin管理工具自定義時(shí)間區(qū)間篩選器DateRangeFilter介紹

    django admin管理工具自定義時(shí)間區(qū)間篩選器DateRangeFilter介紹

    這篇文章主要介紹了django admin管理工具自定義時(shí)間區(qū)間篩選器DateRangeFilter介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python面向?qū)ο蠓庋b繼承和多態(tài)示例講解

    Python面向?qū)ο蠓庋b繼承和多態(tài)示例講解

    這篇文章給大家介紹了python面向?qū)ο蟮娜筇卣鳎悍庋b,繼承,多態(tài)的相關(guān)知識(shí),通過(guò)實(shí)例代碼講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2021-04-04
  • Python疊加矩形框圖層2種方法及效果

    Python疊加矩形框圖層2種方法及效果

    這篇文章主要介紹了Python疊加矩形框圖層2種方法及效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python實(shí)現(xiàn)對(duì)比兩個(gè)Excel數(shù)據(jù)內(nèi)容并標(biāo)記出不同

    Python實(shí)現(xiàn)對(duì)比兩個(gè)Excel數(shù)據(jù)內(nèi)容并標(biāo)記出不同

    日常工作中需要對(duì)比兩個(gè)Excel工作表中的數(shù)據(jù)差異是很不方便的,使用python來(lái)做就比較簡(jiǎn)單了!本文為大家介紹了python實(shí)現(xiàn)對(duì)比兩個(gè)Excel的數(shù)據(jù)內(nèi)容并標(biāo)記出不同數(shù)據(jù)的示例代碼,需要的可以參考一下
    2022-12-12
  • Python中聲明只包含一個(gè)元素的元組數(shù)據(jù)方法

    Python中聲明只包含一個(gè)元素的元組數(shù)據(jù)方法

    這篇文章主要介紹了Python中聲明只包含一個(gè)元素的元組數(shù)據(jù)方法,本文是實(shí)際經(jīng)驗(yàn)總結(jié)而來(lái),沒有碰到這個(gè)需要可能不會(huì)注意到這個(gè)問(wèn)題,需要的朋友可以參考下
    2014-08-08
  • 使用Python爬取小姐姐圖片(beautifulsoup法)

    使用Python爬取小姐姐圖片(beautifulsoup法)

    這篇文章主要介紹了Python爬取小姐姐圖片(beautifulsoup法),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容

    Python利用prettytable實(shí)現(xiàn)格式化輸出內(nèi)容

    Python有一個(gè)第三方模塊叫?prettytable,專門用來(lái)將數(shù)據(jù)格式輸出。本文將通過(guò)示例為大家詳細(xì)講講prettytable的用法,感興趣的可以了解一下
    2022-07-07
  • 淺談配置OpenCV3 + Python3的簡(jiǎn)易方法(macOS)

    淺談配置OpenCV3 + Python3的簡(jiǎn)易方法(macOS)

    下面小編就為大家分享一篇淺談配置OpenCV3 + Python3的簡(jiǎn)易方法(macOS),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 利用python計(jì)算均值、方差和標(biāo)準(zhǔn)差(Numpy和Pandas)

    利用python計(jì)算均值、方差和標(biāo)準(zhǔn)差(Numpy和Pandas)

    這篇文章主要給大家介紹了關(guān)于利用python計(jì)算均值、方差和標(biāo)準(zhǔn)差的相關(guān)資料,Numpy在Python中是一個(gè)通用的數(shù)組處理包,它提供了一個(gè)高性能的多維數(shù)組對(duì)象和用于處理這些數(shù)組的工具,它是使用Python進(jìn)行科學(xué)計(jì)算的基礎(chǔ)包,需要的朋友可以參考下
    2023-11-11
  • 基于PyQT實(shí)現(xiàn)區(qū)分左鍵雙擊和單擊

    基于PyQT實(shí)現(xiàn)區(qū)分左鍵雙擊和單擊

    這篇文章主要介紹了基于PyQT實(shí)現(xiàn)區(qū)分左鍵雙擊和單擊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

开远市| 蓬溪县| 札达县| 西安市| 南雄市| 麦盖提县| 金沙县| 石楼县| 永修县| 拉萨市| 康保县| 建瓯市| 望城县| 谷城县| 古丈县| 凤山县| 方城县| 上杭县| 三河市| 天气| 屏东市| 南丹县| 上林县| 建湖县| 永宁县| 甘谷县| 永顺县| 绥棱县| 天峨县| 禄劝| 青冈县| 通道| 县级市| 景德镇市| 抚远县| 嘉祥县| 靖州| 扎赉特旗| 松阳县| 安阳市| 深圳市|