以下两者之间的过程区别在哪里?
df=pd.read_csv(filename, parse_dates=[0], infer_datetime_format=True)
和
df=pd.read_csv(filename, parse_dates=[0])
为什么第一次导入be faster? 由于parse_dates已经指定了在哪里寻找日期。
答案 0 :(得分:2)
pandas.read_csv
的{{3}}建议原因:
infer_datetime_format :布尔值,默认为False
如果启用True和parse_dates,则熊猫将尝试推断 列中日期时间字符串的格式,如果可以的话 推断,请改用解析它们的更快方法。在某些情况下 这样可以将解析速度提高5-10倍。
从本质上讲,Pandas从第一个元素中推断出datetime
的 format ,然后假定该系列中的所有其他元素都将使用相同的格式。这意味着Pandas在尝试将字符串转换为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