python 循环(一堆csv行)或(列表包含字典)更有效吗?

4ngedf3f  于 2023-04-04  发布在  Python
关注(0)|答案(1)|浏览(92)

我可以将数据下载为csvjson。如果数据是csv格式的,我使用response.text将其转换为文本,然后将其插入字典。数据示例如下所示:

Date,Open,High,Low,Close,Adjusted_close,Volume
1966-07-05,10.9176,11.0872,10.836,10.9176,0.1327,388800
1966-07-06,11.5024,11.5024,10.836,11.5024,0.1398,692550
1966-07-07,11.0872,11.7936,11.0008,11.0872,0.1347,1858950

然后我必须循环所有数据点,并使用以下代码将它们插入数据库:

for ticker, csv_data in data.items():
        reader = csv.reader(csv_data.splitlines())
        next(reader)
        for input_data in reader:
            input_data = [ticker] + [input_data[0], input_data[1], input_data[2], input_data[3], input_data[4]]

我也可以使用response.json(),数据将在一堆列表和字典中,如下所示:

[{'date': '2021-02-09', 'open': 123.41, 'high': 123.49, 'low': 122.36, 'close': 123.24, 'adjusted_close': 121.7803, 'volume': 1988260}, {'date': '2021-02-10', 'open': 124.59, 'high': 125.74, 'low': 123.88, 'close': 125.08, 'adjusted_close': 123.5985, 'volume': 1112597}]

然后,我将使用以下代码循环所有数据点,并将它们插入数据库:

input_data_columns = "date open high low close".split(" ")
 for ticker, symbol_data in data.items():
     for date_data in symbol_data: 
            input_data = (ticker,) + tuple(date_data.get(col) for col in input_data_columns)

我的问题是,哪种类型的数据更有效、更快(在相同数量的数据点下)?

e4eetjau

e4eetjau1#

如果目的是让你的代码运行得更快,那么使用pandas库,这样你就可以一次读取所有的代码(并且速度更快),并使用向量化-对向量进行操作(和计算)的想法-通常是 Dataframe 中的列。
你可以读取csv文件使用:

filename = "your_file_name.csv"

import pandas as pd
your_data = pd.read_csv(filename)

回答你的问题-取决于你的数据类型和大小。当你有一个大的数据集和简单的数据类型,如整数/布尔值/短字符串时,第一个选项可能会更快。
如果数据类型不是简单的,或者你有一个小的数据集-我不能告诉。只有对你的数据的实验会告诉。

相关问题