Aidemy 2020/10/29
Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur KI-Fachschule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der zweite Beitrag der Vorverarbeitung für maschinelles Lernen. Freut mich, dich kennenzulernen.
Was diesmal zu lernen ・ Datenerfassung aus Excel ・ Erfassung von Daten aus der Datenbank
-Das erste, was bei der Datenvorverarbeitung zu tun ist, ist __ "Daten lesen" __. -Datenquellen, die Daten lesen, umfassen __ "Dateien", "Datenbanken", "Websites" __, und dieses Mal werden wir uns mit Excel-Dateien und Datenerfassung aus Datenbanken befassen, die häufig gelesen werden. ..
-Lesen Sie Daten aus Excel mit pandas.
-__ Wenn Sie die in mehreren Blättern organisierten Daten als eine Daten __ behandeln möchten, müssen Sie Datenkombination als Vorverarbeitung ausführen.
・ Code![Screenshot 2020-10-29 14.43.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/e487d03e-75a2-0ef9- 8df3-f855081f1d55.png)
・ Ergebnis![Screenshot 2020-10-29 14.43.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/963997fe-836e-c819- f87a-563a13a7143a.png)
-Wenn Sie die Daten (Zeilen) mit einer bestimmten Zeichenfolge aus den gelesenen oder kombinierten Excel-Daten (Blatt) eingrenzen möchten, verwenden Sie __DataFlame.query ('Spalte mit angegebener Zeichenfolge> Zeichenfolge') __ Machen. -Wenn Sie mehr als eine dieser Zeichenfolgen angeben möchten, übergeben Sie sie in einer Liste und ändern Sie den Teil ">" des obigen Codes in "==" oder "in".
df.query('product_id == [1,3]')
・ In diesem Beispiel können Sie wie folgt vorgehen.
gb = df.groupby('type')
gb['food'].count()
-Das Lesen aus der Datenbank erfolgt mit __pd.read_sql () __, aber der als Argument übergebene Wert ist etwas Besonderes.
''' SELECT Spalte 1, Spalte 2 ("," ist in der letzten Spalte nicht erforderlich) FROM Tabelle '''
__sqla.create_engine ('Verbindungsdatenbank + Treibername: // Verbindungsbenutzername: Kennwort @ Hostname: Portnummer / Datenbankname? Zeichensatz = Zeichencode') __
-Der Datenfluss wird unten beschrieben. (Die Informationen in der Datenbank sind fiktiv)
import sqalchemy as sqla
#Fassen Sie die Datenbankinformationen zusammen
engine = sqla.create_engine('mysql+mysqldb://ngayope:ngayope@mysql-service:3307/database1?charset=utf8')
#Aus der Tabelle "Produkte" der Datenbank "Datenbank1", "Produkt"_ID "und" Produkt_Holen Sie sich "Name"
pd.read_sql('''
SELECT
product_id,
product_name
FROM products
''',engine)
-Sie können die Tabellen der Datenbank auch mit pd.merge (links, rechts, on =) wie in Excel verbinden, aber im Fall der Datenbank können Sie einfacher verbinden. -Für Joins verwenden Sie SQL JOIN. -Die Verknüpfungsmethode wird unten beschrieben (beim Verbinden von Tabelle B mit Tabelle A unter Verwendung von Spalte 1 als Schlüssel).
''' SELECT Tabelle A. Spalte 1, Tabelle B. Spalte 1 FROM Tabelle A. JOIN Tabelle B ON Tabelle A. Spalte 1 = Tabelle B. Spalte 1 (zum Hinzufügen beschreiben) '''
''' WHERE Tabellenname. Spaltenname = Wert, den Sie extrahieren möchten 1 ODER Tabellenname. Spaltenname = Wert, den Sie extrahieren möchten 2 '''
・ Code bis zu diesem Punkt (Daten zeigen das Verkaufsdatum und den Listenpreis des Produkts)![Screenshot 2020-10-29 14.58.27.png](https: //qiita-image-store.s3.ap- northeast-1.amazonaws.com/0/698700/f9e63923-93c6-3822-50d1-bb0b09407083.png)
・ Erläuterung des obigen Codes: __ "SELECT" __ gibt die drei Daten an, die dieses Mal ausgegeben werden sollen. __ "FROM" __ gibt mlprep_sales_products an, eine Tabelle mit "Welche Produkte wurden verkauft", und __ "JOIN ON" __ kombiniert dies mit mlprep_sales und mlprep_products. Schließlich werden in __ "WHERE" __ nur diejenigen extrahiert, deren Spalte "catalog_price", die den Listenpreis der Tabelle mlprep_products angibt, 200 oder mehr beträgt.
-Ich habe die Methode mit GroupBy von Pandas erklärt, aber SQL hat auch die __GROUP BY-Klausel __, die dieselbe Funktion hat, und Daten können damit aggregiert werden.
''' JOIN Tabelle B ON Tabelle A. Spalte 1 = Tabelle B. Spalte 1 GROUP BY Aggregierte Spalten '''
-Excel Daten gelesen ist _pd.read_excel () ___, Datenverknüpfung ist __pd.merge () __, Datenverengung ist __df.query () __, Datenaggregation (Gruppierung) ist __df.groupby () _ Machen mit _. -Lesen Sie Datenbankdaten mit __pd.read_sql () __.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts