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

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

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

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

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

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

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

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

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

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

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

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

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

透視表相比于交叉表更加靈活,因為它允許我們在生成表格時進行更多的定制,如使用不同的聚合函數(shù)、添加行/列邊距匯總等??偟膩碚f,交叉表和透視表都是用于匯總和分析數(shù)據(jù)的工具,它們的數(shù)學(xué)原理都涉及到數(shù)據(jù)的分組、聚合和填充,但透視表相比于交叉表在功能上更加靈活。

表格總結(jié):

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

方面

交叉表

透視表

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

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

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

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

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

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

行列索引的使用

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

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

聚合函數(shù)的使用

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

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

靈活性

較低,功能相對簡單

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

用途

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

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

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

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

pd.crosstab()分析

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

具體參數(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)換為相對值的過程,通常通過除以總和來實現(xiàn)。normalize 參數(shù)可以設(shè)置為不同的值,具體含義如下 normalize:默認(rèn)為False,是否要進行規(guī)范化。

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

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

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

如果margins為True,小計列和行也會進行歸一化。

代碼示例

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)計銷售人員和產(chǎn)品類型的數(shù)量

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

print("Cross Table 1:")

print(cross_table1)

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

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:歸一化,將每個值除以每行的總和

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)

# 不進行歸一化

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

print("Without normalization:")

print(cross_table_false)

# 對每個行進行歸一化

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

print("\nNormalized by row:")

print(cross_table_row)

# 每個列進行歸一化

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

print("\nNormalized by column:")

print(cross_table_col)

# 對整個表進行歸一化

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ù)一個或多個鍵對數(shù)據(jù)進行聚合,然后在行和列上對數(shù)據(jù)進行分組。這使得你可以更輕松地理解數(shù)據(jù)的結(jié)構(gòu)和關(guān)系,并從中提取有價值的信息。

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

參數(shù)介紹:

  • data: DataFrame,表示要進行透視操作的原始數(shù)據(jù)。
  • values: 需要聚合的列名,可以是單個列名或者包含多個列名的列表。
  • index: 透視表的行索引,可以是單個列名或者包含多個列名的列表。
  • columns: 透視表的列索引,可以是單個列名或者包含多個列名的列表。
  • aggfunc: 聚合函數(shù),用于對值進行聚合,默認(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)建透視表并使用多個行索引和列索引
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 透視表和交叉表的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Pandas 透視表和交叉表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • flask中過濾器的使用詳解

    flask中過濾器的使用詳解

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

    Python計算素數(shù)個數(shù)的兩種方法

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

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

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

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

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

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

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

    python中partial庫的使用方法解析

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

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

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

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

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

    使用python腳本自動生成K8S-YAML的方法示例

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

    Pytorch可視化之Visdom使用實例

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

最新評論