一个面向sql的python数据分析库。
faro的Python项目详细描述
概述
faro
是python sqlite api的包装器,旨在成为python的sql驱动的数据分析库。它旨在补充Python ECO系统中现有的数据分析包,如^ {< CD2> }和^ {CD3}}。使用faro
可以使用纯sql处理内存中的表对象集合,并在需要时轻松与numpy
和pandas
进行互操作。最后,faro
与IPython
配合得很好,因此您可以轻松地交互和探索查询结果。
用法
创建一个Database
对象并给它命名。
fromfaroimportDatabasedb=Database('transportation')
要向内存数据库中添加表,只需指定文件名。支持的文件类型包括:csv
、json
和xlsx
。add_table
将文件的内容插入数据库中的新表中。它可以自动检测文件类型并相应地解析文件内容。在本例中,我们加载两个不同的表,一个是csv
格式的,另一个是json
格式的。
db.add_table('cars.json',name='cars')db.add_table('airports.csv',name='airports')
我们还可以直接传递要添加到数据库中的pandas.DataFrame
或faro.Table
对象。在处理特定文件的更复杂解析时,一个有用的模式是使用pandas
将其读入内存,然后将DataFrame
添加到faro.Database
。
buses=pd.DataFrame({'id':[1,2,3,4,5],'from':['Houston','Atlanta','Chicago','Boston','New York'],'to':['San Antonio','Charlotte','Milwaukee','Cape Cod','Buffalo']})db.add_table(buses,name='buses')
我们现在可以使用纯sql查询数据库中的任何表,并且可以在jupyter笔记本中轻松地与结果交互。
sql="""SELECT iata, name, city, state FROM airports WHERE country = 'USA' LIMIT 5"""db.query(sql)
iata | name | city | state | |
---|---|---|---|---|
0 | 00M | Thigpen | Bay Springs | MS |
1 | 00R | Livingston Municipal | Livingston | TX |
2 | 00V | Meadow Lake | Colorado Springs | CO |
3 | 01G | Perry-Warsaw | Perry | NY |
4 | 01J | Hilliard Airpark | Hilliard | FL |
如果我们想与查询返回的数据交互,我们可以很容易地将其转换为最适合这种情况的任何数据类型。支持的类型转换包括:List[Tuple]
、Dict[List]
、numpy.ndarray
和pandas.DataFrame
。
table=db.query(sql)type(table)>>>faro.table.Tabledf=table.to_dataframe()type(df)>>>pandas.core.frame.DataFramematrix=table.to_numpy()type(matrix)>>>numpy.ndarray