Python 为什么在导入csv文件时使用推断日期时间格式?
以下各项之间的流程差异在哪里:Python 为什么在导入csv文件时使用推断日期时间格式?,python,performance,pandas,csv,datetime,Python,Performance,Pandas,Csv,Datetime,以下各项之间的流程差异在哪里: df=pd.read_csv(filename, parse_dates=[0], infer_datetime_format=True) 及 为什么第一次导入到? 因为parse_dates已经指定了在何处查找日期。forpandas.read_csv建议原因: 推断日期时间格式:布尔值,默认值为False 如果启用了True和parse_日期,pandas将尝试推断 列中日期时间字符串的格式,以及是否可以 然后,切换到更快的解析方法。在某些情况下 这可以将解
df=pd.read_csv(filename, parse_dates=[0], infer_datetime_format=True)
及
为什么第一次导入到?
因为parse_dates已经指定了在何处查找日期。forpandas.read_csv
建议原因:
推断日期时间格式:布尔值,默认值为False如果启用了True和parse_日期,pandas将尝试推断 列中日期时间字符串的格式,以及是否可以 然后,切换到更快的解析方法。在某些情况下 这可以将解析速度提高5-10倍 本质上,Pandas从第一个元素推断出
datetime
的格式,然后假设序列中的所有其他元素将使用相同的格式。这意味着熊猫在尝试将字符串转换为datetime
时不需要检查多种格式
请记住,CSV文件只能保存文本数据,因此始终需要转换为datetime
(基本上是数字类型)
下面是一个演示:
from dateutil import parser
from datetime import datetime
L = ['2018-01-05', '2018-12-20', '2018-03-30', '2018-04-15']*5000
%timeit [parser.parse(i) for i in L] # 1.57 s
%timeit [datetime.strptime(i, '%Y-%m-%d') for i in L] # 338 ms
这是否意味着,如果没有此命令,pandas将尝试检查是否有“行”,如果是,则检查每行中使用的日期时间格式?不确定您的意思。但是,在不进行推断的情况下,它将为每一行尝试多种格式,直到其中一行起作用为止。效率不高。谢谢你的帮助,我显然需要你的帮助;-)那么,这是否意味着,如果出现不同的日期,则不应使用此选项?也许我的问题应该是,推断的缺点是什么?正确。如果您有多个格式,请不要推断。
from dateutil import parser
from datetime import datetime
L = ['2018-01-05', '2018-12-20', '2018-03-30', '2018-04-15']*5000
%timeit [parser.parse(i) for i in L] # 1.57 s
%timeit [datetime.strptime(i, '%Y-%m-%d') for i in L] # 338 ms