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

Python?pandas中apply函數(shù)簡介以及用法詳解

 更新時(shí)間:2022年09月09日 10:38:28   作者:獨(dú)影月下酌酒  
apply()函數(shù)是pandas里面所有函數(shù)中自由度最高的函數(shù), apply()函數(shù)的參數(shù)是一個(gè)函數(shù)指針,這里可以使用lambda表達(dá)式幫助簡化代碼,下面這篇文章主要給大家介紹了關(guān)于Python?pandas中apply函數(shù)簡介以及用法的相關(guān)資料,需要的朋友可以參考下

1.基本信息

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

2.語法結(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ù)的對象是Series對象,其索引是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

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

# 對各行應(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庫中的函數(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的顯示長度為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') 

4.總結(jié)

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

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

參考鏈接:

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

2.https://blog.csdn.net/qq_19528953/article/details/79348929

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

相關(guān)文章

  • 使用Python抓取模板之家的CSS模板

    使用Python抓取模板之家的CSS模板

    本文給大家介紹的是使用Python抓取模板之家的CSS模板并打包成zip文件的代碼,使用的是單線程,非常簡單實(shí)用,這里分享給大家,有相同需求的小伙伴參考下吧。
    2015-03-03
  • python授權(quán)加密的幾種常見方案

    python授權(quán)加密的幾種常見方案

    文章介紹了幾種提高軟件授權(quán)碼安全性的方法,包括使用非對稱加密、硬件綁定、時(shí)間限制、HMAC或?qū)ΨQ加密以及使用在線授權(quán)服務(wù)器,建議企業(yè)級(jí)產(chǎn)品采用服務(wù)器+本地加密結(jié)合的方式,感興趣的朋友一起看看吧
    2025-03-03
  • Python對多個(gè)sheet表進(jìn)行整合實(shí)例講解

    Python對多個(gè)sheet表進(jìn)行整合實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python對多個(gè)sheet表進(jìn)行整合實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • Python調(diào)用ChatGPT的API實(shí)現(xiàn)文章生成

    Python調(diào)用ChatGPT的API實(shí)現(xiàn)文章生成

    最近ChatGPT大火,在3.5版本后開放了接口API,所以很多人開始進(jìn)行實(shí)操,這里我就用python來為大家實(shí)現(xiàn)一下,如何調(diào)用API并提問返回文章的說明
    2023-03-03
  • 淺析Python中的多進(jìn)程編程

    淺析Python中的多進(jìn)程編程

    在這篇文章中,我們將專注于討論P(yáng)ython中的多進(jìn)程編程,例如進(jìn)程的創(chuàng)建、管理和同步,以及一些更高級(jí)的概念,如進(jìn)程池,需要的可以參考一下
    2023-07-07
  • python使用turtle庫繪制時(shí)鐘

    python使用turtle庫繪制時(shí)鐘

    這篇文章主要為大家詳細(xì)介紹了python使用turtle庫繪制時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 以視頻爬取實(shí)例講解Python爬蟲神器Beautiful Soup用法

    以視頻爬取實(shí)例講解Python爬蟲神器Beautiful Soup用法

    這篇文章主要以視頻爬取實(shí)例來講解Python爬蟲神器Beautiful Soup的用法,Beautiful Soup是一個(gè)為Python獲取數(shù)據(jù)而設(shè)計(jì)的包,簡潔而強(qiáng)大,需要的朋友可以參考下
    2016-01-01
  • Python機(jī)器學(xué)習(xí)之決策樹

    Python機(jī)器學(xué)習(xí)之決策樹

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)之決策樹,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 使用pyscript在網(wǎng)頁中撰寫Python程式的方法

    使用pyscript在網(wǎng)頁中撰寫Python程式的方法

    本文主要介紹了使用pyscript在網(wǎng)頁中撰寫Python程式的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實(shí)例

    python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實(shí)例

    這篇文章主要介紹了python爬蟲開發(fā)之使用Python爬蟲庫requests多線程抓取貓眼電影TOP100實(shí)例,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

甘泉县| 墨脱县| 平昌县| 方城县| 康乐县| 河南省| 芮城县| 绥棱县| 威信县| 张家口市| 铜梁县| 宁武县| 当阳市| 凤庆县| 丽水市| 龙陵县| 涿州市| 道真| 泰安市| 会理县| 甘洛县| 绥江县| 武功县| 固镇县| 铜陵市| 海淀区| 共和县| 韶山市| 大荔县| 丰宁| 太和县| 永丰县| 南江县| 盐山县| 喀喇| 和平县| 平罗县| 方山县| 平凉市| 军事| 岫岩|