Normalerweise lerne ich nur maschinelles Lernen selbst, aber ich sehe oft Leute, die SQL-Kenntnisse auf Twitter usw. benötigen. Indem ich nach und nach parallel lerne, möchte ich es zu einer Funktion machen, indem zuerst Daten extrahiert werden.
In diesem Artikel werden wir:
Es tut mir leid, wenn Sie es bereits haben. SQL ist ein absoluter Anfänger, schauen Sie also bitte nach (-_-;)
import sqlite3
import pandas as pd
import pandas.io.sql as sql
Erstellen Sie eine Test-DB mit Pandas. Ich möchte einen Datenrahmen wie folgt erstellen. Der Wert ist angemessen.
city = ["tokyo","kyoto","oosaka"]
num = [30,20,28]
df_1 = pd.DataFrame({"city":city,"number_of_city":num})
path = "tamesi.db"
conn = sqlite3.connect(path)
cur = conn.cursor()
sql.to_sql(df_1,"study",conn,if_exists="replace",index=None)
cur.close()
con.close()
Dieses Mal habe ich es in einer Datenbank namens tamesi mit einer Tabelle namens study erstellt.
Ich machte.
def ret_column(db,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
Tragen Sie das, was Sie herausnehmen möchten, in die Spalte ein und nehmen Sie es heraus. Ich habe versucht, einen Fehler zurückzugeben, wenn die Spalte nichts enthält. Wir rufen lediglich die SQL-Anweisung auf, indem wir db und table angeben.
Erstellen wir eine Funktion, die alle Daten abruft. Ich machte.
def ret_all(db,table):
conn = sqlite3.connect(db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
Dies war einfacher, da keine Spaltenbezeichnung vorhanden war.
path = "tamesi.db"
table="study"
val_1 = ret_column(path,table,column="city")
val_2 = ret_all(path,table)
print(val_1)
print(val_2)
#Ausgabe unten
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
Ich konnte bestätigen, dass es richtig herausgenommen wurde.
Ich habe versucht, es einfach mit Klasse zu implementieren.
class ret_from_db():
def __init__(self,db):
self.db = db
def ret_column(self,table,column=""):
assert bool(column), "no column is spcified"
conn= sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select {} from {}".format(column,table))
val = cur.fetchall()
cur.close()
conn.close()
return val
def ret_all(self,table):
conn = sqlite3.connect(self.db)
cur = conn.cursor()
cur.execute("select * from {}".format(table))
val = cur.fetchall()
cur.close()
conn.close()
return val
Ich habe nur die ersten beiden zusammengeklebt, nichts Besonderes.
get_db = ret_from_db(db="tamesi.db")
val_1 = get_db.ret_column(table="study",column="city")
val_2 = get_db.ret_all(table="study")
print(val_1)
print(val_2)
#Ausgabe unten
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]
Ich konnte es richtig machen.
Ich weiß nicht, ob dies praktisch ist, weil ich es nicht benutzt habe (-_-;) Wenn es von Pandas gelesen werden kann, ist es einfacher, es für sklean usw. zu verwenden, also würde ich es gerne machen.
Recommended Posts