いくつかのデータをsqliteデータベース(data.db)としてダウンロードしました。このデータベースをpythonで開き、それをpandas dataframe。
これは今のところ私がやったことです
import sqlite3
import pandas
dat = sqlite3.connect('data.db') #connected to database with out error
pandas.DataFrame.from_records(dat, index=None, exclude=None, columns=None, coerce_float=False, nrows=None)
しかし、このエラーを投げる
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 980, in from_records
coerce_float=coerce_float)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/frame.py", line 5353, in _to_arrays
if not len(data):
TypeError: object of type 'sqlite3.Connection' has no len()
Sqliteデータベースをpandas dataframeに変換する方法
SqliteはPython Standard Libraryの一部であり、SQLiteデータベースへの素晴らしく簡単なインターフェースですが、Pandas=チュートリアルの状態:
注read_sql_table()を使用するには、SQLAlchemyのオプションの依存関係がインストールされている必要があります。 http://pandas.pydata.org/pandas-docs/stable/io.html#reading-tables
ただし、SQLAlchemyのインストールを避けたい場合、Pandasはsqlite3アクセスを引き続きサポートします。
import sqlite3
import pandas as pd
# Create your connection.
cnx = sqlite3.connect('file.db')
df = pd.read_sql_query("SELECT * FROM table_name", cnx)
ただし、使用するテーブルの名前を事前に知る必要があります。
それが役に立てば幸い!
http://pandas.pydata.org/pandas-docs/stable/io.html#sqlite-fallback
この線
dat = sqlite3.connect('data.db')
データベースへの接続を開きます。これまでに照会されたレコードはありません。したがって、後でクエリを実行し、これをpandasデータフレームコンストラクターに提供する必要があります。
これに似ているはずです
import sqlite3
import pandas as pd
dat = sqlite3.connect('data.db')
query = dat.execute("SELECT * From <DATABASENAME>")
cols = [column[0] for column in query.description]
results= pd.DataFrame.from_records(data = query.fetchall(), columns = cols)
私はSQLコマンドにあまり自信がないので、クエリの正確さを確認する必要があります。データベース内のテーブルの名前にする必要があります。
Googleでsqlalchemy
、engine
およびデータベース名(この場合はsqlite)を検索します。
import pandas as pd
import sqlalchemy
db_name = "data.db"
table_name = "LITTLE_BOBBY_TABLES"
engine = sqlalchemy.create_engine("sqlite:///%s" % db_name, execution_options={"sqlite_raw_colnames": True})
df = pd.read_sql_table(table_name, engine)
データベースにデータを保存しました。sqliteテーブル名はReviewsです
import sqlite3
con=sqlite3.connect("database.sqlite")
data=pd.read_sql_query("SELECT * FROM Reviews",con)
print(data)