Pandas日期處理之生成工作日與節(jié)假日
Pandas 提供了許多日期處理功能,使得處理時間序列數(shù)據(jù)變得容易。本文將介紹如何使用 Pandas 生成工作日和節(jié)假日。在進行實際操作前,請確保已安裝了 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ù)據(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ù)中的工作日,并使用 ~ 運算符將這些工作日從數(shù)據(jù)中去除。
non_business_days = data[~data['date'].isin(business_days)] print(non_business_days)
2. 生成節(jié)假日
我們可以使用 Pandas 中的 AbstractHolidayCalendar 類和 Holiday 類來創(chuàng)建自定義節(jié)假日。以下是一個包含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ù)據(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é)假日,并使用 ~ 運算符將這些節(jié)假日從數(shù)據(jù)中去除。
non_holidays = data[~data['date'].isin(holidays)] print(non_holidays)
至此,我們已經(jīng)成功地使用 Pandas 生成了工作日和節(jié)假日,并從數(shù)據(jù)中去除了這些日期。請注意,這個例子只包含了部分節(jié)假日,實際應用時請根據(jù)實際情況進行調(diào)整。
3. Pandas 日期處理知識點
創(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í)行各種算術運算。例如,要將日期向前推一天,可以使用以下代碼:
from pandas.tseries.offsets import DateOffset
date = pd.Timestamp('2023-01-01')
new_date = date + DateOffset(days=1)重采樣時間序列數(shù)據(jù): 使用 pd.DataFrame.resample 函數(shù)可以將時間序列數(shù)據(jù)按照指定頻率進行重新采樣。例如,要將按天采樣的數(shù)據(jù)轉(zhuǎn)換為按月采樣的數(shù)據(jù),可以使用以下代碼:
resampled_data = data.resample('M').mean()滾動窗口操作: 使用 pd.DataFrame.rolling 函數(shù)可以對時間序列數(shù)據(jù)執(zhí)行滾動窗口操作。例如,要計算7天滾動平均值,可以使用以下代碼:
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')到此這篇關于Pandas日期處理之生成工作日與節(jié)假日的文章就介紹到這了,更多相關Pandas日期處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python調(diào)用cmd命令時遇到的路徑空格問題和中文亂碼的解決
這篇文章主要介紹了python調(diào)用cmd命令時遇到的路徑空格問題和中文亂碼的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
使用python實現(xiàn)多維數(shù)據(jù)降維操作
今天小編就為大家分享一篇使用python實現(xiàn)多維數(shù)據(jù)降維操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python讀取txt文件數(shù)據(jù)的方法(用于接口自動化參數(shù)化數(shù)據(jù))
這篇文章主要介紹了Python讀取txt文件數(shù)據(jù)的方法(用于接口自動化參數(shù)化數(shù)據(jù)),需要的朋友可以參考下2018-06-06
python使用pywinauto驅(qū)動微信客戶端實現(xiàn)公眾號爬蟲
這個項目是通過pywinauto控制windows(win10)上的微信PC客戶端來實現(xiàn)公眾號文章的抓取。代碼分成server和client兩部分。server接收client抓取的微信公眾號文章,并且保存到數(shù)據(jù)庫。另外server支持簡單的搜索和導出功能。client通過pywinauto實現(xiàn)微信公眾號文章的抓取。2021-05-05
Python跨文件調(diào)用函數(shù)以及在一個文件中執(zhí)行另一個文件
這篇文章主要給大家介紹了關于Python跨文件調(diào)用函數(shù)以及在一個文件中執(zhí)行另一個文件的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友可以參考下2022-12-12

