pandabase将pandas数据帧链接到sql数据库。支持读取、追加和upsert。
pandabase的Python项目详细描述
pandabase
pandabase是一个用于从sqlite读取和写入数据帧的工具
默认情况下,使用dataframe.index作为主键。通过使用显式主键,pandabase可以很容易地将pandas数据插入sql数据库。
为时间序列数据集设计,这些数据集需要随时间更新并存储到磁盘,但在内存中用于计算。
在Python3.6和3.7下测试,使用新版本的Pandas和SqlAlchemy
功能
- 主键(任何命名索引都假定为pk)
- 还支持“自动索引”
- 插入模式:“仅创建”、“插入”和“附加”
- 替换pd.dataframe.to_sql和pd.read_sql
- 在sqlite下测试
- 即将提供Postgres支持
- pytest中的自动测试
- 96%的覆盖率
- 还包括pandabase.companda.companda,用于数据帧的丰富比较
设计注意事项
- 最小依赖性:sqlalchemy和pandas是唯一的要求
- 但对于如何从数据帧创建新表也相当聪明
- 速度不会太慢
许可证
麻省理工学院许可证
谢谢
部分代码从dataset和pandas.sql中被盗
安装
从您的内部选择您的虚拟环境:
~/$ pip install pandabase
对于最新版本:
~/$ git clone https://github.com/notsambeck/pandabase
~/$ cd pandabase
~/pandabase/$ pip install -r requirements.txt
~/pandabase/$ pip install .
使用量
# Python >= 3.6>>>importpandasaspd>>>importpandabase>>>my_data=pd.DataFrame(index=range(7,12),columns=['some_number'],data=pd.np.random.random((5,1)))>>>my_data.index.name='made_up_name'# index must be named to use as PK>>>pandabase.to_sql(my_data,table_name='my_table',con='sqlite:///new_sqlite_db.sqlite',how='create_only')Table('my_table',...>>>exit()
就这些!
您的数据现在持久地存储在sqlite数据库中,使用my_data.index作为主键。若要附加或更新数据,请将“仅创建”替换为“附加”或“upsert”。若要存储没有显式索引的记录,请使用“autoindex=true”。
~/pandabase$ ls brand_new_sqlite_db.sqlite
>>>importpandabase>>>df=pandabase.read_sql('my_table',con='sqlite:///new_sqlite_db.sqlite'))>>>dfsome_number70.72241680.07604590.213118100.453716110.406995