Pandas日期處理之生成工作日與節(jié)假日
Pandas 提供了許多日期處理功能,使得處理時(shí)間序列數(shù)據(jù)變得容易。本文將介紹如何使用 Pandas 生成工作日和節(jié)假日。在進(jìn)行實(shí)際操作前,請確保已安裝了 Pandas 庫。安裝方法如下:
pip install pandas
1. 生成工作日
要生成一年中的工作日,我們可以使用 pandas.bdate_range 函數(shù)。例如,要生成 2023 年的工作日,可以使用以下代碼:
import pandas as pd start_date = '2023-01-01' end_date = '2023-12-31' business_days = pd.bdate_range(start=start_date, end=end_date) print(business_days)
接下來,我們將展示如何從數(shù)據(jù)中去除工作日。首先,假設(shè)我們有如下數(shù)據(jù):
date_range = pd.date_range(start=start_date, end=end_date) data = pd.DataFrame(date_range, columns=['date'])
接著,我們可以使用 pandas.DataFrame.isin 函數(shù)找到數(shù)據(jù)中的工作日,并使用 ~ 運(yùn)算符將這些工作日從數(shù)據(jù)中去除。
non_business_days = data[~data['date'].isin(business_days)] print(non_business_days)
2. 生成節(jié)假日
我們可以使用 Pandas 中的 AbstractHolidayCalendar 類和 Holiday 類來創(chuàng)建自定義節(jié)假日。以下是一個(gè)包含2023年部分中國節(jié)假日的示例:
from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday import pandas as pd class ChinaHolidaysCalendar(AbstractHolidayCalendar): rules = [ Holiday('元旦', month=1, day=1), Holiday('元旦', month=1, day=2), Holiday('元旦', month=1, day=3), Holiday('春節(jié)', month=1, day=21), Holiday('春節(jié)', month=1, day=22), # 同樣的方法添加其他節(jié)假日 ] start_date = '2023-01-01' end_date = '2023-12-31' china_holidays_calendar = ChinaHolidaysCalendar() holidays = china_holidays_calendar.holidays(start_date, end_date) print(holidays)
現(xiàn)在我們已經(jīng)生成了2023年包含多天的中國節(jié)假日,接下來我們將從數(shù)據(jù)中去除這些節(jié)假日。首先,假設(shè)我們有如下數(shù)據(jù):
date_range = pd.date_range(start=start_date, end=end_date) data = pd.DataFrame(date_range, columns=['date'])
接下來,我們可以使用 pandas.DataFrame.isin 函數(shù)找到數(shù)據(jù)中的節(jié)假日,并使用 ~ 運(yùn)算符將這些節(jié)假日從數(shù)據(jù)中去除。
non_holidays = data[~data['date'].isin(holidays)] print(non_holidays)
至此,我們已經(jīng)成功地使用 Pandas 生成了工作日和節(jié)假日,并從數(shù)據(jù)中去除了這些日期。請注意,這個(gè)例子只包含了部分節(jié)假日,實(shí)際應(yīng)用時(shí)請根據(jù)實(shí)際情況進(jìn)行調(diào)整。
3. Pandas 日期處理知識點(diǎn)
創(chuàng)建日期范圍: 使用 pd.date_range 函數(shù)可以創(chuàng)建日期范圍。例如,要生成從2023年1月1日到2023年12月31日的日期范圍,可以使用以下代碼:
date_range = pd.date_range(start='2023-01-01', end='2023-12-31')
日期偏移量: Pandas 提供了 DateOffset 類,可以用于對日期執(zhí)行各種算術(shù)運(yùn)算。例如,要將日期向前推一天,可以使用以下代碼:
from pandas.tseries.offsets import DateOffset date = pd.Timestamp('2023-01-01') new_date = date + DateOffset(days=1)
重采樣時(shí)間序列數(shù)據(jù): 使用 pd.DataFrame.resample 函數(shù)可以將時(shí)間序列數(shù)據(jù)按照指定頻率進(jìn)行重新采樣。例如,要將按天采樣的數(shù)據(jù)轉(zhuǎn)換為按月采樣的數(shù)據(jù),可以使用以下代碼:
resampled_data = data.resample('M').mean()
滾動(dòng)窗口操作: 使用 pd.DataFrame.rolling 函數(shù)可以對時(shí)間序列數(shù)據(jù)執(zhí)行滾動(dòng)窗口操作。例如,要計(jì)算7天滾動(dòng)平均值,可以使用以下代碼:
rolling_mean = data.rolling(window=7).mean()
日期格式化: 使用 pd.Timestamp.strftime 函數(shù)可以將日期格式化為字符串。例如,要將日期格式化為 “YYYY-MM-DD” 的格式,可以使用以下代碼:
formatted_date = pd.Timestamp('2023-01-01').strftime('%Y-%m-%d')
到此這篇關(guān)于Pandas日期處理之生成工作日與節(jié)假日的文章就介紹到這了,更多相關(guān)Pandas日期處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中dot函數(shù)運(yùn)算過程總結(jié)
dot函數(shù)為numpy庫下的一個(gè)函數(shù),主要用于矩陣的乘法運(yùn)算,其中包括:向量內(nèi)積、多維矩陣乘法和矩陣與向量的乘法,下面這篇文章主要給大家介紹了關(guān)于python中dot函數(shù)運(yùn)算過程的相關(guān)資料,需要的朋友可以參考下2022-09-09python使用threading.Condition交替打印兩個(gè)字符
這篇文章主要為大家詳細(xì)介紹了python使用threading.Condition交替打印兩個(gè)字符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05python實(shí)戰(zhàn)之利用pygame實(shí)現(xiàn)貪吃蛇游戲(二)
這篇文章主要介紹了python實(shí)戰(zhàn)之利用pygame實(shí)現(xiàn)貪吃蛇游戲(二),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對應(yīng)相加方法
今天小編就為大家分享一篇python中利用numpy.array()實(shí)現(xiàn)倆個(gè)數(shù)值列表的對應(yīng)相加方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08python實(shí)現(xiàn)網(wǎng)站用戶名密碼自動(dòng)登錄功能
最近接到這樣的需求通過網(wǎng)頁用戶認(rèn)證登錄實(shí)現(xiàn)上網(wǎng),如何實(shí)現(xiàn)網(wǎng)站自動(dòng)登錄功能呢,接下來小編給大家?guī)砹藀ython實(shí)現(xiàn)網(wǎng)站用戶名密碼自動(dòng)登錄功能,需要的朋友可以參考下2019-08-08實(shí)現(xiàn)Python圖形界面框架TkInter寫GUI界面應(yīng)用簡介過程操作
TkInter是Python用于開發(fā)GUI界面的標(biāo)準(zhǔn)庫,如果你想快速開發(fā)一個(gè)帶有GUI界面的小工具(笑小程序),且又能同時(shí)在Linux、Windows、Mac上使用,TkInter天生支持跨平臺,天生具備穩(wěn)定性,我認(rèn)為它能滿足內(nèi)部工具的簡單需求2021-09-09