J'ai créé une fonction pour récupérer les données de la colonne de base de données par colonne en utilisant sql avec sqlite3 de python [sqlite3, sql, pandas]

motivation

J'étudie généralement uniquement l'apprentissage automatique par moi-même, mais je vois souvent des personnes qui ont besoin de connaissances en SQL sur Twitter, etc. Donc, en apprenant petit à petit en parallèle, j'aimerais en faire une fonction du point de vue de l'extraction des données en premier.

Dans cet article, nous allons:

Je suis désolé si vous l'avez déjà. SQL est un débutant complet, alors jetez un œil (-_-;)

Importation de ce qui est utilisé cette fois

import sqlite3
import pandas as pd
import pandas.io.sql as sql

Faire un DB

Créez une base de données d'essai à l'aide de pandas. Je voudrais créer un dataframe comme suit. La valeur est appropriée. image.png

city = ["tokyo","kyoto","oosaka"]
num = [30,20,28]
df_1 = pd.DataFrame({"city":city,"number_of_city":num})
vers dataframe-> base de données
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()

Cette fois, je l'ai créé dans une base de données appelée tamesi avec une table appelée study.

Créer une fonction pour récupérer la colonne spécifiée

J'ai fait.

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

Mettez ce que vous voulez retirer dans la colonne et retirez-le. J'ai essayé de renvoyer une erreur s'il n'y a rien dans la colonne. Tout ce que nous faisons est d'appeler simplement l'instruction sql en spécifiant db et table.

Créer une fonction pour récupérer toutes les données

Créons une fonction qui récupère toutes les données. J'ai fait.

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

C'était plus facile car il n'y avait pas de désignation de colonne.

Essayez d'utiliser

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)

#Sortie ci-dessous
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]

J'ai pu confirmer qu'il avait été correctement retiré.

Je vais essayer de l'instancier

J'ai essayé de l'implémenter facilement avec la classe.

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

J'ai juste collé les deux premiers ensemble, rien de spécial.

J'ai essayé de l'utiliser
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)

#Sortie ci-dessous
[('tokyo',), ('kyoto',), ('oosaka',)]
[('tokyo', 30), ('kyoto', 20), ('oosaka', 28)]

J'ai pu le faire correctement.

la fin

Je ne sais pas si c'est pratique car je ne l'ai pas utilisé (-_-;) Ensuite, s'il peut être lu par des pandas, il sera plus facile à utiliser pour sklean etc., donc j'aimerais le faire.

Recommended Posts

J'ai créé une fonction pour récupérer les données de la colonne de base de données par colonne en utilisant sql avec sqlite3 de python [sqlite3, sql, pandas]
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai essayé d'utiliser la base de données (sqlite3) avec kivy
J'ai fait une application d'envoi de courrier simple avec tkinter de Python
J'ai essayé de créer un cadre de données pandas en grattant les informations de rappel d'aliments avec Python
J'ai essayé de créer diverses "données factices" avec Python faker
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une liste de nombres premiers avec python
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
[Bases de la science des données] J'ai essayé d'enregistrer de csv à mysql avec python
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai essayé d'effectuer une analyse de cluster de clients à l'aide des données d'achat
J'ai essayé des centaines de millions de SQLite avec python
Django super introduction par les débutants Python! Partie 3 J'ai essayé d'utiliser la fonction d'héritage de fichier de modèle
Je veux faire un jeu avec Python
J'ai essayé d'obtenir des données CloudWatch avec Python
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
J'ai créé un jeu ○ ✕ avec TensorFlow
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
J'ai essayé de faire MAP rapidement une personne suspecte en utilisant les données d'adresse Geolonia
[Python & SQLite] J'ai analysé la valeur attendue d'une course avec des chevaux dans la fourchette 1x win ①
J'ai essayé de collecter des données sur un site Web avec Scrapy
J'ai essayé de lire les données d'un fichier en utilisant Node.js.
J'ai essayé d'utiliser Python (3) au lieu d'un calculateur de fonctions
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
J'ai essayé d'extraire diverses informations du PC distant de Python par la bibliothèque WMI
[Python] J'ai essayé de créer automatiquement un rapport quotidien de YWT avec la messagerie Outlook
J'ai essayé d'agréger et de comparer les données de prix unitaires par langue avec Real Gachi by Python
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
[Python] Comment créer une liste de chaînes de caractères caractère par caractère
Je veux démarrer beaucoup de processus à partir de python
[Introduction à Pandas] J'ai essayé d'augmenter les données d'échange par interpolation de données ♬
J'ai essayé de trier une colonne FizzBuzz aléatoire avec un tri à bulles.
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai créé un éditeur de texte simple en utilisant PyQt