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
。
- 可选。指定是否将结果转换为 UTC 时区。有效值为
-
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 ID | Order Date | Amount |
---|---|---|
1 | 2023-01-15 | 150 |
2 | 2023-02-20 | 200 |
3 | 2023/03/25 | 300 |
4 | 15/04/2023 | 100 |
5.1 pd.to_datetime()函数
使用 步骤
- 导入Pandas库。
- 读取CSV文件。
- 将日期列转换为日期时间格式。
- 进行简单分析(例如计算总销售额)。
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()
是如何帮助我们处理日期时间数据的,希望这对你理解和使用这个函数有所帮助!
如果还有其他问题,欢迎随时交流学习!