【Pandas】pandas DataFrame resample

Pandas2.2 DataFrame

Time Series-related

方法描述
DataFrame.asfreq(freq[, method, how, …])用于**將時間序列數據轉換為指定頻率(resample to frequency)**的方法
DataFrame.asof(where[, subset])用于查找時間序列中最接近指定時間點的非 NaN 值的方法
DataFrame.shift([periods, freq, axis, …])用于**將 DataFrame 的數據沿著指定軸移動(平移)**的方法
DataFrame.first_valid_index()用于獲取 DataFrame 中第一個非空(非 NaN)值所在的行索引的方法
DataFrame.last_valid_index()用于獲取 DataFrame 中最后一個非空(非 NaN)值所在的行索引的方法
DataFrame.resample(rule[, axis, closed, …])用于**對時間序列數據進行重采樣(resampling)**的核心方法

pandas.DataFrame.resample()

pandas.DataFrame.resample() 是 Pandas 中用于**對時間序列數據進行重采樣(resampling)**的核心方法。它類似于 SQL 中的“GROUP BY 時間窗口”操作,常用于將高頻時間序列數據聚合為低頻(如從分鐘級到小時級、日級等),也支持升采樣(插值填充)。


📌 方法簽名
DataFrame.resample(rule,axis=0,closed=None,label=None,convention='start',kind=None,on=None,level=None,origin='start_day',offset=None,group_keys=False
)

🔧 參數說明:
參數說明
rule時間頻率字符串,如 'D'(天)、'W'(周)、'M'(月)、'Q'(季度)、'A'(年)等
axis操作軸方向,默認為 0(行方向)
closed區間閉合方式,可選 'left''right',表示區間端點是否包含
label聚合后標簽的位置,可選 'left''right'
convention升采樣時的時間點對齊方式,如 'start', 'end'(默認 'start'
kind返回類型,可選 'period''timestamp'
on對非索引的時間列進行 resample(適用于普通列而非 DatetimeIndex)
level多級索引中指定某一級作為時間索引
origin起始時間對齊方式,可選 'epoch''start_day'(默認)
offset時間偏移量,如 '1D' 表示起始時間向后偏移一天
group_keys是否在分組鍵中顯示時間標簽(一般不需修改)

? 返回值
  • 返回一個 Resampler 對象,需要配合 .mean(), .sum(), .max() 等聚合函數使用;
  • 原始數據不會被修改;

🧪 示例代碼及結果
示例 1:基本用法(按天聚合)
import pandas as pd
import numpy as np# 創建帶時間索引的 DataFrame
index = pd.date_range('2025-01-01', periods=6, freq='H')
df = pd.DataFrame({'value': [10, 20, 30, 40, 50, 60]
}, index=index)print("Original DataFrame:")
print(df)
輸出:
                     value
2025-01-01 00:00:00     10
2025-01-01 01:00:00     20
2025-01-01 02:00:00     30
2025-01-01 03:00:00     40
2025-01-01 04:00:00     50
2025-01-01 05:00:00     60
# 按每 2 小時聚合,取平均值
resampled = df.resample('2H').mean()
print("\nAfter resample('2H').mean():")
print(resampled)
輸出:
                     value
2025-01-01 00:00:00   15.0
2025-01-01 02:00:00   35.0
2025-01-01 04:00:00   55.0

示例 2:按天聚合并求和
# 按天聚合,求和
resampled = df.resample('D').sum()
print("\nAfter resample('D').sum():")
print(resampled)
輸出:
            value
2025-01-01    210

示例 3:自定義閉合方式與標簽位置
# 每兩小時一組,右閉合,標簽放在右邊
resampled = df.resample('2H', closed='right', label='right').mean()
print("\nresample('2H', closed='right', label='right'):")
print(resampled)
輸出:
                     value
2025-01-01 02:00:00   15.0
2025-01-01 04:00:00   35.0
2025-01-01 06:00:00   55.0

示例 4:升采樣 + 插值填充(ffill
# 按半小時升采樣,并向前填充
resampled = df.resample('30T').ffill()
print("\nresample('30T').ffill():")
print(resampled)
輸出(部分):
                     value
2025-01-01 00:00:00     10
2025-01-01 00:30:00     10
2025-01-01 01:00:00     20
2025-01-01 01:30:00     20
2025-01-01 02:00:00     30
...

示例 5:使用 on= 指定時間列進行 resample
# 如果時間不是索引而是列
df_reset = df.reset_index()
df_reset.rename(columns={'index': 'timestamp'}, inplace=True)# 使用 on='timestamp' 進行 resample
resampled = df_reset.resample('2H', on='timestamp').mean()
print("\nresample(..., on='timestamp').mean():")
print(resampled)
輸出:
                     value
timestamp                 
2025-01-01 00:00:00   15.0
2025-01-01 02:00:00   35.0
2025-01-01 04:00:00   55.0

示例 6:使用 kind='period' 返回 Period 類型
resampled = df.resample('2H', kind='period').mean()
print("\nresample(..., kind='period').mean():")
print(resampled)
輸出:
         value
timestamp      
2025-01-01 00:00   15.0
2025-01-01 02:00   35.0
2025-01-01 04:00   55.0

🧠 應用場景
場景說明
時間序列聚合如計算每日/每周/每月的均值、總和等
降采樣(Downsampling)將高頻率數據轉換為低頻率(如秒級 → 分鐘級)
升采樣(Upsampling)將低頻率數據轉換為高頻率(如日級 → 小時級),通常結合 .interpolate().ffill()
缺失值處理在升采樣后填充缺失值
可視化準備統一時間粒度便于繪圖分析

?? 注意事項
  • 必須確保索引或指定列為 DatetimeIndex 類型;
  • resample() 不會直接返回結果,必須配合聚合函數(如 .mean(), .sum());
  • 支持多種頻率規則,如:
    • 'T' / 'min':分鐘
    • 'H':小時
    • 'D':天
    • 'W':周
    • 'M':月末
    • 'Q':季度末
    • 'A':年末
  • closedlabel 控制時間區間的劃分方式;
  • origin 可控制時間窗口起點;
  • offset 可設置時間窗口偏移(如從 1:30 開始);
  • on= 可用于對非索引的時間列進行 resample。

? 總結對比
方法是否聚合是否支持升采樣是否支持降采樣是否支持非索引時間列
.resample()????(通過 on=
.asfreq()????
.rolling()????
.groupby(pd.Grouper(freq='D'))????

📈 頻率規則參考表(常用)
規則含義
'T' / 'min'每分鐘
'H'每小時
'D'每天
'W'每周(默認周日為一周開始)
'M'每月最后一天
'Q'每季度最后一天
'A'每年最后一天
'MS'每月初第一天
'QS'每季度初第一天
'AS'每年初第一天

? 推薦組合使用方式
# 常見降采樣 + 聚合
df.resample('D').mean()# 常見升采樣 + 填充
df.resample('T').ffill()  # 每分鐘向前填充
df.resample('T').interpolate('linear')  # 線性插值

如果你希望對時間序列進行降采樣統計、升采樣插值、或統一時間粒度resample() 是非常強大且靈活的工具,是時間序列分析中的核心方法之一。

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

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

相關文章

自動駕駛nuPlan數據集-入門使用和可視化操作

文章目錄 前言一、nuPlan 數據集下載及環境安裝根據個人安裝的路徑將以下內容寫入./bashrc 中二、跑通場景可視化總結 前言 自動駕駛行業知識點太多,不進則退,上班就得學習,天上掉金磚砸我腳好了 參考文檔 參考1 一、nuPlan 數據…

ApplovinMax接入Unity(包括我自己踩的一些坑)

前言 ApplovinMax是一個廣告聚合平臺,他會自帶自己的Applovin平臺廣告,在這個插件上面你可以下載其他的聚合渠道,與谷歌的Admob比較相似。都是廣告聚合平臺。 一. ApplovinMax SDK插件的導入 1.下載插件集成 | SDK 集成指南 | MAX | Suppo…

linux系統執行過程中的5種特殊情況

正在執行的用戶態X切換用戶態進程Y的過程為系統中常用的情況,但并非不能完全準確地反應系統的全部執行場景,還有一些場景比較特殊,主要包括以下5種情況 一.內核線程之間通過中斷處理過程中的調度時機發生進程切換,與一般的情況非常…

9. 元素拖拽

元素拖拽 API 介紹 1. 拖放過程 整個拖放過程中,存在兩個關鍵元素:拖拽元素、放置元素 拖拽元素:被拖拽的元素 drag:元素被拖拽時觸發,從開始拖拽到拖拽結束前整個過程會一直持續的觸發dragstart:元素被…

用來提升同花順軟件進程優先級的C#程序

為了提高炒股軟件同花順的運行速度,消除卡頓,編寫一個C#程序,來設置同花順進程的優先級。 using System; using System.Diagnostics; using System.Security.Principal;namespace ProcessPrioritySetter {class Program{static void Main(st…

linux初階---一些指令

一.快速認識6-8個簡單指令 1.pwd pwd指令是用來查看用戶當前所處在的目錄(目錄的概念在理解上可以等效為文件夾)。 (1)在windows系統中我們通過文件路徑表示唯一的文件,在linux中也是一樣的,所以pwd是一個很…

全國產傳感器外殼的綜合分析:材料選擇、考量因素與尺寸精度影響

全國產傳感器作為現代工業、科研、生活等領域的 “感知觸角”,其外殼的性能與質量直接關乎設備的穩定性、可靠性與使用壽命。從材料選型、關鍵考量因素到尺寸精度的影響,每個環節都需精細把控。 一、全國產傳感器外殼材料的多元選擇 全國產傳感器外殼材…

本地緩存Caffeine詳解(含與Spring Cache集成)

目錄 一、介紹 二、Caffeine核心原理與架構設計 2.1 存儲引擎與數據結構 2.2 緩存淘汰策略 2.3 并發控制機制 三、入門案例 3.1 引入依賴 3.2 測試接口 3.3 小結 四、Caffeine常用方法詳解 4.1 getIfPresent 4.2 get 4.3 put 4.4 putAll 4.5 invalidate 4.6 inv…

論特定領域軟件架構

20250413-作 題目 特定領域軟件架構DSSA(Domain Specific Software Architecture)就是在一個特定應用領域中為一組應用提供組織結構參考的標準軟件體系結構。對DSSA 研究的角度、關心的問題不同導致了對DSSA 的不同定義。DSSA 的必備特征如下。 一…

iOS 遠程調試與離線排查實戰:構建非現場問題復現機制

iOS開發者都知道,調試最怕兩個字:“偶發”。用戶說App閃退了,你點了十遍也沒問題;測試說功能卡頓了,你抓日志時它又順滑如新。最麻煩的是,這種“現場問題”往往在你連接不到用戶設備時發生。 面對這種情況…

SpringBoot -- 整合 Swagger3

8.SpringBoot3 整合 Swagger3 由于目前主流的開發模式是前后端分離開發。所以前后端的交互需要通過一個 API&#xff08;開發接口&#xff09; 來規范。而這個接口的開發是由后端程序員編寫的。“網站式 API 文檔” 1.導入依賴 <!-- 引入swagger3(springdoc)的依賴--> …

A Machine Learning Approach for Non-blind Image Deconvolution論文閱讀

A Machine Learning Approach for Non-blind Image Deconvolution 1. 研究目標與實際意義2. 創新方法與模型設計2.1 核心思路2.2 正則化反演:理論與公式2.2.1 退化模型2.2.2 正則化目標函數2.2.3 傅里葉域閉式解2.3 MLP去偽影:架構與訓練2.3.1 MLP架構設計2.3.2 訓練流程2.3.…

微信小程序<rich-text>支持里面圖片點擊放大

使用<rich-text>渲染類似下面的html代碼&#xff1a; <div stylecolor: red>寵物友好<br/>xxx提供寵物友好服務&#xff0c;具體請見下圖<br/></div> <img srchttps://xxx.com/xxx1.png width100%/> <img srchttps://xxx.com/xxx2.png…

BVH 文件是一種用于記錄 3D 動畫數據的文件格式,常用于 3D 建模和動畫制作。以下是對這個 BVH 文件的逐行解讀

BVH 文件是一種用于記錄 3D 動畫數據的文件格式&#xff0c;常用于 3D 建模和動畫制作。以下是對這個 BVH 文件的逐行解讀&#xff1a; HIERARCHY ROOT Hips { OFFSET 0 0 0 CHANNELS 6 Xposition Yposition Zposition Zrotation Xrotation Yrotation JOINT LeftUpLeg { OFFSE…

C語言開發:Onvif(一)

根據ONVIF官網 的介紹&#xff1a; ONVIF是一個開放的安防行業組織&#xff0c;致力于為安防行業提供和促進標準化開放接口&#xff0c;以實現IP網絡安防產品和服務的有效互操作性。 在具體實現上&#xff0c;ONVIF使用了Web Service的方式&#xff0c;設備通過WSDL定義的接口…

中科米堆三維掃描儀耳機3D掃描尺寸測量數字化建模

當下&#xff0c;耳機已從單純的音頻輸出設備進化為集娛樂、健康、辦公于一體的智能穿戴終端。相關數據顯示&#xff0c;2025年全球智能個人音頻設備出貨量突破4.55億臺&#xff0c;中國以22%的增速領跑全球&#xff0c;其中開放式耳機&#xff08;OWS&#xff09;出貨量占比達…

學習接口自動化框架pytest有哪些好處?

學習 pytest 作為接口自動化測試框架&#xff0c;具有以下顯著優勢&#xff0c;能大幅提升測試效率和質量&#xff1a; Pytest自動化測試教程&#xff0c;自動化必備之Pytest測試框架訓練營&#xff0c;只需一小時速成&#xff0c;學會直接上手實操&#xff01; 1. 代碼簡潔&…

LinuxBridge的作用與發展歷程:從基礎橋接到云原生網絡基石

LinuxBridge作為Linux網絡虛擬化的核心組件&#xff0c;已悄然支撐互聯網基礎設施20余年。它不僅是虛擬機網絡連接的橋梁&#xff0c;更是容器網絡、云原生架構的隱形支柱。 一、LinuxBridge的核心作用剖析 1. 二層網絡虛擬化的實現者 本質功能&#xff1a;模擬物理交換機行為…

探討 SYSCFG 時鐘對 ADC 采樣的影響

探討 SYSCFG 時鐘對 ADC 采樣的影響 在嵌入式系統開發中&#xff0c;對于 GD32F4 系列微控制器&#xff0c;理解 SYSCFG 時鐘與 ADC 采樣之間的關系至關重要。 以下是詳細分析&#xff1a; 一、SYSCFG 時鐘對 ADC 采樣過程的基礎性作用 1. 提供采樣時鐘信號 ADC 采樣需要時鐘…

Spring Boot 項目實訓 - 圖書信息網站

文章目錄 1. 實訓目的2. 系統設計3. 運行演示4. 實現步驟4.1 創建數據庫與表4.2 創建Spring Boot項目4.3 創建實體類4.4 創建映射器接口4.5 編寫應用配置文件4.6 測試映射器接口4.7 創建服務類4.8 創建控制器4.9 準備靜態資源4.10 創建模板頁面4.11 測試整個項目 5. 實訓總結 1…