欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pandas之關于DataFrame數據類型超好用的方法

 更新時間:2023年11月28日 17:12:46   作者:芊欣欲  
這篇文章主要介紹了pandas之關于DataFrame數據類型超好用的方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

參考資料:pandas官方參考文檔

本文詳細介紹了pandas中關于DataFrame數據類型的常用函數及其使用方法,結合了pandas給出的官方文檔,佐以簡單示例,萬字長文助您一文搞定DataFrame相關的api調用問題。

在使用pandas包中的函數時默認已經執(zhí)行語句import pandas as pdimport numpy as np以調用pandas包和numpy包。

DataFrame數據類型

DataFrame是在python中獨有的一種數據類型,它是一種二維的、大小可變的、有潛在異構的表格型數據。

Constructor構造

DataFrame([data, index, columns,dtype, copy])

Attributes屬性

這里只介紹常用的api,如需了解其它的,請參考文章頂部參考鏈接。

Axes軸函數

  • df.index:返回行標簽;
  • df.columns:返回列標簽;注意這兩處都沒有括號,且列標簽要求有s;
  • df.dtypes:返回df的dtypes;
  • df.info(): 返回對于df的信息概述,如:

df.values:返回二維np數組的形式的df,如:

df.size:求出df中的元素數量,如上圖df的size即為4;

df.shape:以元組的形式返回df的形狀,如下圖中data的形狀即為4909行,16列;

conversion轉換函數

1.DataFrame.astype(dtype[, copy, errors])

作用:將一個df轉換成指定的類型;

格式:df.astype('int32')

示例:

注意:不通過賦值不會存儲轉換結果,即執(zhí)行完df.astype(‘int8’)之后如果直接執(zhí)行df.dtypes返回的結果仍是int64;

2.DataFrame.convert_dtypes([infer_objects, …])

作用:將df中的列自動轉換成最可能適配的類型,并且使用的dtype都是支持pd.NA的;即把用戶自定義的類型轉換成python語言中最適配的數據類型,并把np.nan轉換為pd.NA;

即把用戶自定義的類型轉換成python語言中最適配的數據類型,并把np.nan轉換為pd.NA;

3.DataFrame.infer_objects()

作用:嘗試為列類型為object的列推斷更好的數據類型;

與convert_dtypes()的區(qū)別:infer_objects()只針對類型為object的列,而convert_dtypes()針對所有的列;

4.DataFrame.copy([deep])

作用:復制一個df;

格式:df_new = df.copy()

示例:

Indexing, iteration索引、遍歷函數

1.df.head([n])

作用:返回前n行數據,默認為5

2.df.at

作用:按標簽返回行列對的單個值

格式:df.at[row_label, col_label]

示例:

3.df.iat

作用:按索引返回行列對的單個值

示例:

4.df.loc

作用:通過標簽或布爾數組訪問一行或多行或一行列對(不是只能行列對哦?。?/p>

格式:df.loc[row_label]df.loc[row_label, col_label]df.loc[[row1_label, row2_label,...]]

注意:不能取一列數據

示例:

5.df.iloc

作用:通過索引或布爾數組訪問一行或多行或一行列對(不是只能行列對哦?。?/p>

格式:df.iloc[row_label]df.loc[row_label, col_label]df.loc[[row1_label, row2_label,...]]

注意:不能取一列數據

DataFrame的構造轉換函數:pd.DataFrame()

作用:將data轉換成dataframe的數據類型;

格式:

pd.DataFrame(data = None, index = None, columns = None, dtype = None, copy = None)

參數:

  • data:需要轉換位dataframe格式的原數據
  • index:行標簽列表
  • columns:列標簽列表
  • dtype:數據類型列表

示例:

DataFrame的聚合函數、應用函數

df.apply() 或 df.applymap()

作用:對于df執(zhí)行某函數 或 對df的所有元素執(zhí)行某函數

格式:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)
df.applymap(func[, na_action])

參數: 

func:欲施加給某行或者某列的函數 

axis:{0 or ‘index’, 1 or ‘columns’}, default 0即為對列實施函數

  • 0 or ‘index’: 對某列(的每行)實施函數
  • 1 or ‘columns’: 對某行中(的每列)實施函數

raw:一個布爾值, default False,決定了一行或列的數據類型是以series還是ndarray object的形式傳入函數

  • False : 以series為數據類型傳入參數
  • True : 以ndarray objects為數據類型傳入參數,如果函數是基于numpy包實現的時候有更好的表現

示例:

np自帶的函數:

lambda函數:

df.aggregate()或df.agg()

作用: 對所有行或所有列做一項或多項聚合操作(兩種形式的函數效果一模一樣);

格式:

DataFrame.aggregate(func=None, axis=0, *args, **kwargs)

示例:

df.transform()

作用:對df每個元素調用函數;

與df.apply()的區(qū)別:在調用一個普通函數的時候沒有區(qū)別,調用聚合函數時有區(qū)別,調用多個函數時也有區(qū)別。(個人理解transform只能對每個元素都進行操作,選擇axis參數的意義不大)

格式:

DataFrame.transform(func, axis=0, *args, **kwargs)

示例:

只調用一個函數:

同時調用多個lambda函數:

transform只顯示最后一個lambda函數的執(zhí)行結果,而apply會把每個執(zhí)行結果都顯示出來;同時調用多個聚合函數:(部分函數只能使用apply函數)

np.mean, np.sum等只能用apply :

np.sqrt, np.exp等兩種函數都能使用:

sum等聚合函數在df.transform中要與groupby配合使用:

而df.transform(‘sum’)和df.transform(np.sum)都將報錯;

總結:對于df執(zhí)行函數時的情況復雜,如果不是對普通函數建議直接使用apply(),使用聚合函數時考慮實際情況選擇需要調用的api。(需要groupby分區(qū)時用transform())

df.groupby()

作用:在對數據做聚合操作前給數據分組

格式:

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True,  observed=False, dropna=True)

主要參數: 

by:mapping, function, label, or list of labels

用于確定 groupby 的組:

  • 如果 by 是一個函數,它會在對象索引的每個值上調用。
  • 如果傳遞了 dict 或 Series,則 Series 或 dict VALUES 將用于確定分組規(guī)則。
  • 如果傳遞了 ndarray,則按原樣使用這些值來確定組。
  • 標簽或標簽列表可以通過 self 中的列傳遞給 group。
  • 請注意,元組被解釋為(單個)鍵。

axis:{0 or ‘index’, 1 or ‘columns’}, default 0

與其余函數的規(guī)則一致;

as_index:bool, default True

對于聚合輸出,返回帶有組標簽的對象作為索引。 僅與 DataFrame 輸入相關。 as_index=False 是有效的“SQL 風格”分組輸出。

sort:bool, default True

對組鍵進行排序。 關閉此功能可獲得更好的性能。 請注意,這不會影響每個組內的觀察順序。 Groupby 保留每個組中行的順序。

group_keys:bool, default True

調用apply時,將組鍵添加到索引以識別片段。

dropna:bool, default True

如果為 True,并且組鍵包含 NA 值,則 NA 值和行/列將被刪除。 如果為 False,NA 值也將被視為組中的鍵。

示例:

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python下函數參數的傳遞(參數帶星號的說明)

    python下函數參數的傳遞(參數帶星號的說明)

    python中函數參數的傳遞是通過賦值來傳遞的。
    2010-09-09
  • Selenium操作隱藏的元素及問題解決方案

    Selenium操作隱藏的元素及問題解決方案

    這篇文章主要介紹了Selenium操作隱藏的元素及問題解決方案,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-12-12
  • Python的ini配置文件你了解嗎

    Python的ini配置文件你了解嗎

    這篇文章主要為大家詳細介紹了Python的ini配置文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Anaconda安裝后Spyder閃退解決辦法

    Anaconda安裝后Spyder閃退解決辦法

    作為研究深度學習的一員,經常會遇到各種突如其來的bug,最近又碰到了一個關于spyder打開后又閃退的問題,下面這篇文章主要給大家介紹了關于Anaconda安裝后Spyder閃退的解決辦法,需要的朋友可以參考下
    2023-04-04
  • python多線程并發(fā)及測試框架案例

    python多線程并發(fā)及測試框架案例

    這篇文章主要介紹了python多線程并發(fā)及測試框架案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 使用Python實現WebSocket服務器與客戶端通信功能

    使用Python實現WebSocket服務器與客戶端通信功能

    WebSocket?是一種基于?TCP?協(xié)議的通信協(xié)議,能夠在客戶端與服務器之間進行全雙工(雙向)通信,相比傳統(tǒng)的?HTTP?協(xié)議,WebSocket?可以實現實時數據的傳輸,我通過?Python?實現一個簡單的?WebSocket?服務器,并使其與客戶端進行通信,需要的朋友可以參考下
    2024-12-12
  • django 利用Q對象與F對象進行查詢的實現

    django 利用Q對象與F對象進行查詢的實現

    這篇文章主要介紹了django 利用Q對象與F對象進行查詢的實現,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • PyCharm在win10的64位系統(tǒng)安裝實例

    PyCharm在win10的64位系統(tǒng)安裝實例

    給大家介紹一下在win10的64位系統(tǒng)中安裝PyCharm的操作過程以及需要注意的地方。
    2017-11-11
  • Python Tkinter GUI編程實現Frame切換

    Python Tkinter GUI編程實現Frame切換

    本文主要介紹了Python Tkinter GUI編程實現Frame切換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • wxPython學習之主框架實例

    wxPython學習之主框架實例

    這篇文章主要介紹了wxPython學習之主框架應用實例,以一個基礎的彈出窗體實例講述了wxPython主框架應用程序的實現方法,需要的朋友可以參考下
    2014-09-09

最新評論