python - infer_datetime_format 与 parse_date 花费更多时间
问题描述
我有一个示例 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'
解决方案
你真正想要做的是添加dayfirst = True
%timeit df = pd.read_csv("C:/Users/k_sego/Dates.csv", parse_dates=["Date"],dayfirst = True, infer_datetime_format=True)
1.96 ms ± 115 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
相比
%timeit df = pd.read_csv("C:/Users/k_sego/Dates.csv", parse_dates=["Date"])
2.38 ms ± 182 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
和
%timeit df = pd.read_csv("C:/Users/k_sego/Dates.csv", parse_dates=["Date"], infer_datetime_format=True)
3.02 ms ± 670 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
解决方案是减少 read_csv 必须做的事情的选择数量。
推荐阅读
- java - 无法在 child() 中为参数“pathString”传递 null - 从 Firebase 接收数据
- javascript - 在编写 promise .catch() 块时,e 和 e.message 有什么区别?
- python - 使用 Pandas 将 Dataframe 行写入 Excel 工作表
- svg - 水平对齐嵌套的 SVG
- java - 将适配器代码从 Java 转换为 Kotlin 时的问题
- mysql - 使用带有变量的 If Then 运行不同的 SQL 语句
- python - 无法使用 Python 删除字符串上的空格
- sql - 根据其他 4 个标志列更新标志列
- python - 交错 nd numpy 数组的最后一个轴
- javascript - cypress cy.route 行为不一致