Pandas库中pd.to_datetime()函数用法详细介绍

pd.to_datetime() 是 Pandas 库中用来将日期和时间字符串转换为日期时间对象的一个非常有用的函数,常用它进行时间上的计算和数据分析。

1功能简介

在 Pandas 中,pd.to_datetime() 函数可以接收多种格式的日期时间字符串、列表、数组或者 Pandas 的 Series 对象,然后将它们转换成 Pandas 的 datetime64 类型。转换后的数据可以更好地与 Pandas 的日期时间功能集成,比如时间差计算、时间序列分析等。

2基本语法

pandas.to_datetime(arg, 
                   format=None, 
                   errors='raise', 
                   utc=None, 
                   unit=None, 
                   infer_datetime_format=False, 
                   origin='unix', 
                   cache=True, 
                   dayfirst=False, 
                   yearfirst=False)

3参数详解

  • arg:

    • 必需。需要转换的对象。可以是单个日期、多个日期、Series、列表等。
  • format:

    • 可选。表示输入字符串的日期时间格式,用于加速解析。如果省略,Pandas 会尝试自动推测格式。
    • 在format的格式字符串中,各种时间元素都有特定的字符表示,例如:
      %Y表示四位数的年份,
      %m表示两位数的月份,
      %d表示两位数的日期,
      %H表示小时数(24小时格式),
      %M表示分钟数,
      %S表示秒数。
  • errors:

    • 可选。表示如果出现无法解析的字符串时会发生什么:
      • raise: 引发异常 (默认值)。
      • coerce: 将无效解析设置为 NaT
      • ignore: 返回原始输入,保持不变。
  • utc:

    • 可选。指定是否将结果转换为 UTC 时区。有效值为 True 或 False
  • unit:

    • 可选。用于指定输入是以秒、毫秒、微秒、纳秒表示的时间戳,常用于处理整数或浮点数格式。
    • 下面是一些常用的 unit 参数选项及其含义:
      ‘ns’:纳秒(默认值)
      ‘us’:微秒
      ‘ms’:毫秒
      ‘s’:秒
      ‘m’:分钟
      ‘h’:小时
      ‘D’:天
      ‘M’:月
      ‘Y’:年
  • infer_datetime_format:

    • 可选。布尔值,指定是否推断日期时间字符串格式。设为 True 可以加快处理速度。
  • origin:

    • 可选,指定源日期,默认是 'unix'(1970-01-01)。可以设置为 'julian''unix'、或自定义日期。
  • cache:

    • 可选。布尔值,默认值是 True。如果设为 True,可缓存转换后的日期以加速后续相同输入的转换。
  • dayfirst:

    • 可选。布尔值,默认为 False。如果设为 True,则在解析日期时将日和月的位置交换。例如,'01/02/2023' 会被视为 2023-01-02
  • yearfirst:

    • 可选。布尔值,默认为 False。如果设为 True,则优先将年份放在前三个位置,例如,'2023/03/01' 会被理解为 2023年03月01日

4用法示例 

4.1基本用法

import pandas as pd
date_str = '2023-01-01'
date = pd.to_datetime(date_str)
print(date)

输出:

2023-01-01 00:00:00

4.2处理多个日期 

import pandas as pd
date_list = ['2023-01-01', '2023-02-01', '2023-03-01']
dates = pd.to_datetime(date_list)
print(dates)  

 输出:

DatetimeIndex(['2023-01-01', '2023-02-01', '2023-03-01'], dtype='datetime64[ns]', freq=None)

4.3使用format参数

import pandas as pd
date_str = '01/02/2023'
date = pd.to_datetime(date_str, format='%d/%m/%Y')
print(date)

输出:

2023-02-01 00:00:00

4.4处理无效日期 

import pandas as pd
date_list = ['2023-01-01', 'invalid_date']
dates = pd.to_datetime(date_list, errors='coerce')
print(dates)

输出:

DatetimeIndex(['2023-01-01', 'NaT'], dtype='datetime64[ns]', freq=None)

5具体项目示例

假设我们在做一个分析项目,需要处理一个包含日期时间信息的 CSV 文件,例如一个销售数据文件 sales_data.csv,内容如下:

Order IDOrder DateAmount
12023-01-15150
22023-02-20200
32023/03/25300
415/04/2023100

 5.1 pd.to_datetime()函数使用 步骤

  1. 导入Pandas库
  2. 读取CSV文件
  3. 将日期列转换为日期时间格式
  4. 进行简单分析(例如计算总销售额)。

 5.2实践代码

import pandas as pd

# 第1步:读取CSV文件
sales_data = pd.read_csv('C:/Users/LHY/相关数据集/sales_date.csv')

# 第2步:查看数据
print("原始数据:")
print(sales_data)

# 第3步:转换订单日期列为 datetime 格式
sales_data['Order Date'] = pd.to_datetime(sales_data['Order Date'], errors='coerce')

# 第4步:查看转换后的数据
print("\n转换后的数据:")
print(sales_data)

# 第5步:计算总销售额
total_amount = sales_data['Amount'].sum()
print("\n总销售额:", total_amount)

# 第6步:提取年份
sales_data['Year'] = sales_data['Order Date'].dt.year
print("\n添加年份列的数据:")
print(sales_data)

5.3代码详解 

  • 读取 CSV 文件:使用 pd.read_csv() 函数读取数据。
  • 查看原始数据:打印出原始数据检查。
  • 转换日期格式:使用 pd.to_datetime() 将 'Order Date' 列转换为日期时间格式。errors='coerce' 表示如果转换失败,将返回 NaT(Not a Time),而不是报错。
  • 总销售额计算:对 Amount 列求和。
  • 提取年份:使用 dt 访问器提取年份,方便后续分析。

5.4结果输出 

原始数据:
   Order ID  Order Date  Amount
0         1   2023/1/15     150
1         2   2023/2/20     200
2         3   2023/3/25     300
3         4  15/04/2023     100

转换后的数据:
   Order ID Order Date  Amount
0         1 2023-01-15     150
1         2 2023-02-20     200
2         3 2023-03-25     300
3         4        NaT     100

总销售额: 750

添加年份列的数据:
   Order ID Order Date  Amount    Year
0         1 2023-01-15     150  2023.0
1         2 2023-02-20     200  2023.0
2         3 2023-03-25     300  2023.0
3         4        NaT     100     NaN

5.5注意事项 

  • 确保传入的日期字符串格式准确,可以提前查看和清理数据。
  • 使用 errors='coerce' 可以防止程序因无法解析的日期而崩溃。

以上是跟大家分享 pd.to_datetime() 是如何帮助我们处理日期时间数据的,希望这对你理解和使用这个函数有所帮助!

如果还有其他问题,欢迎随时交流学习! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pythoner研习社

整理不易,感谢金主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值