【发布时间】:2020-11-16 00:02:35
【问题描述】:
我有一个示例 csv 数据文件。
Date
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
接下来我尝试了
In [174]: %timeit df = pd.read_csv("a.csv", parse_dates=["Date"])
1.5 ms ± 178 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [175]: %timeit df = pd.read_csv("a.csv", parse_dates=["Date"], infer_datetime_format=True)
1.73 ms ± 45 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
因此,根据文档,时间应该更少。我的理解正确吗?或者该陈述在哪些数据上适用?
更新: 熊猫版本 - '1.0.5'
【问题讨论】:
-
@ALollz 更新了熊猫版本的问题
-
是的,我的感觉是“更快的解析”现在不是一个真正的问题:这是我的一个旧答案:stackoverflow.com/questions/52480839/slow-pd-to-datetime。您可以看到其中一种日期格式过去需要 14 秒来解析,但使用推断频率它只需要大约 300 毫秒(可能像 pd.__version__ 0.23 或其他东西)。现在使用 1.0.5,该格式在 9 毫秒内被解析。所以可能有一些奇怪的格式,你仍然会看到自动解析缓慢(在这种情况下 infer_datetieme_format` 将节省大量时间)但在这种情况下不会
-
作为参考,性能改进是在 v 0.25.0 中实现的:github.com/pandas-dev/pandas/pull/25922。似乎基本上现在可以推断出的所有东西都有一个快速的 cython 解析,它将被用来代替
dateutil.parser.parser。但也许有一些落后者 -
这似乎是一个非常小的 CSV,其中推断格式的一次性成本可能比累积的每个项目节省的时间更长。您是否尝试过解析过长的文件?
标签: python python-3.x pandas python-datetime