2016-03-16 40 views
7

Ho scaricato alcuni dati come database sqlite (data.db) e voglio aprire questo database in python e convertirlo in dataframe panda.Come aprire e convertire database sqlite in dataframe panda

Questo è finora ho fatto

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) 

Ma il suo gettando questo errore

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() 

Come convertire database SQLite per i panda dataframe

risposta

3

La linea

dat = sqlite3.connect('data.db') 

apre una connessione al database. Non ci sono record interrogati su questo. Quindi è necessario eseguire una query in seguito e fornire questo al costruttore di dataframe pandas.

Esso dovrebbe essere simile a questo

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) 

io non sono veramente duro con i comandi SQL, così si dovrebbe verificare la correttezza della query. dovrebbe essere il nome della tabella nel tuo database.

24

Nonostante SQLite è parte della libreria standard di Python ed è un'interfaccia piacevole e facile da database SQLite, panda tutoriali Uniti:

Nota Per poter utilizzare read_sql_table(), è necessario che lo SQLAlchemy opzionale dipendenza installata. http://pandas.pydata.org/pandas-docs/stable/io.html#reading-tables

Ma Pandas ancora supporta l'accesso sqlite3 se si vuole evitare di installare SQLAlchemy:

import sqlite3 
import pandas as pd 
# Create your connection. 
cnx = sqlite3.connect('file.db') 

df = pd.read_sql_query("SELECT * FROM table_name", cnx) 

Ma è necessario conoscere il nome della tabella utilizzata in anticipo:

Speranza che aiuta !

http://pandas.pydata.org/pandas-docs/stable/io.html#sqlite-fallback

0

Cerca sqlalchemy, engine e il nome del database in google (SQLite in questo caso):

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) 
Problemi correlati