Aidemy 2020/10/29
Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le deuxième article de prétraitement pour l'apprentissage automatique. Ravi de vous rencontrer.
Quoi apprendre cette fois ・ Acquisition de données depuis Excel ・ Acquisition des données de la base de données
-La première chose à faire dans le prétraitement des données est __ "Lire les données" __. -Les sources de données qui lisent des données comprennent __ "fichiers", "bases de données", "sites Web" __, etc., et cette fois nous traiterons des fichiers Excel et de l'acquisition de données à partir de bases de données, qui sont souvent lues. ..
-Lire les données d'Excel avec pandas. -Comme vous l'avez appris dans "Data Handling 2", utilisez __pd.read_excel () __ pour lire les fichiers Excel.
-__ Lorsque vous souhaitez traiter les données organisées en plusieurs feuilles comme une seule donnée , vous devez effectuer __ combinaison de données comme prétraitement. -A titre d'exemple, il est envisageable de combiner la feuille A de données produit et la feuille B de données de vente dans le sens horizontal. -Utiliser __pd.merge (gauche, droite, on =) __ pour cette fusion. -Les arguments "gauche" et "droite" spécifient la feuille à joindre sur le côté gauche / droit, et "on" spécifie le nom de la colonne utilisée pour la jointure.
・ Code![Capture d'écran 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)
・ Résultat![Capture d'écran 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)
-Si vous souhaitez affiner les données (lignes) qui ont une chaîne de caractères spécifique à partir des données Excel lues ou combinées (feuille), utilisez __DataFlame.query ('colonne avec chaîne de caractères spécifiée> chaîne de caractères') __ Faire. -Si vous souhaitez spécifier plus d'une chaîne de caractères, passez-la dans une liste et changez la partie ">" du code ci-dessus en "==" ou "in".
-Par exemple, si vous souhaitez extraire des lignes avec product_ids 1 et 3 des données "df" lues par les pandas, procédez comme suit.
df.query('product_id == [1,3]')
-Il y a une colonne appelée «type» dans la fiche produit chargée «df», où les données appartiennent à l'une des «aliments» représentant la nourriture, «boisson» représentant les boissons et «sucré» représentant les bonbons. Et. -De ceux-ci, lorsque l'on veut connaître le nombre de __ données appartenant à "nourriture" __ etc., il est nécessaire d'agréger et de regrouper les données appartenant à "nourriture". -Pour le regroupement, utilisez __df.groupby ('nom de la colonne à grouper') __. -A ce moment, lors du regroupement par plusieurs colonnes, utilisez __ ('colonne 1', 'colonne 2']) __. -La forme des données renvoyées par cette méthode groupby est «objet GroupBy», et il est groupé à l'aide de méthodes telles que __count (), mean (), sum (), max () __. Il est possible d'obtenir le nombre de ces données. (Déjà appris dans le cours Pandas)
・ Dans cet exemple, vous pouvez procéder comme suit.
gb = df.groupby('type')
gb['food'].count()
-La lecture depuis la base de données se fait avec __pd.read_sql () __, mais la valeur passée en argument est spéciale. -Dans le premier argument, spécifiez la table et la colonne de la base de données à lire comme suit.
''' SELECT Colonne 1, Colonne 2 ("," n'est pas obligatoire dans la dernière colonne) FROM table '''
-Dans le deuxième argument, passez les informations de la base de données à connecter comme suit.
__sqla.create_engine ('connection database + driver name: // connection user name: password @ host name: port number / database name? charset = character code') __
-Le flux de lecture des données est décrit ci-dessous. (Les informations de la base de données sont fictives)
import sqalchemy as sqla
#Résumer les informations de la base de données
engine = sqla.create_engine('mysql+mysqldb://ngayope:ngayope@mysql-service:3307/database1?charset=utf8')
#À partir du tableau "produits" de la base de données "database1", "produit"_identifiant "et" produit_obtenir "nom"
pd.read_sql('''
SELECT
product_id,
product_name
FROM products
''',engine)
-Vous pouvez également joindre les tables de la base de données avec pd.merge (gauche, droite, on =) comme dans Excel, mais dans le cas de la base de données, vous pouvez la rejoindre plus facilement. -Pour les jointures, utilisez SQL JOIN. -La méthode de jointure est décrite ci-dessous (lors de la jonction de la table B à la table A en utilisant la colonne 1 comme clé).
''' SELECT Tableau A. Colonne 1, Tableau B.Colonne 1 FROM Tableau A REJOIGNEZ le tableau B sur le tableau A. Colonne 1 = tableau B.Colonne 1 (décrire à ajouter) '''
-Utilisez la clause WHERE pour affiner __data. Lorsque vous l'utilisez, faites-le dans la même ligne que SELECT et FROM. ・ Si vous souhaitez affiner par plusieurs conditions, utilisez __ "OU" "ET" __. "ET" extrait les éléments qui remplissent toutes les conditions.
''' WHERE Nom de la table. Nom de la colonne = Valeur à extraire 1 OU Nom de la table. Nom de la colonne = Valeur à extraire 2 '''
・ Code jusqu'à ce point (les données indiquent la date de vente et le prix catalogue du produit)![Capture d'écran 2020-10-29 14.58.27.png](https: //qiita-image-store.s3.ap- nord-est-1.amazonaws.com/0/698700/f9e63923-93c6-3822-50d1-bb0b09407083.png)
・ Explication du code ci-dessus: __ "SELECT" __ spécifie les trois données à sortir cette fois. __ "FROM" __ spécifie mlprep_sales_products, qui est un tableau de "Quels produits ont été vendus", et __ "JOIN ON" __ combine cela avec mlprep_sales et mlprep_products. Enfin, dans __ "WHERE" __, seuls ceux dont la colonne "catalog_price" indiquant le prix catalogue de la table mlprep_products est égal ou supérieur à 200 sont extraits.
-J'ai expliqué la méthode en utilisant GroupBy de pandas, mais SQL a également la clause __GROUP BY __ qui a la même fonction, et les données peuvent être agrégées en utilisant cela. -Lors de l'agrégation des données, joignez les données si nécessaire, puis regroupez les données dans une table.
''' REJOIGNEZ le tableau B sur le tableau A. Colonne 1 = tableau B. Colonne 1 GROUP BY Colonnes agrégées '''
-Les données Excel lues sont _pd.read_excel () ___, la jointure des données est __pd.merge () __, le rétrécissement des données est __df.query () __, l'agrégation des données (regroupement) est __df.groupby () _ Faire avec _. -Lire les données de la base de données avec __pd.read_sql () __. -Pour le premier argument, spécifiez la table et la colonne à lire par __ "SELECT colonne FROM table" __. -De même, utilisez __ "JOIN" __ pour la liaison de données, __ "WHERE" __ pour le filtrage et __ "GROUP BY" __ pour l'agrégation. -Pour le deuxième argument, spécifiez les informations de la base de données résumées par __sqla.create_engine () __.
Cette fois, c'est fini. Merci d'avoir lu jusqu'à la fin.
Recommended Posts