Pandas中的日期時間date處理

Pandas提供了強大的日期和時間處理功能,這對于時間序列分析至關重要。本教程將介紹Pandas中處理日期時間的主要方法。包括:

  • 日期時間數據的創建和轉換
  • 日期時間屬性的提取
  • 時間差計算和日期運算
  • 重采樣和頻率轉換
  • 時區處理
  • 基于日期時間的索引操作

Pandas中的日期時間類型

  • 時間戳(timestamp):表示的是一個特定的時刻,比如 2008 年 8 月 8 日下午午 8:00。
  • 時間周期(period):引用特定開始和結束點之間的時間長度;例如,2015 年。時間段通常引用時間間隔的特殊情況,其中每個間隔具有統一的長度并且不重疊(例如,構成每天的 24 小時長的時間段)。
  • 時間增量或間隔(timedelta):引用確切的時間長度(例如,間隔為 22.56 秒)。

1. 創建日期時間數據

1.1 使用to_datetime()函數
import pandas as pd# 將字符串轉換為datetime
date_str = ['2023-01-01', '2023-01-02', '2023-01-03']
dates = pd.to_datetime(date_str)
print(dates)
1.2 創建日期范圍
# 創建日期范圍
date_range = pd.date_range('2023-01-01', periods=5, freq='D')
print(date_range)# 帶有時區的日期范圍
date_range_tz = pd.date_range('2023-01-01', periods=5, freq='D', tz='Asia/Shanghai')
print(date_range_tz)

2. 訪問日期時間屬性

# 創建示例DataFrame
df = pd.DataFrame({'date': pd.date_range('2023-01-01', periods=5, freq='D'),'value': [10, 20, 30, 40, 50]
})# 提取年、月、日等屬性
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
df['day_of_week'] = df['date'].dt.dayofweek  # 周一=0, 周日=6
df['day_name'] = df['date'].dt.day_name()
df['is_weekend'] = df['date'].dt.dayofweek >= 5print(df)

3. 日期時間運算

3.1 時間差計算
# 計算時間差
df['date_diff'] = df['date'] - df['date'].shift(1)
print(df[['date', 'date_diff']])# 使用Timedelta進行時間運算
df['date_plus_2days'] = df['date'] + pd.Timedelta(days=2)
df['date_plus_3hours'] = df['date'] + pd.Timedelta(hours=3)
print(df)
3.2 日期比較
# 日期比較
start_date = pd.to_datetime('2023-01-02')
df['after_start_date'] = df['date'] > start_date
print(df[['date', 'after_start_date']])

4. 重采樣和時間頻率轉換

# 創建示例時間序列數據
ts = pd.Series([1, 2, 3, 4, 5],index=pd.date_range('2023-01-01', periods=5, freq='D')
)# 降采樣(低頻) - 計算每周平均值
weekly = ts.resample('W').mean()
print("Weekly resample:\n", weekly)# 升采樣(高頻) - 填充缺失值
hourly = ts.resample('H').ffill()
print("Hourly resample (forward fill):\n", hourly.head(10))  # 只顯示前10行

5. 時區處理

# 本地化時區
ts = pd.Series([1, 2, 3],index=pd.date_range('2023-01-01', periods=3, freq='D')
)
ts = ts.tz_localize('UTC')
print("UTC timezone:\n", ts)# 時區轉換
ts_shanghai = ts.tz_convert('Asia/Shanghai')
print("Shanghai timezone:\n", ts_shanghai)

6. 日期時間索引操作

# 設置日期為索引
df.set_index('date', inplace=True)# 按年份切片
print(df.loc['2023'])# 按月份切片
print(df.loc['2023-01'])# 按日期范圍切片
print(df.loc['2023-01-02':'2023-01-04'])

7. 實際應用示例

# 讀取包含日期時間的數據
# 假設有一個CSV文件包含日期列
# df = pd.read_csv('data.csv', parse_dates=['date_column'])# 處理缺失日期
full_date_range = pd.date_range(start=df.index.min(), end=df.index.max(), freq='D')
df = df.reindex(full_date_range)# 填充缺失值
df['value'] = df['value'].fillna(method='ffill')  # 前向填充# 計算滾動平均值
df['7_day_avg'] = df['value'].rolling(window='7D').mean()print(df.head(10))

8. 高級技巧

8.1 自定義工作日歷
from pandas.tseries.offsets import CustomBusinessDay
from pandas.tseries.holiday import USFederalHolidayCalendar# 使用美國聯邦假日日歷
us_bd = CustomBusinessDay(calendar=USFederalHolidayCalendar())
date_range = pd.date_range('2023-01-01', periods=10, freq=us_bd)
print("US business days only:\n", date_range)
8.2 季度數據處理
# 創建季度數據
quarterly = pd.Series([100, 200, 300, 400],index=pd.date_range('2023-01-01', periods=4, freq='Q')
)# 季度開始和結束日期
print("Quarter start:\n", quarterly.index)
print("Quarter end:\n", quarterly.index + pd.offsets.QuarterEnd())

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

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

相關文章

Vue3文件上傳組件實戰:打造高效的Element Plus上傳解決方案,可以對文件進行刪除,查看,下載功能。

在現代Web開發中,文件上傳功能是許多應用的核心需求之一。無論是企業管理系統、內容管理系統還是醫療信息系統,上傳附件的功能都至關重要。本文將分享一個基于 Vue3 和 Element Plus 實現的文件上傳組件,結合父子組件的協作,展示如何構建一個功能強大、用戶體驗友好的文件上…

AI 工程師崛起:科技浪潮下的新興力量

在當今科技迅猛發展的時代,人工智能(AI)無疑是最熱門的領域之一。隨著基礎模型的涌現和開源 / API 的普及,一種新興的職業 ——AI 工程師,正逐漸嶄露頭角。他們在 AI 技術的應用和開發中扮演著關鍵角色,其崛…

人工智能與機器學習:Python從零實現邏輯回歸模型

🧠 向所有學習者致敬! “學習不是裝滿一桶水,而是點燃一把火。” —— 葉芝 我的博客主頁: https://lizheng.blog.csdn.net 🌐 歡迎點擊加入AI人工智能社區! 🚀 讓我們一起努力,共創…

濟南國網數字化培訓班學習筆記-第二組-5節-輸電線路設計

輸電線路設計 工程設計階段劃分 35kv及以上輸變電工程勘測設計全過程 可行性研究(包括規劃、工程選站)(包括電力系統一次二次,站址選擇及工程設想,線路工程選擇及工程設想,節能降耗分析,環境…

【Linux網絡】TCP服務中IOService應用與實現

📢博客主頁:https://blog.csdn.net/2301_779549673 📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正! &…

Linux 怎么找Java程序的監聽的端口

Linux 怎么找Java程序的監聽的端口 1、假設你知道啟動該Java應用的進程ID (PID),可以通過以下命令查找其監聽的端口: 首先找到該Java應用的PID: ps -ef | grep xxxx-1.0-RELEASE.jar或者,如果你知道啟動命令的一部分&#xff0…

解讀《數據資產質量評估實施規則》:企業數據資產認證落地的關鍵指南

隨著“數據要素市場”建設加速,數據資產逐步成為企業核心資產之一。2024年4月,由中國質量認證中心(CQC)發布的《數據資產質量評估實施規則》(編號:CQC96-831160-2024)正式實施,為企業…

[吾愛出品] 【鍵鼠自動化工具】支持識別窗口、識圖、發送文本、按鍵組合等

鍵鼠自動化工具 鏈接:https://pan.xunlei.com/s/VOOhDZkj-E0mdDZCvo3jp6s4A1?pwdfufb# 1、增加的找圖點擊功能(不算增加,只能算縫補),各種的不完善,但是能運行。 2、因為受限于原程序的界面,…

【計算機視覺】CV實戰項目 - 基于YOLOv5的人臉檢測與關鍵點定位系統深度解析

基于YOLOv5的人臉檢測與關鍵點定位系統深度解析 1. 技術背景與項目意義傳統方案的局限性YOLOv5多任務方案的優勢 2. 核心算法原理網絡架構改進關鍵點回歸分支損失函數設計 3. 實戰指南:從環境搭建到模型應用環境配置數據準備數據格式要求數據目錄結構 模型訓練配置文…

IntelliJ IDEA 中配置 Spring MVC 環境的詳細步驟

以下是在 IntelliJ IDEA 中配置 Spring MVC 環境的詳細步驟: 步驟 1:創建 Maven Web 項目 新建項目 File -> New -> Project → 選擇 Maven → 勾選 Create from archetype → 選擇 maven-archetype-webapp。輸入 GroupId(如 com.examp…

基于javaweb的SpringBoot+MyBatis通訊錄管理系統設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

EFISH-SBC-RK3588無人機地面基準站項目

一、核心技術組件解析 1. EFISH-SBC-RK3588 性能優勢:作為瑞芯微推出的高性能處理器,采用8nm 工藝,搭載ARM Cortex-A76/A55 八核架構,集成強大的 NPU(神經網絡處理單元)和 GPU(圖形處理器&…

藍橋杯 4. 卡片換位

卡片換位 原題目鏈接 題目描述 你玩過華容道的游戲嗎? 這是一個類似的,但更簡單的游戲。 看下面的 3 2 格子: --------- | A | * | * | --------- | B | | * | ---------在其中放置了 5 張牌,其中: A 表示關…

7.Excel:單元格格式

一 案例 1.案例1 2.案例2 3.案例3 二 三種基本數據類型 補充:在沒有任何格式的情況下是這樣對齊的。 1.文本 默認左對齊,文本不可參與計算。 2.數值 默認右對齊,數值計算精度是15位。 若超出15位,超出部分顯示為0。 3.邏輯值 …

高效DCDC電源芯片在運動控制器中的應用:設計考量、性能評估與可靠性分析

摘要 隨著工業自動化的深入推進,運動控制器作為自動化系統的核心組件,對電源芯片的性能提出了極高要求。高效率DCDC電源芯片憑借其卓越的電能轉換效率、優異的負載響應特性和高功率密度,在運動控制器領域得以廣泛應用。本文以國科安芯的ASP3…

Action:Update your application‘s configuration

在使用Maven項目時,有一個報錯信息是:Update your applications configuration 這類問題,就是我們的application.yml文件 或者 application.properties文件 內容哪里寫錯了 最有可能就是對齊方式有問題

Pycharm(六):可變與不可變類型

一、引用 在java中既有值傳遞,也有引用傳遞,我們思考一下在python中值的傳遞方式是哪種類型呢? 答案是引用傳遞。 概述: Python中存儲變量是需要占用內存空間的,為了更好地管理這些空間,每塊空間都是有自己的地址值的。 格式: id(變量名/值) 可以查看變量/…

動態ip與靜態ip的概念、區別、應用場景

動態ip與靜態ip的區別 前言 一、IP地址的概念和作用 1.1、IP地址的定義 1.2、IP地址的作用 二、動態IP和靜態IP的區別 2.1、動態IP和靜態IP的定義 2.2、動態IP和靜態IP的特點 2.3、動態IP和靜態IP的優缺點比較 三、動態IP和靜態IP的應用場景 3.1. 動態IP的應用場景 3.2. 靜態IP…

六個能夠白嫖學習資料的網站

一、咖喱君的資源庫 地址:https://flowus.cn/galijun/share/de0f6d2f-df17-4075-86ed-ebead0394a77 這是一個學習資料/學習網站分享平臺,包含了英語、法語、德語、韓語、日語、泰語等幾十種外國語言的學習資料及平臺,這個網站的優勢就是外語…

[貪心_7] 最優除法 | 跳躍游戲 II | 加油站

目錄 1.最優除法 題解 2.跳躍游戲 II 題解 3.加油站 題解 利用 單調性,可以實現 區間跳躍 1.最優除法 鏈接: 553. 最優除法 給定一正整數數組 nums,nums 中的相鄰整數將進行浮點除法。 例如,nums [2,3,4],我…