python - Pandas 加载 CSV 比 SQL 更快

标签 python sql csv pandas

从 CSV 加载数据似乎比使用 Pandas 从 SQL (Postgre SQL) 加载数据更快。 (我有一个SSD)

这是我的测试代码:

import pandas as pd
import numpy as np

start = time.time()
df = pd.read_csv('foo.csv')
df *= 3
duration = time.time() - start
print('{0}s'.format(duration))

engine = create_engine('postgresql://user:password@host:port/schema')
start = time.time()
df = pd.read_sql_query("select * from mytable", engine)
df *= 3
duration = time.time() - start
print('{0}s'.format(duration))

foo.csv 和数据库是相同的(两者中的数据和列数相同,4 列,100 000 行充满随机 int)。

CSV 需要 0.05 秒

SQL耗时0.5s

你认为 CSV 比 SQL 快 10 倍是正常的吗?我想知道我是否在这里遗漏了什么......

最佳答案

这是正常行为,读取 csv 文件始终是简单加载数据的最快方式之一

CSV 非常幼稚和简单。直接从它加载会非常快。对于结构复杂的海量数据库,CSV 不是一种选择。 SQL 可以非常快速地从表中选择数据并将该数据返回给您。自然地,如果您可以选择、修改和操作数据,那么您的通话会增加开销时间成本。

假设您在 csv 中有一个从 1920 年到 2017 年的时间序列,但您只想要从 2010 年到今天的数据。

csv 方法 是加载整个 csv,然后选择 2010 年到 2017 年。

SQL 方法 是通过 SQL 选择函数预选年份

在那种情况下,SQL 会快得多。

关于python - Pandas 加载 CSV 比 SQL 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874559/

相关文章:

sql - 正在运行的应用程序使用的Docker数据库在哪里

c# - 如果在 C# 中失败,则回滚 sql 事务

php - 使用第一个 MySQL 查询的结果从第二个表中提取数据

python - 使用 iris 示例加载 csv 时 tensorflow 的值错误

python - numpy interp 减少 xp

python - 如何在 python 中读取根 XML 标记

python - PySpark 中的特征选择

Python:解析数组中大表第一列的最快方法

php 在 csv 中写入希伯来语/UTF-8

java - 将文件加载到二维数组时出现 CSV 错误