使用Pandas實(shí)現(xiàn)Excel中的數(shù)據(jù)透視表的項(xiàng)目實(shí)踐
引言
在數(shù)據(jù)分析中,數(shù)據(jù)透視表是一種非常強(qiáng)大的工具,它可以幫助我們快速匯總、分析和可視化大量數(shù)據(jù)。雖然Excel提供了內(nèi)置的數(shù)據(jù)透視表功能,但對于需要進(jìn)行更復(fù)雜操作或自動化處理的場景,Python中的Pandas庫提供了一個靈活且強(qiáng)大的替代方案。本文將通過具體的示例,展示如何使用Pandas實(shí)現(xiàn)類似Excel中的數(shù)據(jù)透視表功能。
準(zhǔn)備工作
首先確保你的環(huán)境中已經(jīng)安裝了Pandas庫。如果尚未安裝,可以通過pip命令快速安裝:
pip install pandas openpyxl
接下來,我們將創(chuàng)建一個模擬的真實(shí)銷售數(shù)據(jù)表格文件 sales_data.xlsx
,并使用Pandas讀取該文件,然后生成數(shù)據(jù)透視表。
創(chuàng)建模擬銷售數(shù)據(jù)
假設(shè)我們的 sales_data.xlsx
文件包含以下數(shù)據(jù):
日期 | 產(chǎn)品名稱 | 銷售額 | 地區(qū) | 銷售員 |
---|---|---|---|---|
2021-01-01 | 產(chǎn)品A | 8000 | 華東 | 張三 |
2021-01-02 | 產(chǎn)品B | 12000 | 華北 | 李四 |
2021-01-03 | 產(chǎn)品C | 5000 | 華南 | 王五 |
2021-01-04 | 產(chǎn)品D | 15000 | 華東 | 張三 |
2021-01-05 | 產(chǎn)品E | 7000 | 華中 | 李四 |
2021-01-06 | 產(chǎn)品F | 20000 | 華北 | 王五 |
2021-01-07 | 產(chǎn)品G | 9000 | 華東 | 張三 |
2021-01-08 | 產(chǎn)品H | 3000 | 華南 | 李四 |
2021-01-09 | 產(chǎn)品I | 6000 | 華中 | 王五 |
2021-01-10 | 產(chǎn)品J | 11000 | 華東 | 張三 |
代碼實(shí)現(xiàn)及輸出
首先,我們需要創(chuàng)建這個模擬數(shù)據(jù)并保存到Excel文件中,然后使用Pandas讀取并生成數(shù)據(jù)透視表。
import pandas as pd # 創(chuàng)建模擬數(shù)據(jù) data = { '日期': ['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', '2021-01-10'], '產(chǎn)品名稱': ['產(chǎn)品A', '產(chǎn)品B', '產(chǎn)品C', '產(chǎn)品D', '產(chǎn)品E', '產(chǎn)品F', '產(chǎn)品G', '產(chǎn)品H', '產(chǎn)品I', '產(chǎn)品J'], '銷售額': [8000, 12000, 5000, 15000, 7000, 20000, 9000, 3000, 6000, 11000], '地區(qū)': ['華東', '華北', '華南', '華東', '華中', '華北', '華東', '華南', '華中', '華東'], '銷售員': ['張三', '李四', '王五', '張三', '李四', '王五', '張三', '李四', '王五', '張三'] } # 將數(shù)據(jù)保存到Excel文件 df = pd.DataFrame(data) df.to_excel('sales_data.xlsx', index=False) # 重新加載數(shù)據(jù) df = pd.read_excel('sales_data.xlsx') # 顯示前幾行以檢查數(shù)據(jù) print("原始數(shù)據(jù):") print(df.head())
運(yùn)行上述代碼后,你將看到如下輸出結(jié)果:
原始數(shù)據(jù)
日期 產(chǎn)品名稱 銷售額 地區(qū) 銷售員
0 2021-01-01 產(chǎn)品A 8000 華東 張三
1 2021-01-02 產(chǎn)品B 12000 華北 李四
2 2021-01-03 產(chǎn)品C 5000 華南 王五
3 2021-01-04 產(chǎn)品D 15000 華東 張三
4 2021-01-05 產(chǎn)品E 7000 華中 李四
示例1: 按地區(qū)和銷售員匯總銷售額
假設(shè)我們想要按地區(qū)和銷售員匯總銷售額,并計算每個組合的總銷售額。
# 生成數(shù)據(jù)透視表 pivot_table1 = pd.pivot_table(df, values='銷售額', index=['地區(qū)', '銷售員'], aggfunc='sum') print("\n按地區(qū)和銷售員匯總銷售額:") print(pivot_table1)
按地區(qū)和銷售員匯總銷售額:
地區(qū) 銷售員
華東 張三 33000
華北 李四 12000
王五 20000
華南 王五 8000
華中 李四 13000
王五 6000
Name: 銷售額, dtype: int64
示例2: 按地區(qū)匯總銷售額,并顯示每個地區(qū)的總銷售額
假設(shè)我們想要按地區(qū)匯總銷售額,并顯示每個地區(qū)的總銷售額。
# 生成數(shù)據(jù)透視表 pivot_table2 = pd.pivot_table(df, values='銷售額', index=['地區(qū)'], aggfunc='sum') print("\n按地區(qū)匯總銷售額:") print(pivot_table2)
按地區(qū)匯總銷售額:
地區(qū)
華北 32000
華東 33000
華南 8000
華中 13000
Name: 銷售額, dtype: int64
示例3: 按地區(qū)和銷售員匯總銷售額,并顯示每個組合的平均銷售額
假設(shè)我們想要按地區(qū)和銷售員匯總銷售額,并顯示每個組合的平均銷售額。
# 生成數(shù)據(jù)透視表 pivot_table3 = pd.pivot_table(df, values='銷售額', index=['地區(qū)', '銷售員'], aggfunc='mean') print("\n按地區(qū)和銷售員匯總銷售額(平均值):") print(pivot_table3)
按地區(qū)和銷售員匯總銷售額(平均值):
地區(qū) 銷售員
華東 張三 11000.0
華北 李四 12000.0
王五 20000.0
華南 王五 5500.0
華中 李四 9333.333333
王五 6000.0
Name: 銷售額, dtype: float64
示例4: 按地區(qū)和銷售員匯總銷售額,并顯示每個組合的最大銷售額
假設(shè)我們想要按地區(qū)和銷售員匯總銷售額,并顯示每個組合的最大銷售額。
# 生成數(shù)據(jù)透視表 pivot_table4 = pd.pivot_table(df, values='銷售額', index=['地區(qū)', '銷售員'], aggfunc='max') print("\n按地區(qū)和銷售員匯總銷售額(最大值):") print(pivot_table4)輸出結(jié)果
按地區(qū)和銷售員匯總銷售額(最大值):
地區(qū) 銷售員
華東 張三 15000
華北 李四 12000
王五 20000
華南 王五 5000
華中 李四 7000
王五 6000
Name: 銷售額, dtype: int64
結(jié)論
通過以上示例,我們可以看到Pandas庫在處理數(shù)據(jù)透視表方面提供了非常強(qiáng)大和靈活的功能。無論是簡單的匯總還是復(fù)雜的多條件聚合,Pandas都能輕松應(yīng)對。掌握這些基本技巧后,你將能夠更加高效地管理和分析自己的數(shù)據(jù)集,從而更快地獲得有價值的洞察。希望這篇文章能幫助你在日常工作中更好地利用Pandas!
到此這篇關(guān)于使用Pandas實(shí)現(xiàn)Excel中的數(shù)據(jù)透視表的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)Pandas Excel數(shù)據(jù)透視表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- pandas中使用數(shù)據(jù)透視表的示例代碼
- Pandas實(shí)現(xiàn)(pivot_table函數(shù))數(shù)據(jù)透視表方式
- python Pandas高級功能之?dāng)?shù)據(jù)透視表和字符串操作
- Pandas數(shù)據(jù)分析之pandas數(shù)據(jù)透視表和交叉表
- Python+Pandas實(shí)現(xiàn)數(shù)據(jù)透視表
- python 用pandas實(shí)現(xiàn)數(shù)據(jù)透視表功能
- pandas實(shí)現(xiàn)excel中的數(shù)據(jù)透視表和Vlookup函數(shù)功能代碼
相關(guān)文章
詳解Python中__new__和__init__的區(qū)別與聯(lián)系
在Python中,每個對象都有兩個特殊的方法:__new__和__init__,本文將詳細(xì)介紹這兩個方法的不同之處以及它們之間的聯(lián)系,具有一定的參考價值,感興趣的可以了解一下2023-12-12python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5美化窗體與控件(異形窗體)實(shí)例,需要的朋友可以參考下2020-02-02Python利用pyreadline模塊實(shí)現(xiàn)交互式命令行開發(fā)
交互式命令行是一種方便用戶進(jìn)行交互的工具,能夠使用戶與計算機(jī)進(jìn)行快速的交互操作,提高工作效率。本文主要介紹了如何利用pyreadline模塊實(shí)現(xiàn)交互式命令行開發(fā),需要的可以參考一下2023-05-05Python使用flask-caching緩存數(shù)據(jù)的示例代碼
Flask-Caching 是 Flask 的一個擴(kuò)展,為任何 Flask 應(yīng)用程序添加了對各種后端的緩存支持,它基于 cachelib 運(yùn)行,并通過統(tǒng)一的 API 支持 werkzeug 的所有原始緩存后端,本文給大家介紹了Python使用flask-caching緩存數(shù)據(jù),需要的朋友可以參考下2024-12-12python列表使用實(shí)現(xiàn)名字管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python列表使用實(shí)現(xiàn)名字管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01