[PYTHON] SIGNATURE Quête ① De la lecture des données au prétraitement

Contexte avec SIGNATE Quest

Lors de la création d'un environnement BI (Talend, Snowflake, Quicksight) dans le cadre de mon travail, l'apprentissage automatique était un domaine dans lequel je voulais apprendre mais que je ne pouvais pas entrer. J'ai appris qu'une "compétition limitée débutant" se tiendrait au SIGNATE, j'ai donc décidé de saisir cette opportunité pour relever le défi. Je ne savais pas par où commencer, mais une partie de «Efficacité du télémarketing dans les institutions financières» était ouverte gratuitement, alors j'ai enregistré ce que j'ai appris ici comme ma propre note d'étude. Nous créons cet article pour le garder.

Basiques

Importer des pandas

import pandas as pd

Lire les données

df = pd.read_csv('data.csv', index_col='id')

Statistiques de base pour les données numériques

print( df.describe() )

Statistiques de base des données de type chaîne

print( df.describe(include=['O']) )

Affichage du type de variable df

print( type(df) )

Affichage de la colonne y

print( df['y'] )

Affichage du type de données dont seule la colonne y est extraite

print( type(df['y']) )

Affichage des données avec les colonnes age, job, y extraites dans cet ordre

print( df[['age', 'job', 'y']] )

Affichage des données avec les index 2 et 3 colonnes age, job, y extraits dans cet ordre

print( df.loc[[2, 3], ['age', 'job', 'y']] )

Affichage des données avec la colonne y supprimée

print( df.drop('y', axis=1) )

Tableau simple

Affichage du type d'élément et du numéro d'apparence de la colonne poutcome

print( df['poutcome'].value_counts() )

Affichage des types d'éléments et du nombre d'occurrences dans la colonne y

print( df['y'].value_counts() )

En utilisant la fonction value_counts, les éléments existant dans la colonne et le nombre de leurs occurrences sont affichés.

print( df['poutcome'].value_counts() )

Corrélation variable

  1. Confirmer avec une valeur numérique --Coefficient de corrélation
  2. Visualisez et vérifiez

Coefficient de corrélation

La fonction corr, qui est l'une des fonctions de la bibliothèque Pandas. La corrélation est illustrée par une tabulation croisée des données numériques. print(df.corr()) 2020-08-05_10h04_35.png

Visualisation

Les diagrammes épars et les moustaches sont souvent utilisés comme méthodes pour exprimer la corrélation.

Nuage de points

Utilisé lors de la vérification de la corrélation entre les données quantitatives 2020-08-14_10h19_53.png

Boîte à moustaches

Utilisé pour vérifier la corrélation entre les données quantitatives et qualitatives 2020-08-05_10h03_46.png

Comment faire un diagramme de barbe

  1. Créer un tableau de données qualitatives et quantitatives
  2. Créer un diagramme de moustaches en fonction de chaque donnée quantitative pour chaque donnée qualitative (Dans l'exemple ci-dessous, dans le cas de a, créez un diagramme de moustaches avec une valeur maximale de 4 et une valeur minimale de 1.) 2020-08-14_10h37_17.png

2020-08-14_10h42_23.png

Méthode d'analyse

Faisons une hypothèse en examinant les statistiques et les graphiques de base sur le type de variables qui influencent la présence ou l'absence d'applications de dépôt fixe. Au lieu de regarder les données dans les nuages sombres, vous pouvez procéder à l'analyse efficacement en faisant une hypothèse et en la vérifiant. Par exemple, les éléments suivants peuvent être considérés.

Hypothèse 1. Les personnes qui ont postulé pour la campagne précédente sont plus susceptibles de répéter (uniquement si le produit est satisfaisant). Hypothèse 2. Étant donné que les dépôts fixes sont des produits qui ne peuvent pas être retirés librement, il peut être plus facile pour les personnes disposant d'un excédent important de déposer une demande. Hypothèse 3. Les personnes qui ont été en contact avec les ventes pendant une longue période peuvent être plus susceptibles de se sentir mal à l'aise pour postuler (selon les compétences du vendeur).

Tableau croisé

Afin de prouver l'hypothèse 1, (1) Calculez le taux d'application pour chaque élément de la colonne poutcome en utilisant la variable croisée à laquelle le résultat de la tabulation croisée créé dans l'opération précédente est affecté, et affectez-le au taux variable.

Effectuer des tableaux croisés

import pandas as pd df = pd.read_csv('data.csv', index_col='id') cross = pd.crosstab(df['poutcome'], df['y'], margins=True)

Calcul du taux d'application

rate = cross[1] / cross["All"]

Ajout du taux d'application cvr aux résultats de tabulation croisée

cross["cvr"] = rate print( cross )

Extraire et afficher uniquement les index «succès», «échec» et la colonne «cvr» de la table de tableau croisé

print( cross.loc[["success", "failure"], "cvr"])

Affichage de la carte thermique

Même si la corrélation est créée sous forme de tableau matriciel, il est difficile de comprendre ce qui est fortement corrélé dans la liste de valeurs numériques, alors visualisez-la et vérifiez-la.

Importer la bibliothèque

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns

Lire les données

df = pd.read_csv('data.csv', index_col='id')

Calcul du coefficient de corrélation des données quantitatives

corr_matrix = df.corr()

Créer une carte thermique

sns.heatmap(corr_matrix, cmap="Reds")

Ajouter un titre au graphique

plt.title('Correlation')

Afficher le graphique

plt.show()

2020-08-05_11h58_10.png

Filtrage des données

Dans Pandas, vous pouvez effectuer le même traitement que la fonction de filtrage d'Excel en la décrivant comme une variable [expression conditionnelle] à laquelle DataFrame est affecté. Si vous attribuez à l'expression conditionnelle une variable ['nom de colonne'] == valeur à laquelle DataFrame est affecté, vous ne pouvez extraire que les lignes pour lesquelles cette colonne a cette valeur. Les expressions conditionnelles typiques sont les suivantes.

Données égales à la valeur spécifiée: variable à laquelle DataFrame est affecté ['nom de colonne'] == valeur Données différentes de la valeur spécifiée: Variable à laquelle DataFrame est affecté ['nom de colonne']! = Valeur Données plus grandes que la valeur spécifiée: variable à laquelle DataFrame est affecté ['nom de la colonne']> valeur Données supérieures ou égales à la valeur spécifiée: Variable à laquelle DataFrame est affecté ['nom de colonne']> = valeur

Par exemple, lorsque la variable à laquelle DataFrame est affecté est X, pour filtrer les données à la condition que la valeur de la colonne A soit 0, écrivez comme suit.

X [X ['Colonne A'] == 0]

Si vous souhaitez sélectionner uniquement une colonne B spécifique des données filtrées, écrivez comme suit.

X [X ['Colonne A'] == 0] ['Colonne B']

En utilisant cette fonction, il est possible d'extraire uniquement la durée de la colonne (heure du dernier contact) lorsque la colonne y (présence / absence d'application de dépôt fixe (1: oui, 0: non)) vaut '1'.

Importer des pandas

import pandas as pd

Lire les données

df = pd.read_csv('data.csv', index_col='id')

Afficher les données avec une valeur y de 1

print( df[df['y']==1] )

Afficher la durée des données avec une valeur y de 1

print( df[df['y']==1]['duration'] )

Dessiner un histogramme

Un histogramme est une méthode de visualisation pour vérifier la distribution des données des données numériques. En utilisant l'histogramme, vous pouvez vérifier la plage de valeurs des données numériques et la plage de valeurs la plus fréquente des données numériques.

Ensuite, concernant la durée de la colonne (temps de contact final), deux types d'histogrammes répartis dans le cas où la colonne y (présence / absence de dépôt fixe (1: oui, 0: non)) vaut 0 et le cas où elle vaut 1 sont affichés sur un graphique. Dessinons et comparons la distribution. Pour créer un histogramme, utilisez la fonction distplot de seaborn et écrivez:

seaborn.distplot (variable avec série assignée)

Pour superposer deux types de données, vous pouvez dessiner en écrivant deux fois la fonction distplot. Pour ajouter une légende au graphique, spécifiez le nom de l'étiquette dans l'option distplot, puis écrivez la fonction de légende de matplotlib.

seaborn.distplot (variable avec Série attribuée, étiquette = "nom de l'étiquette") matplotlib.pyplot.legend()

matplotlib fournit de nombreuses fonctions pour améliorer l'apparence du graphe. Par exemple, pour nommer l'axe des x et l'axe des y, utilisez les fonctions xlabel et ylabel.

matplotlib.pyplot.xlabel (nom de l'axe des x) matplotlib.pyplot.ylabel (nom de l'axe des y)

Utilisez également la fonction xlim pour spécifier la plage d'affichage de l'axe x. (La plage d'affichage peut également être spécifiée pour l'axe y avec la fonction ylim.)

matplotlib.pyplot.xlim (limite inférieure de l'axe x, limite supérieure de l'axe x)

Importer des pandas

import pandas as pd

Lire les données

df = pd.read_csv('data.csv', index_col='id')

Importer matplotlib.pyplot

import matplotlib.pyplot as plt

importer seaborn

import seaborn as sns

Extraction de durée

duration_0 = df[df['y']==0]['duration'] duration_1 = df[df['y']==1]['duration']

Créer un histogramme

sns.distplot(duration_0, label='y=0') sns.distplot(duration_1, label='y=1')

Ajouter un titre au graphique

plt.title('duration histgram')

Ajouter un nom à l'axe des x du graphique

plt.xlabel('duration')

Ajouter un nom à l'axe des y du graphique

plt.ylabel('frequency')

Spécification de la plage d'affichage de l'axe X

plt.xlim(0, 2000)

Ajouter une légende au graphique

plt.legend()

Afficher le graphique

plt.show()

2020-08-14_12h11_31.png

Génération et traitement des fonctionnalités

2020-08-14_12h19_42.png

2020-08-14_12h20_33.png

2020-08-14_12h23_10.png

2020-08-14_12h25_05.png

2020-08-14_12h25_18.png

2020-08-14_12h26_28.png

2020-08-14_12h27_49.png

2020-08-14_12h28_08.png

2020-08-14_12h28_53.png

Recommended Posts

SIGNATURE Quête ① De la lecture des données au prétraitement
[Kaggle] De la lecture des données au prétraitement et au codage
SIGNATURE Quête ② De la création du modèle de ciblage à la création des données soumises
Prétraitement des données (2) Changez les données de catégorielles à numériques.
De l'installation d'Elasticsearch à la saisie des données
Python: lecture de données JSON à partir de l'API Web
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Somme de 1 à 10
Récupération des données de MacNote3 et migration vers Write
[Python] Flux du scraping Web à l'analyse des données
[AWS] Migrer les données de DynamoDB vers Aurora MySQL
Lecture de données CSV à partir du code Python de stockage d'objets DSX
Comment récupérer des données d'image de Flickr avec Python
Migration automatique des données de Yahoo Root Lab vers Strava
Envoyer les données du journal du serveur vers Splunk Cloud
Note de lecture: Introduction à l'analyse de données avec Python
Envoyer des données de Python au traitement via une communication socket
DataNitro, implémentation de la fonction de lecture des données de feuille
J'ai essayé de lire les données d'un fichier en utilisant Node.js.
Je veux dire qu'il y a un prétraitement des données ~
Extraction de données depuis S3
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Transition de WSL1 à WSL2
Lecture de données avec TensorFlow
Corrélation par prétraitement des données
Pré-traitement des données préfectorales
De l'édition à l'exécution
[Linux] Copie des données de Linux vers Windows avec un script shell
[Introduction à matplotlib] Lire l'heure de fin à partir des données COVID-19 ♬
L'histoire de la copie de données de S3 vers TeamDrive de Google
Appuyez sur REST en Python pour obtenir des données de New Relic
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (Append)
Météorologie x Python ~ De l'acquisition de données météorologiques à l'analyse spectrale ~
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (encodage)
Essayez de traiter les données Titanic avec la bibliothèque de prétraitement DataLiner (conversion)
Transmettez les données OpenCV de la bibliothèque C ++ d'origine à Python
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc