rul*_*l30 4 python csv performance datetime pandas
过程区别在哪里:
df=pd.read_csv(filename, parse_dates=[0], infer_datetime_format=True)
Run Code Online (Sandbox Code Playgroud)
和
df=pd.read_csv(filename, parse_dates=[0])
Run Code Online (Sandbox Code Playgroud)
为什么第一个导入更快?由于 parse_dates 已经指定了在哪里查找日期。
该文档的pandas.read_csv
说明为什么:
infer_datetime_format :布尔值,默认为 False
如果启用了 True 和 parse_dates,pandas 将尝试推断列中日期时间字符串的格式,如果可以推断,则切换到解析它们的更快方法。在某些情况下,这可以将解析速度提高 5-10 倍。
本质上,Pandas从第一个元素推断出你的格式,datetime
然后假设系列中的所有其他元素将使用相同的格式。这意味着 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9160 次 |
最近记录: |