从 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/