最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python pandas最常用透視表實(shí)現(xiàn)應(yīng)用案例

 更新時間:2024年01月19日 10:08:17   作者:數(shù)據(jù)小鄭  
透視表是一種可以對數(shù)據(jù)動態(tài)排布并且分類匯總的表格格式,它在數(shù)據(jù)分析中有著重要的作用和地位,在本文中,我將為你介紹python中如何使用pandas包實(shí)現(xiàn)透視表的功能,以及一些常見的應(yīng)用案例

pandas包實(shí)現(xiàn)透視表的功能

透視表是一種可以對數(shù)據(jù)動態(tài)排布并且分類匯總的表格格式,它在數(shù)據(jù)分析中有著重要的作用和地位。在本文中,我將為你介紹python中如何使用pandas包實(shí)現(xiàn)透視表的功能,以及一些常見的應(yīng)用案例。

導(dǎo)入pandas包

首先需要導(dǎo)入pandas包,它是一個提供了高性能數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具的python庫,還需要導(dǎo)入numpy包,它是一個支持多維數(shù)組和矩陣運(yùn)算的python庫。可以使用以下代碼來導(dǎo)入這兩個包:

import pandas as pd

import numpy as np

pandas讀取一個excel文件中的數(shù)據(jù)

接下來,準(zhǔn)備一些數(shù)據(jù)來演示透視表的功能,可以使用pandas的read_excel函數(shù)來讀取一個excel文件中的數(shù)據(jù),也可以使用DataFrame函數(shù)來創(chuàng)建一個數(shù)據(jù)框?qū)ο?。例如,可以使用以下代碼來創(chuàng)建一個包含了商品名稱、代理商、價格和時間的數(shù)據(jù)框:

data = pd.DataFrame({
'商品名稱': ['蘋果', '香蕉', '橘子', '蘋果', '香蕉', '橘子', '蘋果', '香蕉', '橘子'],
'代理商': ['張三', '李四', '王五', '張三', '李四', '王五', '張三', '李四', '王五'],
'價格': [10, 5, 8, 12, 6, 9, 11, 7, 10],
'時間': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09']
})

我們可以使用data.head()函數(shù)來查看數(shù)據(jù)框的前五行:

data.head()

| | 商品名稱 | 代理商 | 價格 | 時間 |

| - | ------- | ----- | --- | --------- |

| 0 | 蘋果 | 張三 | 10 | 2021-01-01 |

| 1 | 香蕉 | 李四 | 5 | 2021-01-02 |

| 2 | 橘子 | 王五 | 8 | 2021-01-03 |

| 3 | 蘋果 | 張三 | 12 | 2021-01-04 |

| 4 | 香蕉 | 李四 | 6 | 2021-01-05 |

pivot_table函數(shù)的語法

現(xiàn)在,我們可以使用pandas的pivot_table函數(shù)來創(chuàng)建一個透視表。pivot_table函數(shù)的基本語法如下:

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

其中,data是要進(jìn)行透視表操作的數(shù)據(jù)框?qū)ο?,values是要進(jìn)行聚合運(yùn)算的列名,index是要作為行索引的列名,columns是要作為列索引的列名,aggfunc是要進(jìn)行聚合運(yùn)算的函數(shù),默認(rèn)為求均值,切記,對于aggfunc,操作的是values后面的值,而不是columns后面的值。fill_value是要填充缺失值的值,默認(rèn)為None,margins是是否添加行列匯總,默認(rèn)為False,dropna是是否刪除缺失值,默認(rèn)為True,margins_name是匯總項(xiàng)的名稱,默認(rèn)為'All'。

pd.pivot_table(data, values='價格', index='商品名稱', columns='代理商', aggfunc='mean', margins=True)

結(jié)果如下:

| | 張三 | 李四 | 王五 | All |

| ----- | ----- | ----- | ----- | ----- |

| 商品名稱 | | | | |

| 蘋果 | 11.00 | NaN | NaN | 11.00 |

| 香蕉 | NaN | 6.00 | NaN | 6.00 |

| 橘子 | NaN | NaN | 9.00 | 9.00 |

| All | 10.33 | 6.00 | 9.00 | 8.33 |

我們可以看到,透視表的行索引是商品名稱,列索引是代理商,單元格的值是價格的均值,缺失值用NaN表示,行列匯總用All表示。

我們還可以使用其他的聚合函數(shù),例如求和、計(jì)數(shù)、最大值、最小值等。我們也可以使用自定義的函數(shù),例如求標(biāo)準(zhǔn)差、中位數(shù)等。我們只需要將aggfunc參數(shù)的值改為相應(yīng)的函數(shù)即可。例如,如果我們想要按照商品名稱和代理商分組,計(jì)算每組的價格總和,并且添加行列匯總,我們可以使用以下代碼:

pd.pivot_table(data, values='價格', index='商品名稱', columns='代理商', aggfunc='sum', margins=True)

結(jié)果如下:

| | 張三 | 李四 | 王五 | All |

| ----- | ----- | ----- | ----- | ----- |

| 商品名稱 | | | | |

| 蘋果 | 33 | NaN | NaN | 33 |

| 香蕉 | NaN | 18 | NaN | 18 |

| 橘子 | NaN | NaN | 27 | 27 |

| All | 33 | 18 | 27 | 78 |

我們可以看到,透視表的行索引是商品名稱,列索引是代理商,單元格的值是價格的總和,缺失值用NaN表示,行列匯總用All表示。

應(yīng)用案例

案例一:使用多個值和多個索引

使用以下代碼來創(chuàng)建一個透視表,顯示每個性別和年齡段的身高和體重的最大值,最小值和平均值:

import pandas as pd
import numpy as np
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "David", "Eve", "Frank", "Grace", "Harry"],
"gender": ["F", "M", "M", "M", "F", "M", "F", "M"],
"age": [16, 30, 12, 32, 27, 29, 15, 31],
"height": [165, 175, 180, 170, 160, 182, 168, 178],
"weight": [55, 70, 75, 68, 50, 72, 54, 69]
})
df_pivot = pd.pivot_table(df, values=["height","weight"], index="gender",
aggfunc=['mean','max','min'])
print(df_pivot)

案例二:使用自定義函數(shù)的透視表

使用以下代碼來創(chuàng)建一個透視表,顯示每個性別的體重的平均值、身高的方差、未成年的計(jì)數(shù):

import pandas as pd
import numpy as np
df = pd.DataFrame({
"name": ["Alice", "Bob", "Charlie", "David", "Eve", "Frank", "Grace", "Harry"],
"gender": ["F", "M", "M", "M", "F", "M", "F", "M"],
"age": [16, 30, 12, 32, 27, 29, 15, 31],
"height": [165, 175, 180, 170, 160, 182, 168, 178],
"weight": [55, 70, 75, 68, 50, 72, 54, 69]
})
def count_cld(col:pd.core.frame.Series):
    # col 是 Series ,每一組的數(shù)據(jù)在一起
    n = 0
    for i in col:
        if i < 18:
            n=n+1
    return n
df_pivot = pd.pivot_table(df, values=["height","weight","age"], index="gender",
aggfunc={ "weight": np.mean, "height":np.std,"age":count_cld})
print(df_pivot)

以上就是python pandas最常用透視表實(shí)現(xiàn)應(yīng)用案例的詳細(xì)內(nèi)容,更多關(guān)于python pandas透視表的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

长岛县| 大理市| 启东市| 深泽县| 伊宁县| 定日县| 拉萨市| 石狮市| 徐闻县| 石首市| 西城区| 灵武市| 社旗县| 新田县| 台中市| 甘谷县| 尚志市| 屏东市| 阳信县| 吉木萨尔县| 沧源| 宿松县| 昆明市| 福安市| 若尔盖县| 宾阳县| 梁平县| 台南县| 乡宁县| 新乡县| 龙泉市| 周至县| 千阳县| 邛崃市| 宁强县| 石棉县| 甘德县| 兴山县| 柏乡县| 榆林市| 宜丰县|