Pandas數據處理map, apply, applymap, Transform詳解

2021-02-16 隨身雜技

Series.apply(func, convert_dtype=True, args=(), **kwd)[source]

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

沿著DataFrame的軸應用一個函數

傳遞給函數的對象是Series對象,其索引要麼是DataFrame的索引(軸=0),要麼是DataFrame的列(axis=1)。默認情況下(result_type=None),最終的返回類型是從應用函數的返回類型推斷出來的。否則,它取決於result_type參數

參數:

funcfunction

Function to apply to each column or row.

axis{0 or 『index』, 1 or 『columns』}, default 0

函數所應用的軸:

0 或 『index』: 對每一列應用函數

1 或 『columns』: 對每一行應用函數

rawbool, default False

Determines if row or column is passed as a Series or ndarray object:

result_type{『expand』, 『reduce』, 『broadcast』, None}, default None

這些只在axis=1(列)時起作用:

默認行為(None)取決於應用函數的返回值:類似列表的結果將作為這些結果的Series返回。但是,如果apply函數返回一個Series,這些列就會展開為列.

argstuple

除了array/series外,還要傳遞給func的位置參數。

**kwds

要作為關鍵字參數傳遞給func的其他關鍵字參數。

返回:

>>> s = pd.Series([20, 21, 12],...               index=['London', 'New York', 'Helsinki'])>>> sLondon      20New York    21Helsinki    12dtype: int64>>> s.apply(lambda x: x ** 2)London      400New York    441Helsinki    144dtype: int64>>> def subtract_custom_value(x, custom_value):...     return x - custom_value>>> s.apply(subtract_custom_value, args=(5,))London      15New York    16Helsinki     7dtype: int64
>>> df = pd.DataFrame([[4, 9],] * 3, columns=['A', 'B'])>>> df A B0 4 91 4 92 4 9>>> df.apply(np.sqrt) A B0 2.0 3.01 2.0 3.02 2.0 3.0>>> df.apply(np.sum, axis=0)A 12B 27dtype: int64>>> df.apply(np.sum, axis=1)0 131 132 13dtype: int64>>> df.apply(lambda x: [1, 2], axis=1)0 [1, 2]1 [1, 2]2 [1, 2]dtype: object>>> df.apply(lambda x: [1, 2], axis=1, result_type='expand') 0 10 1 21 1 22 1 2>>> df.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1) foo bar0 1 21 1 22 1 2>>> df.apply(lambda x: [1, 2], axis=1, result_type='broadcast') A B0 1 21 1 22 1 2

Series.map(arg, na_action=None)[source]

map方法都是把對應的數據逐個當作參數傳入到字典或函數中,得到映射後的值

>>> s = pd.Series(['cat', 'dog', np.nan, 'rabbit'])>>> s0      cat1      dog2      NaN3   rabbitdtype: object>>> s.map({'cat': 'kitten', 'dog': 'puppy'})0   kitten1    puppy2      NaN3      NaNdtype: object>>> s.map('I am a {}'.format)0       I am a cat1       I am a dog2       I am a nan3    I am a rabbitdtype: object
>>> s.map('I am a {}'.format, na_action='ignore')0 I am a cat1 I am a dog2 NaN3 I am a rabbitdtype: object

Series.transform(func, axis=0, *args, **kwargs)[source]

Call func on self producing a Series with transformed values.

Produced Series will have same axis length as self.


funcfunction, str, list-like or dict-like

Function to use for transforming the data. If a function, must either work when passed a Series or when passed to Series.apply. If func is both list-like and dict-like, dict-like behavior takes precedence.

Accepted combinations are:

function

string function name

list-like of functions and/or function names, e.g. [np.exp, 'sqrt']

dict-like of axis labels -> functions, function names or list-like of such.

axis{0 or 『index』}

Parameter needed for compatibility with DataFrame.

*args

Positional arguments to pass to func.

**kwargs

Keyword arguments to pass to func


>>> df = pd.DataFrame({'A': range(3), 'B': range(1, 4)})>>> df   A  B0  0  11  1  22  2  3>>> df.transform(lambda x: x + 1)   A  B0  1  21  2  32  3  4>>> s = pd.Series(range(3))>>> s0    01    12    2dtype: int64>>> s.transform([np.sqrt, np.exp])       sqrt        exp0  0.000000   1.0000001  1.000000   2.7182822  1.414214   7.389056>>> df = pd.DataFrame({...     "c": [1, 1, 1, 2, 2, 2, 2],...     "type": ["m", "n", "o", "m", "m", "n", "n"]... })>>> df   c type0  1    m1  1    n2  1    o3  2    m4  2    m5  2    n6  2    n
>>> df['size'] = df.groupby('c')['type'].transform(len)>>> df c type size0 1 m 31 1 n 32 1 o 33 2 m 44 2 m 45 2 n 46 2 n 4

DataFrame.applymap(func, na_action=None)[source]

Apply a function to a Dataframe elementwise.

This method applies a function that accepts and returns a scalar to every element of a DataFrame.


unccallable

Python function, returns a single value from a single value.

na_action{None, 『ignore』}, default None

If 『ignore』, propagate NaN values, without passing them to func.

New in version 1.2.


DataFrame

Transformed DataFrame.

>>> df = pd.DataFrame([[1, 2.12], [3.356, 4.567]])>>> df       0      10  1.000  2.1201  3.356  4.567>>> df.applymap(lambda x: len(str(x)))   0  10  3  41  5  5

相關焦點

  • Pandas三大利器-map、apply、applymap
    -map、apply、applymap實際工作中,我們在利用 pandas進行數據處理的時候,經常會對數據框中的單行、多行(列也適用)甚至是整個數據進行某種相同方式的處理,比如將數據中的 sex欄位將 男替換成1,女替換成0。
  • 不再糾結,一文詳解pandas中的map、apply、applymap、groupby、agg...
    本文就將針對pandas中的map()、apply()、applymap()、groupby()、agg()等方法展開詳細介紹,並結合實際例子幫助大家更好地理解它們的使用技巧。2.2 apply()apply()堪稱pandas中最好用的方法,其使用方式跟map()很像,主要傳入的主要參數都是接受輸入返回輸出。但相較於map()針對單列Series進行處理,一條apply()語句可以對單列或多列進行運算,覆蓋非常多的使用場景。
  • Pandas的map()、apply()、applymap()
    一般來說,其實用 apply() 就夠了,因為都支持了。但這裡還是簡單記錄下。Python 中的 Pandas 庫,map()、apply()、applymap() 的區別。 下面分別舉例說明。) 是一個 Series 函數,是將一個自定義函數作用於 Series 結構中每個元素(這裡說明下 Series 和 dataFrame 關係:創建 DataFrame 數據可輸入的數據類型中,每個 Series 為一列,Series 索引合併為行索引)。
  • pandas | 詳解DataFrame中的apply與applymap方法
    今天是pandas數據處理專題的第5篇文章,我們來聊聊pandas的一些高級運算。比如我們可以用它來轉換DataFrame當中數據的格式。之所以我們叫它applymap而不是map,是因為在Series的方法當中,已經有了map,所以為了區分創建了applymap。
  • 理解pandas中的apply和map的作用和異同
    (模塊Ⅰ)    1月11-16日  Stata 應用能力提升與實證前沿(模塊Ⅱ)  地點浙江 · 杭州(浙江工商大學)  pandas中的數據類型>我們可以將pandas中的數據簡單的認為只有下面這兩種這兩種數據類型都有map和apply方法Series: apply和mapDataFrame: applySeries.mapSeries.map(arg)傳入的arg : 操作函數、字典或Series返回Series
  • 一文弄懂apply、map和applymap三種函數的區別
    CDA數據分析師 出品在日常處理數據的過程中,會經常遇到這樣的情況,對一個DataFrame進行逐行、逐列或者逐元素的操作,很多小夥伴也知道需要用到apply、map或者applymap,但是具體什麼情況下運用哪種方法或者說對這些方法了解不夠,用起來暈暈乎乎始終沒有很明白
  • Pandas高級應用(map()與apply()函數)
    一.map()函數import pandas
  • 利用Pandas 的 transform 和 apply 來處理組級別的缺失數據
    根據 Businessbroadway 的一項分析,數據專業人員將會花高達 60% 的時間用於收集、清理和可視化數據。資料來源:Businessbroadway清理和可視化數據的一個關鍵方面是如何處理丟失的數據。Pandas 以 fillna 方法的形式提供了一些基本功能。
  • Python數學建模技巧之pandas數據處理
    最常見的庫有進行矩陣運算的Numpy、進行數據處理的pandas、進行科學計算的Scipy、進行圖形繪製及科學可視化的matplotlib、進行符號計算的Sympy以及方便進行機器學習任務的Sklearn。由於今年美賽官方公告中稱,將會提前在賽題公布之前就提供下載C題數據集的方式。
  • Pandas常用的數據處理方法
    >Pandas中合併數據集有多種方式,這裡我們來逐一介紹1.1 資料庫風格合併資料庫風格的合併指根據索引或某一列的值是否相等進行合併的方式,在pandas中,這種合併使用merge以及join函數實現。
  • pandas指南:做更高效的數據科學家
    今天我要告訴你們的是:在數據科學中,有一個軟體包是你們絕對需要學習的,那就是pandas。而pandas真正有趣的地方是,很多其他的包也在裡面。pandas是一個核心包,因此它具有來自其他各種包的特性。
  • 想成為高效數據科學家?不會Pandas怎麼行
    它可以幫助你在一行中更加簡單、高效地執行多個操作(.map() 和.plot())。data.apply(sum).apply() 會給一個列應用一個函數。.applymap() 會給表 (DataFrame) 中的所有單元應用一個函數。
  • Pandas數據處理|apply()函數的常規用法
    本文介紹一下關於 Pandas 中 apply() 函數的幾個常見用法,apply() 函數的自由度較高,可以直接對 Series 或者 DataFrame 中元素進行逐元素遍歷操作,方便且高效,具有類似於 Numpy 的特性。
  • Pandas數據處理三板斧,你會幾個?
    圖片來源於網絡 文/ 易執在日常的數據處理中,經常會對一個DataFrame進行逐行、逐列和逐元素的操作,對應這些操作,Pandas中的map、apply和applymap可以解決絕大部分這樣的數據處理需求。
  • 使用pandas做數據分析,掌握這些函數就夠了
    pandas是數據分析師最常用的工具之一,掌握以下函數足以應對工作中的各種需求,P4 數據集描述P5 重命名列名稱P6 刪除列P7 整體排序P8 通過列條件篩選數據P9 多條件篩選P11 怎樣使用axis參數P12 字符串方法P13 改變數據類型P14 什麼時候使用groupbyP15 探索seriesP16 處理缺失值P17 關於indexP18 選擇多行或多列
  • python進程池Pool的apply與apply_async到底怎麼用?
    ()apply_async()map()map_async()close()terminal()join()這裡主要說一下apply和apply_async兩個,其他的內容可以進行百度搜索applySignature: pool.apply(func, args=(), kwds={})Docstring: Equivalent of `func(*args, **kwds)`.
  • 一篇文章帶你查看並處理Pandas數據
    今天我們將一下如何查看Pandas中的各類數據以及對Pandas進行處理的一些方法,通過這些方法我們可以更快的掌握Pandas對數據進行處理:描述與統計函數應用修改列/行索引名稱查看哪位英雄的年齡最小查看哪位英雄的年齡最大8、離散化有時候我們在處理數據的時候會碰到一些需求,比如想要將年齡進行離散化,也就是將年齡分成幾個區間
  • Pandas的函數應用及映射方法
    CDA數據分析師 出品在數據分析師日常的數據清洗工作中,經常需要對數據進行各種映射變換,通過Pandas可以非常方便地解決此問題,其提供了map()、apply()、mapapply()等方法,下面將一一詳細介紹這三個映射函數的用法及三者的區別。
  • 小案例: Pandas的apply方法
    插播一條廣告Python數據挖掘與文本分析
  • 別找了,這是Pandas最詳細教程了
    有一個用於數據科學的包絕對是必需的,它就是 pandas。pandas 最有趣的地方在於裡面隱藏了很多包。它是一個核心包,裡面有很多其他包的功能。這點很棒,因為你只需要使用 pandas 就可以完成工作。pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。