天天看點

python、pandas、Excel、Powerbi中對日期的處理方法

主要針對datetime類型的時間

以下為用舉例的方式來說明在不同場景下,使用不同工具處理時間的方法

1、python對日期的處理

  • 功能1:日期相減後天數內插補點和秒內插補點
dt = datetime(2020, 1, 2, 2, 45, 2)
dt1 = datetime(2020, 1, 4, 0, 0, 1)
dx = dt1 - dt
dx.days,dx.seconds
           
  • 功能2:擷取日期中的天數、分鐘數、年月日組合、時分秒組合
dt.day
dt.minute
dt.date()
dt.time()
           
  • 功能3:格式化輸出日期:
dt.strftime('%m/%d/%Y %H:%M')
# 01/02/2020 02:45
           
類型 描述
%Y 四位的年份
%y 兩位的年份
%m 兩位的月份 [01,12]
%d 兩位的天數值 [01,31]
%H 小時制(24小時制)[0,23]
%I 小時制(12小時制)[01,12]
%M 兩位的分鐘值[00,59]
%S 秒值[00,61] (60,61)用于區分閏秒
%w 星期值[0(星期天),6]
%U 一年中的第幾個星期[00,53]
%F %Y-%m-%d的縮寫
%D %m/%d/%y的縮寫

2、SQL對日期的處理

  • 功能1:日期相減(判斷間隔是否1天)

    方式:

DATEDIFF(今天.date,昨天.date) = 1
           
  • 功能2:分年查詢
  • 功能3:判斷時間區間(between…and…)
SELECT # 僅在2019年春季售出的産品
	DISTINCT s.product_id,
    p.product_name
FROM
	Sales AS s
    INNER JOIN Product AS p
    ON s.product_id = p.product_id
WHERE
	s.product_id NOT IN(
		SELECT  # 在2019年春季之外出售過的産品
			DISTINCT product_id
		FROM
			Sales
		WHERE
			sale_date NOT BETWEEN '2019-01-01' AND '2019-03-31'
	);
           

3、Pandas對日期的處理

  • 功能1:日期轉換為datetime類型

    方式:

  • 功能2:日期相減(求年齡)
  • 功能3:日期比較判斷
from datetime import datetime
start_time =datetime(2019,1,1)
end_time=datetime(2019,12,31,23,59,59)

order_df = order_df[(order_df.payTime>=start_time) & (order_df.payTime<=end_time)]
order_df.shape
           
  • 功能4:擷取日期中的月份、星期
order_df['month']=order_df.orderTime.dt.month
order_df['weekday'] = order_df.orderTime.dt.weekday
           
  • 功能6:日期的近似取值
# floor('30T')表示向下取時間,已30分鐘為界限,30分鐘以内為0分鐘,30分鐘以上為30分鐘
order_df['time'] = order_df.orderTime.dt.floor('30T')
#取出時間time,去掉年月日
order_df['time'] = order_df.time.dt.time

           
  • 功能7:隻顯示月和日
for i in range(len(df2)):
    df2.iloc[i,0] = pd.to_datetime(df2.iloc[i,0]).strftime("%m-%d")  
df2.head()
           

4、Excel對日期的處理

  • 功能1:日期之間求差
    python、pandas、Excel、Powerbi中對日期的處理方法
  • 功能2:其他日期函數
    python、pandas、Excel、Powerbi中對日期的處理方法
python、pandas、Excel、Powerbi中對日期的處理方法
功能 方式
該月最後一天 =DATE(YEAR(A2),MONTH(A2)+1,1)-1
該月最後一天 =EOMONTH(A2,0)
後一月最後一天 =EOMONTH(A3,1)
星期幾 =TEXT(A4,“dddd”)
該月有多少天 =DAY(C3)
第幾季度 =IF(MONTH(A2)/3<=1,1,IF(MONTH(A2)/3<=2,2,IF(MONTH(A2)/3<=3,3,4)))
第幾季度 =ROUNDUP(MONTH(A3),0)

5、PowerBi對日期的處理

功能1:時間間隔

時間間隔小時:

時間間隔分鐘:

繼續閱讀