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

解讀pandas交叉表與透視表pd.crosstab()和pd.pivot_table()函數(shù)

 更新時間:2023年09月13日 09:25:13   作者:learning-striving  
這篇文章主要介紹了pandas交叉表與透視表pd.crosstab()和pd.pivot_table()函數(shù)的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、交叉表

交叉表:用于計算一列數(shù)據(jù)對于另外一列數(shù)據(jù)的分組個數(shù)(用于統(tǒng)計分組頻率的特殊透視表),pd.crosstab(value1, value2)

pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)

計算兩個(或多個)因子的簡單交叉制表。 默認(rèn)情況下, 計算因子的頻率表,除非傳遞值數(shù)組和聚合函數(shù)

  • index:類似數(shù)組、系列或數(shù)組/系列值的列表,行中分組依據(jù)的值
  • columns:類似數(shù)組、系列或數(shù)組/系列值的列表,列中要作為分組依據(jù)的值
  • values:類似數(shù)組,可選,要根據(jù)因素聚合的值數(shù)組,需要指定 aggfunc
  • rownames:序列,默認(rèn) None ,如果傳遞,必須匹配傳遞的行數(shù)組的數(shù)量
  • colnames:序列,默認(rèn) None ,如果傳遞,必須匹配傳遞的列數(shù)組的數(shù)量
  • aggfunc:function,可選,如果指定,則還需要指定值
  • margins:bool, 默認(rèn)False 添加行/列邊距(小計)
  • margins_name:str,默認(rèn)為“All”,當(dāng)邊距為 True 時將包含總計的行/列的名稱
  • dropna:bool, 默認(rèn)為True,不包含條目均為 NaN 的列
  • normalize:bool, {‘all’, ‘index’, ‘columns’}, or {0,1}, 默認(rèn)為False,通過將所有值除以值的總和來歸一化

“all”或 True:將對所有值進(jìn)行歸一化

index:將對每一行進(jìn)行歸一化

columns:將對每一列進(jìn)行歸一化

若margins 為 True,也將標(biāo)準(zhǔn)化邊距值

  • 返回:數(shù)據(jù)的 DataFrame 交叉表

傳遞的任何 Series 都將使用其名稱屬性,除非指定了交叉表的行或列名稱。

傳遞的任何包含分類數(shù)據(jù)的輸入都將在交叉表中包含其所有類別,即使實際數(shù)據(jù)不包含特定類別的任何實例也是如此。

如果沒有重疊索引,將返回一個空的 DataFrame

a = np.array(["foo", "foo", "foo", "foo", "bar", "bar", "bar", "bar", "foo", "foo", "foo"], dtype=object)
b = np.array(["one", "one", "one", "two", "one", "one", "one", "two", "two", "two", "one"], dtype=object)
c = np.array(["dull", "dull", "shiny", "dull", "dull", "shiny", "shiny", "dull", "shiny", "shiny", "dull"], dtype=object)
pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])   
-----------------------------------------------------------------------------------------
# 算數(shù)運(yùn)算,先求和
sum = count.sum(axis=1)
sum
-------------------------------------
# 進(jìn)行相除操作,得出比例
pro = count.div(sum, axis=0)
pro
-------------------------------------
import matplotlib.pyplot as plt
pro.plot(kind='bar', stacked=True)
plt.show()

二、透視表

透視表:透視表是將原有的DataFrame的列分別作為行索引和列索引,然后對指定的列應(yīng)用聚集函數(shù),是一種可以對數(shù)據(jù)動態(tài)排布并且分類匯總的表格格式

DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False, sort=True)

創(chuàng)建一個電子表格樣式的數(shù)據(jù)透視表作為 DataFrame。數(shù)據(jù)透視表中的級別將存儲在結(jié)果 DataFrame 的索引和列上的 MultiIndex 對象(分層索引)中

  • values:要聚合的列,可選,默認(rèn)對所有列操作
  • index:column, Grouper, array, or list of the previous 如果傳遞數(shù)組,它必須與數(shù)據(jù)的長度相同。該列表可以包含任何其他類型(列表除外)。在數(shù)據(jù)透視表索引上分組的鍵。如果傳遞一個數(shù)組,它的使用方式與列值相同
  • column:column, Grouper, array, or list of the previous 如果傳遞一個數(shù)組,它必須和數(shù)據(jù)一樣長。該列表可以包含任何其他類型(列表除外)。在數(shù)據(jù)透視表列上分組的鍵。如果傳遞一個數(shù)組,它的使用方式與列值相同
  • aggfunc:function, list of functions, dict, 默認(rèn)為numpy.mean 如果傳遞函數(shù)列表,則生成的數(shù)據(jù)透視表將具有分層列,其頂層是函數(shù)名稱(從函數(shù)對象本身推斷)如果傳遞dict,則鍵是列聚合和值是函數(shù)或函數(shù)列表
  • fill_value:scalar,默認(rèn) None 用于替換缺失值的值(在聚合后的結(jié)果數(shù)據(jù)透視表中)
  • margins:bool, 默認(rèn)False 添加所有行/列(例如小計/總計)
  • dropna:bool, 默認(rèn)為True,不包含條目均為 NaN 的列。如果為 True,則在計算邊距之前將忽略任何列中具有 NaN 值的行
  • margins_name:str,默認(rèn)為“All” 當(dāng)邊距為 True 時將包含總計的行/列的名稱
  • observed:bool,默認(rèn)為 False 這僅適用于任何groupers 是分類的。若為True:僅顯示分類groupers 的觀察值。否則顯示分類groupers 的所有值。?????
  • sort:bool, default True 指定結(jié)果是否應(yīng)該排序
  • 返回 DataFrame:Excel 樣式的數(shù)據(jù)透視表

代碼如下

df = pd.DataFrame({"A": ["aaa", "aaa", "aaa", "aaa", "aaa","aa", "aa", "aa"],
                   "B": ["bbb", "bbb", "bbb", "bb", "bb", "bbb", "bbb", "bb"],
                   "C": ["small", "large", "large", "small","small", "large", "small", "small"],
                   "D": [1, 2, 2, 3, 3, 4, 5, 6],
                   "E": [2, 4, 5, 5, 6, 6, 8, 9]})
df
---------------------------------------------------------------------------------------
pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum)   # 通過求和來聚合值
pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum, fill_value=0)   # 可以使用fill_value參數(shù)填充缺失的值
pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'], aggfunc={'D': np.mean, 'E': np.mean})   # 通過對多個列取平均值進(jìn)行聚合
pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'], aggfunc={'D': np.mean, 'E': [min, max, np.mean]})   # 可以為任何給定值列計算多種類型的聚合

操作演示如下

總結(jié)

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

相關(guān)文章

  • 一步步教你用Python實現(xiàn)2048小游戲

    一步步教你用Python實現(xiàn)2048小游戲

    相信2048這個游戲?qū)Υ蠹襾碚f一定不陌生,下面這篇文章就主要給大家介紹了怎么用Python實現(xiàn)2048小游戲,文中通過注釋與示例代碼介紹的很詳細(xì),相信對大家的理解和學(xué)習(xí)具有一定的參考借鑒價值,有需要的朋友們一起來看看吧。
    2017-01-01
  • python 寫的一個爬蟲程序源碼

    python 寫的一個爬蟲程序源碼

    這篇文章主要介紹了python 寫的一個爬蟲程序源碼,需要的朋友可以參考下
    2016-02-02
  • python用folium繪制地圖并設(shè)置彈窗效果

    python用folium繪制地圖并設(shè)置彈窗效果

    這篇文章主要介紹了python用folium繪制地圖并設(shè)置彈窗,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • python實現(xiàn)經(jīng)典排序算法的示例代碼

    python實現(xiàn)經(jīng)典排序算法的示例代碼

    這篇文章主要介紹了python實現(xiàn)經(jīng)典排序算法的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python?hashlib模塊詳情

    Python?hashlib模塊詳情

    本文,我們來對Python?提供的安全哈希算法的通用接口-hashlib模塊進(jìn)行學(xué)習(xí),文章內(nèi)容具有一定的參考價值,需要的小伙伴可以參考一下
    2021-11-11
  • Python+matplotlib實現(xiàn)繪制等高線圖示例詳解

    Python+matplotlib實現(xiàn)繪制等高線圖示例詳解

    在matplotlib.pyplot中除了可以繪制常規(guī)圖表如折線、柱狀、散點(diǎn)等,還可以繪制常用在地理上的平面展示地型的等高線圖,本文主要為大家介紹了如何利用matplotlib繪制等高線圖,需要的可以參考一下
    2021-12-12
  • Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié)

    Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié),本文講解了格式化類方法、查找 & 替換類方法、拆分 & 組合類方法等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 基于Python實現(xiàn)股票數(shù)據(jù)分析的可視化

    基于Python實現(xiàn)股票數(shù)據(jù)分析的可視化

    在購買股票的時候,可以使用歷史數(shù)據(jù)來對當(dāng)前的股票的走勢進(jìn)行預(yù)測,這就需要對股票的數(shù)據(jù)進(jìn)行獲取并且進(jìn)行一定的分析。本文將介紹如何通過Python實現(xiàn)股票數(shù)據(jù)分析的可視化,需要的可以參考一下
    2021-12-12
  • 使用Python讀取.nc文件的方法詳解

    使用Python讀取.nc文件的方法詳解

    .nc文件,即NetCDF(Network?Common?Data?Form)文件,是一種用于存儲科學(xué)數(shù)據(jù)的文件格式,本文主要為大家介紹了兩種常見的讀取方法,希望對大家有所幫助
    2024-03-03
  • python3對拉勾數(shù)據(jù)進(jìn)行可視化分析的方法詳解

    python3對拉勾數(shù)據(jù)進(jìn)行可視化分析的方法詳解

    這篇文章主要給大家介紹了關(guān)于python3對拉勾數(shù)據(jù)進(jìn)行可視化分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論