在數據處理與分析的領域中,經常需要對時間進行處理。pandas是一個用於數據分析的Python庫,使用pandas可以對時間進行非常靈活的操作和處理。pandas中的datetime對象保存了日期和時間的信息,而通過指定格式化字元串可以自由控制datetime對象的輸出形式。在本文中,我們將詳細介紹如何在pandas中只顯示datetime對象的年月日信息。
一、datetime對象簡介
首先介紹一下pandas中的datetime對象。在pandas中,datetime是一種數據類型,表示日期和時間信息。通過pandas的to_datetime()方法可以將日期字元串轉化為datetime類型的數據。具體示例如下:
import pandas as pd date_str = '2021-07-01' date = pd.to_datetime(date_str) print(date)
可以看到,執行以上代碼會輸出如下結果:
2021-07-01 00:00:00
我們可以用屬性方法分別訪問datetime對象中的年、月、日、小時、分鐘和秒等信息:
import pandas as pd date_str = '2021-07-01' date = pd.to_datetime(date_str) print(date.year) print(date.month) print(date.day) print(date.hour) print(date.minute) print(date.second)
可以看到,執行以上代碼會輸出如下結果:
2021 7 1 0 0 0
二、只顯示年月日的方法
我們可以使用strftime()方法指定字元串的輸出格式,其中%Y表示年份,%m表示月份,%d表示日期。因此,只需將時間格式字元串設置為’%Y-%m-%d’,即可只顯示datetime對象的年月日信息。
import pandas as pd date_str = '2021-07-01' date = pd.to_datetime(date_str) formatted_date = date.strftime('%Y-%m-%d') print(formatted_date)
可以看到,執行以上代碼會輸出如下結果:
2021-07-01
可以看到,輸出的結果中只包含datetime對象的年月日信息。
三、應用案例
最後,我們來看一個使用只顯示年月日的方式和pandas的groupby方法,對數據進行分組統計的案例。假設我們有一個數據集,包含了某網站每天的訪問量信息。我們可以通過只顯示年月日的方式將日期信息處理出來,然後利用pandas的groupby方法對每一天的訪問量進行求和。
import pandas as pd # read data data = pd.read_csv('visitors.csv') # convert date string to datetime objects data['date'] = pd.to_datetime(data['date']) # extract year-month-day information data['date'] = data['date'].apply(lambda x: x.strftime('%Y-%m-%d')) # group by date and sum result = data.groupby('date').sum() # print result print(result)
以上代碼從CSV文件中讀取數據,將日期字元串轉化為datetime對象,然後只顯示其年月日信息,並使用groupby方法按照日期分組,最後求出每天的訪問量總數。執行以上代碼會輸出如下結果:
visitors date 2021-07-01 100 2021-07-02 92 2021-07-03 104 2021-07-04 95 2021-07-05 108 ... ... 2021-12-27 101 2021-12-28 85 2021-12-29 93 2021-12-30 99 2021-12-31 96 [184 rows x 1 columns]
可以看到,輸出結果中每一行對應一個日期,同時也只顯示年月日信息,並且每一天的訪問量都被求和了。
四、總結
通過使用pandas的strftime()方法,我們可以很方便地控制輸出的datetime對象的格式,從而實現只顯示年月日信息的目的。有了這個方法,我們可以在數據處理與分析中更加靈活地使用datetime對象,同時也可以依據實際需求對datetime對象進行各種操作和轉換。
原創文章,作者:LAYN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146331.html