当前位置: 首页 > article >正文

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() 是如何帮助我们处理日期时间数据的,希望这对你理解和使用这个函数有所帮助!

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


http://www.kler.cn/news/316281.html

相关文章:

  • 监控易:部委-省-市-县多级架构的集中智能运维解决方案
  • Java如何操作Elasticsearch
  • Redis面试真题总结(三)
  • C++初阶:STL详解(四)——vector迭代器失效问题
  • 基于深度学习的3D场景重建
  • esp32 wifi 联网后,用http 发送hello 用pc 浏览器查看网页
  • WebLogic文件任意上传漏洞CVE-2018-2894
  • 0.设计模式总览——设计模式入门系列
  • uniapp如何实现图片轮播特效?
  • 二、MySQL环境搭建
  • ML 系列:机器学习和深度学习的深层次总结(07)数据预处理—解决缺失值、异常值和错误数据
  • 基于单片机的远程无线控制系统设计
  • FP7208:升压汽车车灯方案 高效稳定的电力支持
  • js笔记(二进制由0和1两个数字组成)
  • Maven和Springboot初识
  • 计算存款利息-C语言
  • 信息安全工程师(8)网络新安全目标与功能
  • 【夸克云盘】更新樊登讲书《抱怨的艺术》4k影视 云盘分享
  • AiAutoPrediction足球网与泊松分布足球预测比赛模型介绍
  • 编程环境管理工具推荐
  • TMC5130A电机芯片演示祥解
  • 计算机毕业设计 基于Flask+Vue的博客系统 Python毕业设计 前后端分离 附源码 讲解 文档
  • Oracle 19c 安装教程学习
  • 解锁SCI低区文章质量差难题,多学科交叉与AI如何携手引领科研飞跃?
  • AWS镜像迁移登录问题二三则
  • Leetcode 65. 有效数字
  • 基于单片机的智能小车的开发与设计
  • 机器学习课程学习周报十三
  • 蜗牛兼职网:Spring Boot与微服务
  • 正点原子阿尔法ARM开发板-IMX6ULL(七)——BSP工程管理实验(补:链接文件和.s文件)