2016-03-16 12 views
7

पर खोलने और परिवर्तित करने के लिए मैंने कुछ डेटा को SQLite डेटाबेस (data.db) के रूप में डाउनलोड किया है और मैं इस डेटाबेस को पायथन में खोलना चाहता हूं और फिर इसे पांडा डेटाफ्रेम में बदलना चाहता हूं।sqlite डेटाबेस को 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() 

फेंकने कैसे पांडा dataframe को

उत्तर

3

लाइन SQLite डेटाबेस कन्वर्ट करने के लिए कर रहा है

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

डेटाबेस से कनेक्शन खोलता है। इस पर कोई रिकॉर्ड नहीं है। तो आपको बाद में एक प्रश्न निष्पादित करना होगा और इसे पांडा डेटाफ्रेम कन्स्ट्रक्टर को प्रदान करना होगा।

यह, इस

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 कमांड के साथ फर्म नहीं कर रहा हूँ के समान दिखाई ताकि आप क्वेरी की सत्यता की जांच होनी चाहिए चाहिए। अपने डेटाबेस में तालिका का नाम होना चाहिए।

24

SQLite के बावजूद अजगर मानक पुस्तकालय का हिस्सा है और SQLite डेटाबेस, पांडा ट्यूटोरियल राज्यों के लिए एक अच्छा और आसान इंटरफ़ेस है:

आदेश read_sql_table उपयोग करने के लिए(), आप होना चाहिए में नोट SQLAlchemy वैकल्पिक निर्भरता स्थापित http://pandas.pydata.org/pandas-docs/stable/io.html#reading-tables

लेकिन पांडा अभी भी sqlite3 पहुंच का समर्थन करता है, तो आप 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) 

लेकिन आप पहले से इस्तेमाल किया तालिका का नाम पता करने की जरूरत है:

आशा है कि यह मदद करता है !

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

0

(इस मामले में SQLite) खोजें sqlalchemy, engine और डेटाबेस नाम गूगल में:

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) 
संबंधित मुद्दे