pandas.Grouper() 在實際項目中非常有用,尤其是在處理時間序列數據、財務數據或多級索引數據時

pandas.Grouper() 在實際項目中非常有用,尤其是在處理時間序列數據、財務數據或多級索引數據時。以下是幾個實際場景的例子,展示了如何使用 pandas.Grouper() 進行數據分組,并用數值示例說明。

1. 按月分組進行銷售數據匯總

場景: 一個電商平臺的銷售數據,包含訂單日期和銷售額,要求按月匯總每月的總銷售額。

數據示例:

import pandas as pd# 創建示例數據
data = {'order_date': ['2023-01-01', '2023-01-15', '2023-02-01', '2023-02-15', '2023-03-01', '2023-03-15'],'sales': [150, 200, 180, 220, 250, 300]
}
df = pd.DataFrame(data)
df['order_date'] = pd.to_datetime(df['order_date'])# 使用Grouper按月分組
monthly_sales = df.groupby(pd.Grouper(key='order_date', freq='ME')).sum()print(monthly_sales)

輸出:

            sales
order_date        
2023-01-31    350
2023-02-28    400
2023-03-31    550

解釋: 在這個例子中,Grouper 被用來根據 order_date 列按月進行分組,聚合函數是求和 (sum),結果顯示每個月的總銷售額。

2. 按季度分組進行平均銷售額分析

場景: 按季度分析某產品的平均銷售額,以便做季節性銷售預測。

數據示例:

# 創建示例數據
data = {'order_date': ['2023-01-01', '2023-04-01', '2023-07-01', '2023-10-01'],'sales': [120, 150, 200, 180]
}
df = pd.DataFrame(data)
df['order_date'] = pd.to_datetime(df['order_date'])# 使用Grouper按季度分組
quarterly_sales = df.groupby(pd.Grouper(key='order_date', freq='QE')).mean()print(quarterly_sales)

輸出:

            sales
order_date        
2023-03-31    120
2023-06-30    150
2023-09-30    200
2023-12-31    180

解釋: Grouper 根據 order_date 列按季度進行分組(freq='Q'),并計算每個季度的平均銷售額。季度之間的銷售波動可以通過這種方式進行分析。

3. 按天分組處理時間序列數據

場景: 假設你有一個股票市場數據集,每個交易日的股票價格需要按天進行分組,計算每日的最大、最小價格。

數據示例:

# 創建示例數據
data = {'date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-03'],'price': [100, 110, 105, 107, 108]
}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])# 按天分組并計算每一天的最大和最小股票價格
daily_prices = df.groupby(pd.Grouper(key='date', freq='D')).agg({'price': ['max', 'min']})print(daily_prices)

輸出:

            price          max  min
date                     
2023-01-01     110  100
2023-01-02     107  105
2023-01-03     108  108

解釋: 這里我們使用 Grouper 按天 (freq='D') 對數據進行分組,并使用 agg 方法分別計算每一天的最大和最小股票價格。

4. 按多個層級進行分組(多級索引)

場景: 假設你有一個包含多個地區和年份的銷售數據,要求按地區和年份進行分組,計算每個地區每年的總銷售額。

數據示例:

# 創建示例數據
data = {'region': ['North', 'North', 'South', 'South', 'North', 'South'],'year': [2021, 2022, 2021, 2022, 2021, 2022],'sales': [100, 150, 120, 180, 200, 250]
}
df = pd.DataFrame(data)
df.set_index(['region', 'year'], inplace=True)# 使用Grouper按年份分組并計算總銷售額
sales_by_region_year = df.groupby(pd.Grouper(level='year')).sum()print(sales_by_region_year)

輸出:

         sales
year           
2021      420
2022      580

解釋: 在這個例子中,Grouper 被用來按 year 進行分組。通過 level='year' 來指定我們要根據 year 這一層級來進行分組,并計算每個年份的總銷售額。set_index 用來創建多級索引。

5. 按自定義時間頻率分組

場景: 假設你有一個包含分鐘級別時間戳的傳感器數據集,要求按每小時分組進行統計。

數據示例:

# 創建示例數據
data = {'timestamp': ['2023-01-01 00:01', '2023-01-01 00:30', '2023-01-01 01:00', '2023-01-01 01:15'],'value': [10, 15, 20, 25]
}
df = pd.DataFrame(data)
df['timestamp'] = pd.to_datetime(df['timestamp'])# 按每小時分組
hourly_data = df.groupby(pd.Grouper(key='timestamp', freq='H')).sum()print(hourly_data)

輸出:

                     value
timestamp                 
2023-01-01 00:00:00     25
2023-01-01 01:00:00     45

解釋: 使用 freq='H' 可以按小時對數據進行分組,求出每小時的數據匯總。即使原數據的時間戳是分鐘級別,Grouper 會自動按小時進行對齊并匯總。

總結:

pandas.Grouper() 可以處理各種實際問題,尤其是在時間序列數據和多層級數據的處理上,能夠靈活地按不同的時間頻率、層級或條件對數據進行分組,并進行各種統計分析。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65001.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

private static final Logger log = LoggerFactory.getLogger()和@Slf4j的區別

一、代碼方面 - private static final Logger log LoggerFactory.getLogger()方式 詳細解釋 這是一種傳統的獲取日志記錄器(Logger)的方式。LoggerFactory是日志框架(如 Log4j、Logback 等)提供的工廠類,用于創建Lo…

醫療數倉Hive安裝部署

Hive安裝部署 Hive安裝部署 1)把hive-3.1.3.tar.gz上傳到linux的/opt/software目錄下 2)解壓hive-3.1.3.tar.gz到/opt/module/目錄下面 [atguiguhadoop102 software]$ tar -zxvf /opt/software/hive-3.1.3.tar.gz -C /opt/module/3)修改hive…

通俗易懂的講一下Vue的雙向綁定和React的單向綁定

1.Vue 的雙向綁定&#xff1a; <template><!-- 輸入框和數據自動綁定&#xff0c;就像連體嬰兒&#xff0c;一個動另一個也動 --><input v-model"message"><p>{{ message }}</p><!-- 完整表單示例 --><form><!-- 所有…

使用setup.py打包 HuggingFace PEFT 項目詳解:pip install peft的幕后流程

使用 setup.py 打包 HuggingFace PEFT 項目詳解 Source: https://github.com/huggingface/peft/blob/main/setup.py 1. 項目簡介 HuggingFace 的 PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;庫是一個用于高效參數微調的 Python 工具包&#xff0c;支持多種…

BP神經網絡的反向傳播算法

BP神經網絡&#xff08;Backpropagation Neural Network&#xff09;是一種常用的多層前饋神經網絡&#xff0c;通過反向傳播算法進行訓練。反向傳播算法的核心思想是通過計算損失函數對每個權重的偏導數&#xff0c;從而調整權重&#xff0c;使得網絡的預測輸出與真實輸出之間…

線程池的創建規范

第1章&#xff1a;引言——為什么使用線程池&#xff1f; 1.1 線程池的概念 線程池是一個容器&#xff0c;用來管理多個工作線程&#xff0c;它通過對線程的管理、復用來提高系統性能。線程池的核心理念是將線程的創建、銷毀、復用等操作交給線程池來管理&#xff0c;避免了頻…

【藍橋杯比賽-C++組-經典題目匯總】

1. 最短路 題目描述&#xff1a; 如下圖所示&#xff0c;G是一個無向圖&#xff0c;其中藍色邊的長度是1、橘色邊的長度是2、綠色邊的長度是3。 則從 A 到 S 的最短距離是多少&#xff1f; #include <iostream> #include <cstring> using namespace std; const i…

活動預告 | Microsoft 安全在線技術公開課:通過擴展檢測和響應抵御威脅

課程介紹 通過 Microsoft Learn 免費參加 Microsoft 安全在線技術公開課&#xff0c;掌握創造新機遇所需的技能&#xff0c;加快對 Microsoft Cloud 技術的了解。參加我們舉辦的“通過擴展檢測和響應抵御威脅”技術公開課活動&#xff0c;了解如何更好地在 Microsoft 365 Defen…

第八節:GLM-4v-9b模型的大語言模型源碼解讀(ChatGLMForConditionalGeneration)

文章目錄 前言一、ChatGLMForConditionalGeneration類源碼解讀1、ChatGLMForConditionalGeneration類源碼2、self.transformer方法源碼3、loss_fct = CrossEntropyLoss(ignore_index=-100)方法Demo二、ChatGLMModel類源碼解讀三、GLMTransformer結構源碼解讀四、GLMBlock結構源…

Windows onnxruntime編譯openvino

理論上來說&#xff0c;可以直接訪問 ONNXRuntime Releases 下載 dll 文件&#xff0c;然后從官方文檔中下載缺少的頭文件以直接調用&#xff0c;但我沒有嘗試過。 1. 下載 OpenVINO 包 從官網下載 OpenVINO 的安裝包并放置在 C:\Program Files (x86) 路徑下&#xff0c;例如…

Vue3 中的插槽

Vue3 中插槽的使用&#xff0c;插槽是 Vue 中的一個特別特性&#xff0c;插槽就是模版內容。例如<h1>標題 1</h1>標題 1 就是插槽&#xff0c;Vue 是無法識別模板內容的&#xff0c;只能通過屬性進行傳遞。Slot 主要包括默認、具名和作用域。Slot開發起來難度不大&…

01.02周四F34-Day43打卡

文章目錄 1. 地是濕的。昨晚估計下雨了。2. 你可能把包丟在餐廳里了吧?3. 她說他可能誤了航班。4. 我本來應該早點來的,但路上特別堵。5. 約翰可能在那次事故中受了重傷。6. 這是一個情景對話7. 我本可以走另一條路的。8. 我準是瘦了不少,你看我這褲子現在多肥。9. 錢沒了!會…

深度學習:基于MindSpore NLP的數據并行訓練

什么是數據并行&#xff1f; 數據并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是將大規模的數據集分割成若干個較小的數據子集&#xff0c;并將這些子集分配到不同的 NPU 計算節點上&#xff0c;每個節點運行相同的模型副本&#xff0c;但處理不同的數據子集。…

五類推理(邏輯推理、概率推理、圖推理、基于深度學習的推理)的開源庫 (一)

在開發中&#xff0c;有一些開源庫可以實現不同類型的推理&#xff0c;包括邏輯推理、概率推理、圖推理、基于深度學習的推理等。以下是五類推理&#xff08;邏輯推理、概率推理、圖推理、基于深度學習的推理&#xff09;的現成開源庫&#xff0c;它們各自的功能、特點和適用場…

高等數學學習筆記 ? 函數的極限

1. 函數的極限定義 備注&#xff1a;已知坐標軸上一點&#xff0c;則&#xff1a; ①&#xff1a;的鄰域&#xff1a;指附近的開區間&#xff0c;記作。 ②&#xff1a;的去心鄰域&#xff1a;指附近的開區間&#xff0c;但不包含&#xff0c;記作。 ③&#xff1a;的鄰域&…

Python用K-Means均值聚類、LRFMC模型對航空公司客戶數據價值可視化分析指標應用|數據分享...

全文鏈接&#xff1a;https://tecdat.cn/?p38708 分析師&#xff1a;Yuling Fang 信息時代的來臨使得企業營銷焦點從產品中心轉向客戶中心&#xff0c;客戶關系管理成為企業的核心問題&#xff08;點擊文末“閱讀原文”獲取完整代碼數據&#xff09;。 客戶關系管理的關鍵是客…

【前端系列】優化axios響應攔截器

文章目錄 一、前言&#x1f680;&#x1f680;&#x1f680;二、axios響應攔截器&#xff1a;??????2.1 為什么前端需要響應攔截器element ui的消息組件 一、前言&#x1f680;&#x1f680;&#x1f680; ?? 回報不在行動之后&#xff0c;回報在行動之中。 這個系列可…

【 IEEE 獨立出版 · EI核心、Scopus穩定檢索 】第二屆算法、軟件工程與網絡安全國際學術會議(ASENS 2025)

ASENS 2025 第二屆算法、軟件工程與網絡安全國際學術會議 2025 2nd International Conference on Algorithms, Software Engineering and Network Security 中國 廣州 2025年3月21-23日 會議官網&#xff1a;www.ic-asens.org IEEE 獨立出版 EI核心、Scopus快速…

/ete/security/limits.conf參數詳解

/ete/security/limits.conf配置文件 內容如下&#xff1a; * soft nofile 65535 * hard nofile 65535參數詳解 *: 表示對所有用戶生效soft: 表示軟限制&#xff0c;即用戶可以通過ulimit命令自行調整該值hard: 表示硬限制&#xff0c;即用戶無法通過ulimit命令將該值調整超過…

#Vue3篇: 無感刷新token的原理JSESSIONID無感刷新和JWT接口刷新

基于這個后端是怎么更新token的 為了理解后端是如何更新 Token 的&#xff0c;我們需要考慮一個典型的基于 Token 的身份驗證流程&#xff0c;特別是涉及 JSESSIONID 和自定義 Token&#xff08;如 JWT, JSON Web Token&#xff09;的情況。 下面我將介紹兩種常見的更新 Token …