在Python進行數據分析時,按照日期進行分組匯總也是被需要的,比如會找到銷量的周期性規律。
那么在用Python進行數據統計之前,就需要額外增加一步:從指定的日期當中獲取星期幾。比如2022年2月22日,本文就以2022-02-22為例,演示 Python獲取指定日期是“星期幾”的6種方法 !
weekday()
datetime
模塊是一個Python內置庫,無需再進行pip安裝,它除了可以顯示日期和時間之外,還可以進行日期和時間的運算以及格式化。
datetime
模塊中的方法weekday()
可用于檢索星期幾,結果返回0-6之間的整數,用來代表“星期一”到“星期日”。
在交互式環境中輸入如下命令:
from datetime import datetime
datetime.date(2022, 2, 22).weekday()
輸出:
1
在代碼中,datetime
模塊會先將由年、月和日組成的日期轉換為datetime日期。然后weekday()
方法獲取“2022-02-22”這天是星期二。
但是根據我們國內的習慣,總不能直接輸出1吧。所以我們可以先自定義一個包含中文“星期幾”的列表,再通過索引的方式來返回一個中文的星期幾。
在交互式環境中輸入如下命令:
week_list = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
week_list[datetime.date(2022, 2, 22).weekday()]
輸出:
'星期二'
這樣結果便是直接是星期二了。
isoweekday()
isoweekday()
方法與前一個weekday()
方法的工作原理類似,最大的區別是它返回1-7之間的整數,用來代表“星期一”到“星期日”。
在交互式環境中輸入如下命令:
import datetime
datetime.date(2022, 2, 22).isoweekday()
輸出:
2
這次輸出的結果便直接是“星期2”了。
strftime()
如果你想直接輸出日期的英文周名,不妨試試strftime()
方法。
利用strftime()
方法可以將datetime對象顯示為字符串。我們其實對日期格式轉化為字符串格式非常熟悉,比如strftime('%b-%m-%y %H:%M:%S')
,只需將其中的指令改為%A
,即可得到日期是星期幾。
在交互式環境中輸入如下命令:
import datetime
datetime.date(2022, 2, 22).strftime("%A")
輸出:
'Tuesday'
如果將代碼中的%A改為%a,則輸出的是星期幾的簡寫。
datetime.date(2022, 2, 22).strftime("%a")
輸出:
'Tue'
calendar
在Python中calendar
日歷模塊也是一個內置庫,為我們對日歷做處理提供了很多方法,使用起來非常方便,我們可以使用它制作日歷/周歷等等。同樣,它也提供了weekday()
和day_name()
方法來查詢指定日期是星期幾。
在交互式環境中輸入如下命令:
import calendar
calendar.weekday(2022, 2, 22)
輸出:
1
這與前文第一個方法的datetime
模塊weekday()
方法是一模一樣的。
如果你想直接輸出日期的英文周名,calendar
日歷模塊也有方法可以實現。
import datetime
import calendar
date_week = datetime.date(2022, 2, 22).weekday()
calendar.day_name[date_week]
輸出:
'Tuesday'
pendulum
datetime模塊也有一些限制,比如處理時區問題等等。而pendulum
模塊是這個第三方開源庫,可以解決內置datetime模塊的所有問題。
https://pypi.org/project/pendulum/
當然,它也有方法可以輸出指定日期是星期幾。
在交互式環境中輸入如下命令:
import pendulum
pendulum.parse('2022-02-22').day_of_week
輸出:
2
輸出的結果直接是“星期2”。
Pandas
最后,最后,我要說一個自己最常用的方法。因為小五平時主要在Pandas中處理數據,那么生成“星期”列肯定會優先考慮Pandas中的方法。
Series.dt
可用于以datetimelike的形式訪問序列的值并返回幾個屬性。Series.dt.day_name()
函數返回具有指定語言環境的DateTimeIndex的日期名稱。
在交互式環境中輸入如下命令:
import pandas as pd
from datetime import datetime
df = pd.DataFrame({
"name": ["張三", "李四", "朱五"],
"date": [datetime(2022, 2, 21), datetime(2022, 2, 22), datetime(2022, 2, 23)]})
df
輸出如下圖所示:
df["week_num1"] = df["date"].dt.dayofweek
df["week_num2"] = df["date"].dt.weekday
df["week_name"] = df["date"].dt.day_name()
df
輸出如下圖所示:
在今天的文章中,我們一共介紹了從指定的日期當中獲取星期幾的6中方法。
-
模塊
+關注
關注
7文章
2671瀏覽量
47341 -
字符串
+關注
關注
1文章
577瀏覽量
20485 -
數據分析
+關注
關注
2文章
1427瀏覽量
34015 -
python
+關注
關注
56文章
4782瀏覽量
84455
發布評論請先 登錄
相關推薦
評論