亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Pandas 透視表和交叉表的實(shí)現(xiàn)示例

 更新時(shí)間:2024年07月26日 10:50:05   作者:程序那點(diǎn)事hhu  
本文主要介紹了Pandas 透視表和交叉表的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

數(shù)學(xué)原理:

交叉表是一種在二維數(shù)據(jù)表格中統(tǒng)計(jì)頻數(shù)的方法。它將數(shù)據(jù)按照指定的行和列進(jìn)行分組,然后計(jì)算每個(gè)組合的頻數(shù)。交叉表的數(shù)學(xué)原理可以用以下步驟來描述:

1. 數(shù)據(jù)分組: 首先,根據(jù)交叉表的行和列索引,將數(shù)據(jù)進(jìn)行分組。

2. 頻數(shù)統(tǒng)計(jì): 對(duì)于每個(gè)分組,統(tǒng)計(jì)該分組內(nèi)的觀測(cè)值數(shù)量(頻數(shù))。

3. 填充表格: 將統(tǒng)計(jì)得到的頻數(shù)填充到交叉表的相應(yīng)位置上。

交叉表的優(yōu)勢(shì)在于它可以快速地提供多個(gè)變量之間的關(guān)系,尤其是在分類變量之間的分析上特別有用。

透視表是一種根據(jù)一個(gè)或多個(gè)鍵對(duì)數(shù)據(jù)進(jìn)行聚合的方法,然后在行和列上對(duì)數(shù)據(jù)進(jìn)行分組。它提供了更靈活的方式來匯總和分析數(shù)據(jù)。透視表的數(shù)學(xué)原理可以用以下步驟來描述:

1. 數(shù)據(jù)聚合: 根據(jù)透視表的行和列索引,對(duì)原始數(shù)據(jù)進(jìn)行分組和聚合。這通常涉及到某種形式的數(shù)據(jù)聚合操作,如求和、平均值等。

2. 行列分組: 將聚合后的數(shù)據(jù)根據(jù)透視表的行和列索引進(jìn)行進(jìn)一步的分組,以形成透視表格。

3. 填充表格: 將聚合后的數(shù)據(jù)填充到透視表的相應(yīng)位置上。

透視表相比于交叉表更加靈活,因?yàn)樗试S我們?cè)谏杀砀駮r(shí)進(jìn)行更多的定制,如使用不同的聚合函數(shù)、添加行/列邊距匯總等。總的來說,交叉表和透視表都是用于匯總和分析數(shù)據(jù)的工具,它們的數(shù)學(xué)原理都涉及到數(shù)據(jù)的分組、聚合和填充,但透視表相比于交叉表在功能上更加靈活。

表格總結(jié):

讓我們以表格的形式呈現(xiàn)交叉表和透視表的數(shù)學(xué)原理的相同點(diǎn)和不同點(diǎn):

方面

交叉表

透視表

數(shù)據(jù)處理方式

對(duì)數(shù)據(jù)進(jìn)行頻數(shù)統(tǒng)計(jì)和匯總

對(duì)數(shù)據(jù)進(jìn)行分組、聚合和填充

數(shù)據(jù)處理步驟

1. 數(shù)據(jù)分組 2. 頻數(shù)統(tǒng)計(jì) 3. 填充表格

1. 數(shù)據(jù)聚合 2. 行列分組 3. 填充表格

行列索引的使用

使用指定的行和列索引對(duì)數(shù)據(jù)進(jìn)行分組

使用指定的行和列索引對(duì)數(shù)據(jù)進(jìn)行分組

聚合函數(shù)的使用

不常用,通常是簡(jiǎn)單的頻數(shù)統(tǒng)計(jì)

可以使用各種聚合函數(shù),如求和、平均值等

靈活性

較低,功能相對(duì)簡(jiǎn)單

較高,可以進(jìn)行更多的定制,如添加邊距匯總、使用不同的聚合函數(shù)等

用途

用于統(tǒng)計(jì)頻數(shù)、探索分類變量之間的關(guān)系

用于數(shù)據(jù)的匯總、分析和可視化

這個(gè)表格簡(jiǎn)明地總結(jié)了交叉表和透視表在數(shù)學(xué)原理上的相同點(diǎn)和不同點(diǎn)。雖然它們都用于數(shù)據(jù)的匯總和分析,但在處理方式、步驟、靈活性和用途等方面有所不同。

數(shù)據(jù)交叉表分析

pd.crosstab()分析

數(shù)據(jù)交叉表分析是一種統(tǒng)計(jì)方法,用于匯總和分析兩個(gè)或多個(gè)變量之間的關(guān)系。在 Pandas 中,可以使用 pd.crosstab() 函數(shù)來進(jìn)行數(shù)據(jù)交叉表分析。讓我們以一個(gè)示例來說明其用法:

具體參數(shù):

  • index: 想要作為行索引的列名或者數(shù)組,可選參數(shù)。
  • columns: 想要作為列索引的列名或者數(shù)組,可選參數(shù)。
  • values: 可選參數(shù),用于指定要聚合的數(shù)值列名或者數(shù)組。
  • aggfunc: 可選參數(shù),指定聚合函數(shù),例如 sum、mean、count 等,默認(rèn)為 count。
  • rownames: 可選參數(shù),用于設(shè)置行索引的名稱。
  • colnames: 可選參數(shù),用于設(shè)置列索引的名稱。
  • margins: 可選參數(shù),布爾值,默認(rèn)為 False,表示是否添加行/列邊距匯總。
  • normalize: 可選參數(shù),參數(shù)用于控制交叉表的歸一化方式。歸一化是將數(shù)據(jù)轉(zhuǎn)換為相對(duì)值的過程,通常通過除以總和來實(shí)現(xiàn)。normalize 參數(shù)可以設(shè)置為不同的值,具體含義如下 normalize:默認(rèn)為False,是否要進(jìn)行規(guī)范化。

如果傳入為‘all’或者是True,將所有的值進(jìn)行歸一化。

如果傳入為‘index’,根據(jù)每行進(jìn)行歸一化。

如果傳入為‘columns’,根據(jù)每列進(jìn)行歸一化。

如果margins為True,小計(jì)列和行也會(huì)進(jìn)行歸一化。

代碼示例

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)

data = {

    'Salesperson': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'],

    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],

    'Month': [1, 1, 2, 2, 3, 3],

    'Amount': [100, 200, 150, 250, 180, 220]

}

df = pd.DataFrame(data)

# 創(chuàng)建交叉表1:統(tǒng)計(jì)銷售人員和產(chǎn)品類型的數(shù)量

cross_table1 = pd.crosstab(df['Salesperson'], df['Product'])

print("Cross Table 1:")

print(cross_table1)

# 創(chuàng)建交叉表2:統(tǒng)計(jì)每個(gè)銷售人員在每個(gè)月份的銷售總額

cross_table2 = pd.crosstab(df['Salesperson'], df['Month'], values=df['Amount'], aggfunc='sum')

print("\nCross Table 2:")

print(cross_table2)

# 創(chuàng)建交叉表3:包含行/列邊距匯總

cross_table3 = pd.crosstab(df['Salesperson'], df['Product'], margins=True)

print("\nCross Table 3:")

print(cross_table3)

# 創(chuàng)建交叉表4:歸一化,將每個(gè)值除以每行的總和

cross_table4 = pd.crosstab(df['Salesperson'], df['Product'], normalize='index')

print("\nCross Table 4:")

print(cross_table4)

不同 normalize 參數(shù)值的效果:

import pandas as pd

data = {

    'Salesperson': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'],

    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],

    'Amount': [100, 200, 150, 250, 180, 220]

}

df = pd.DataFrame(data)

# 不進(jìn)行歸一化

cross_table_false = pd.crosstab(df['Salesperson'], df['Product'], normalize=False)

print("Without normalization:")

print(cross_table_false)

# 對(duì)每個(gè)行進(jìn)行歸一化

cross_table_row = pd.crosstab(df['Salesperson'], df['Product'], normalize='index')

print("\nNormalized by row:")

print(cross_table_row)

# 每個(gè)列進(jìn)行歸一化

cross_table_col = pd.crosstab(df['Salesperson'], df['Product'], normalize='columns')

print("\nNormalized by column:")

print(cross_table_col)

# 對(duì)整個(gè)表進(jìn)行歸一化

cross_table_all = pd.crosstab(df['Salesperson'], df['Product'], normalize='all')

print("\nNormalized by all:")

print(cross_table_all)

數(shù)據(jù)透視表分析

pd.pivot_table()分析

透視表是一種數(shù)據(jù)匯總工具,允許你根據(jù)一個(gè)或多個(gè)鍵對(duì)數(shù)據(jù)進(jìn)行聚合,然后在行和列上對(duì)數(shù)據(jù)進(jìn)行分組。這使得你可以更輕松地理解數(shù)據(jù)的結(jié)構(gòu)和關(guān)系,并從中提取有價(jià)值的信息。

pd.pivot_table() 函數(shù)可以將原始數(shù)據(jù)轉(zhuǎn)換為透視表格式,它提供了靈活的參數(shù)設(shè)置,使得你可以根據(jù)自己的需求定制透視表的形式。

參數(shù)介紹:

  • data: DataFrame,表示要進(jìn)行透視操作的原始數(shù)據(jù)。
  • values: 需要聚合的列名,可以是單個(gè)列名或者包含多個(gè)列名的列表。
  • index: 透視表的行索引,可以是單個(gè)列名或者包含多個(gè)列名的列表。
  • columns: 透視表的列索引,可以是單個(gè)列名或者包含多個(gè)列名的列表。
  • aggfunc: 聚合函數(shù),用于對(duì)值進(jìn)行聚合,默認(rèn)為 'mean'。
  • fill_value: 在透視表中替換缺失值的值,默認(rèn)為 None。
  • margins: 是否添加行/列邊距匯總,默認(rèn)為 False。
  • margins_name: 邊距匯總的名稱,默認(rèn)為 'All'。
  • dropna: 是否刪除包含缺失值的行/列,默認(rèn)為 True。

代碼示例

import pandas as pd
data = {
    'Salesperson': ['Alice', 'Bob', 'Alice', 'Bob', 'Alice', 'Bob'],
    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Amount': [100, 200, 150, 250, 180, 220]
}
df = pd.DataFrame(data)
# 創(chuàng)建透視表
pivot_table_basic = pd.pivot_table(df, values='Amount', index='Salesperson', columns='Product', aggfunc='sum', fill_value=0)
print("Basic Pivot Table:")
print(pivot_table_basic)
添加行/列邊距匯總
# 創(chuàng)建透視表并添加行/列邊距匯總
pivot_table_with_margins = pd.pivot_table(df, values='Amount', index='Salesperson', columns='Product', aggfunc='sum', fill_value=0, margins=True)
print("\nPivot Table with Margins:")
print(pivot_table_with_margins)
# 創(chuàng)建透視表并使用不同的聚合函數(shù)
pivot_table_aggfunc = pd.pivot_table(df, values='Amount', index='Salesperson', columns='Product', aggfunc='mean', fill_value=0)
print("\nPivot Table with Different Aggregation Function (mean):")
print(pivot_table_aggfunc)
# 創(chuàng)建透視表并填充缺失值
pivot_table_fill_value = pd.pivot_table(df, values='Amount', index='Salesperson', columns='Product', aggfunc='sum', fill_value='No Sales')
print("\nPivot Table with Fill Value for Missing Data:")
print(pivot_table_fill_value)
# 創(chuàng)建透視表并使用多個(gè)行索引和列索引
df['Year'] = pd.to_datetime('today').year
pivot_table_multi_index = pd.pivot_table(df, values='Amount', index=['Salesperson', 'Year'], columns=['Product'], aggfunc='sum', fill_value=0)
print("\nPivot Table with Multiple Index and Columns:")
print(pivot_table_multi_index)

到此這篇關(guān)于Pandas 透視表和交叉表的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Pandas 透視表和交叉表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • flask中過濾器的使用詳解

    flask中過濾器的使用詳解

    這篇文章主要介紹了flask中過濾器的使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Python計(jì)算素?cái)?shù)個(gè)數(shù)的兩種方法

    Python計(jì)算素?cái)?shù)個(gè)數(shù)的兩種方法

    本文主要介紹了Python計(jì)算素?cái)?shù)個(gè)數(shù)的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • NumPy實(shí)現(xiàn)結(jié)構(gòu)化數(shù)組的示例代碼

    NumPy實(shí)現(xiàn)結(jié)構(gòu)化數(shù)組的示例代碼

    結(jié)構(gòu)化數(shù)組是 NumPy 中用于處理異質(zhì)數(shù)據(jù)的重要工具,通過定義復(fù)雜的數(shù)據(jù)類型,我們可以創(chuàng)建具有不同字段的數(shù)組,本文主要介紹了NumPy實(shí)現(xiàn)結(jié)構(gòu)化數(shù)組的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • python的依賴管理的實(shí)現(xiàn)

    python的依賴管理的實(shí)現(xiàn)

    這篇文章主要介紹了python的依賴管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • tensorflow入門之訓(xùn)練簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)方法

    tensorflow入門之訓(xùn)練簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)方法

    本篇文章主要介紹了tensorflow入門之訓(xùn)練簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • python中partial庫(kù)的使用方法解析

    python中partial庫(kù)的使用方法解析

    這篇文章主要介紹了python中partial庫(kù)的使用方法解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-08-08
  • Python中常用功能的實(shí)現(xiàn)代碼分享

    Python中常用功能的實(shí)現(xiàn)代碼分享

    這篇文章主要為大家整理分享了11個(gè)Python中常用功能的實(shí)現(xiàn)代碼片段,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-04-04
  • Python批量將圖片灰度化的實(shí)現(xiàn)代碼

    Python批量將圖片灰度化的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python批量將圖片灰度化的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 使用python腳本自動(dòng)生成K8S-YAML的方法示例

    使用python腳本自動(dòng)生成K8S-YAML的方法示例

    這篇文章主要介紹了使用python腳本自動(dòng)生成K8S-YAML的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Pytorch可視化之Visdom使用實(shí)例

    Pytorch可視化之Visdom使用實(shí)例

    Visdom 是一個(gè)專門用于 PyTorch 的交互式可視化工具,可以對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行豐富的可視化,幫助我們實(shí)時(shí)監(jiān)控在遠(yuǎn)程服務(wù)器上進(jìn)行的科學(xué)實(shí)驗(yàn),這篇文章主要給大家介紹了關(guān)于Pytorch可視化之Visdom使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評(píng)論