我认为这里的正确答案是sqlite。SQLite 就像一个数据库,但它作为一个独立的文件存储在磁盘上。
您的用例的好处是您可以将收到的新数据附加到文件的表中,然后根据需要读取它。执行此操作的代码很简单:
import pandas as pd
import sqlite3
# Create a SQL connection to our SQLite database
# This will create the file if not already existing
con = sqlite3.connect("my_table.sqlite")
# Replace this with read_csv
df = pd.DataFrame(index = [1, 2, 3], data = [1, 2, 3], columns=['some_data'])
# Simply continue appending onto 'My Table' each time you read a file
df.to_sql(
name = 'My Table',
con = con,
if_exists='append'
)
请注意,SQLite 性能在大量行之后会下降,在这种情况下,将数据缓存为parquet
文件或其他快速压缩格式,然后在训练时将它们全部读取可能更合适。
当您需要数据时,只需从表中读取所有内容:
pd.read_sql('SELECT * from [My Table]', con=con)