Au fil des ans, l'utilisation de python pour la science des données s'est incroyablement développée et ne cesse de croître chaque jour.
Science des données est un vaste domaine d'étude avec de nombreux sous-domaines, dont l'analyse de données est incontestablement l'un des plus importants de tous ces domaines, et quel que soit le niveau de compétence en science des données, il est devenu de plus en plus important de comprendre ou d'avoir à au moins une connaissance de base de celui-ci.
Qu'est-ce que l'analyse des données?
L'analyse des données est le nettoyage et la transformation d'une grande quantité de données non structurées ou non organisées, dans le but de générer des informations et des informations clés sur ces données qui aideraient à prendre des décisions éclairées.
Il existe divers outils utilisés pour l'analyse des données, Python, Microsoft Excel, Tableau, SaS, etc., mais dans cet article, nous nous concentrerons sur la façon dont l'analyse des données est effectuée en python. Plus précisément, comment cela se fait avec une bibliothèque python appelée Pandas.
Qu'est-ce que les pandas?
Pandas est une bibliothèque Python open source utilisée pour la manipulation et la lutte des données. Il est rapide et très efficace et dispose d'outils pour charger plusieurs sortes de données en mémoire. Il peut être utilisé pour remodeler, étiqueter une tranche, indexer ou même regrouper plusieurs formes de données.
Structures de données dans les pandas
Il existe 3 structures de données dans Pandas, à savoir;
- Série
- Trame de données
- Webinars
La meilleure façon de différencier les trois d'entre eux est de voir l'un comme contenant plusieurs piles de l'autre. Ainsi, un DataFrame est une pile de séries et un Panel est une pile de DataFrames.
Une série est un tableau unidimensionnel
Une pile de plusieurs séries crée un DataFrame à 2 dimensions
Une pile de plusieurs DataFrames forme un panneau en 3 dimensions
La structure de données avec laquelle nous travaillerions le plus est le DataFrame bidimensionnel qui peut également être le moyen de représentation par défaut pour certains ensembles de données que nous pourrions rencontrer.
Analyse des données dans les pandas
Pour cet article, aucune installation n'est nécessaire. Nous utiliserions un outil appelé colaboratoire créé par Google. Il s'agit d'un environnement python en ligne pour l'analyse de données, l'apprentissage automatique et l'IA. Il s'agit simplement d'un cloud Jupyter Notebook qui est préinstallé avec presque tous les packages python dont vous auriez besoin en tant que data scientist.
Maintenant, dirigez-vous vers https://colab.research.google.com/notebooks/intro.ipynb. Vous devriez voir ci-dessous.
Dans la navigation en haut à gauche, cliquez sur l'option de fichier et cliquez sur l'option "nouveau bloc-notes". Vous verriez un nouveau Carnet Jupyter page chargée dans votre navigateur. La première chose que nous devons faire est d'importer des pandas dans notre environnement de travail. Nous pouvons le faire en exécutant le code suivant ;
import pandas as pd
Pour cet article, nous utiliserions un ensemble de données sur les prix des logements pour notre analyse des données. L'ensemble de données que nous utiliserions peut être trouvé ici. La première chose que nous voudrions faire est de charger cet ensemble de données dans notre environnement.
Nous pouvons le faire avec le code suivant dans une nouvelle cellule;
df = pd.read_csv('https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token=6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ', sep=',')
Les .read_csv
est utilisé lorsque nous voulons lire un fichier CSV et que nous avons passé une propriété sep pour montrer que le fichier CSV est délimité par des virgules.
Nous devons également noter que notre fichier CSV chargé est stocké dans une variable df
.
Nous n'avons pas besoin d'utiliser le print()
fonction dans Jupyter Notebook. Nous pouvons simplement taper un nom de variable dans notre cellule et Jupyter Notebook l'imprimera pour nous.
Nous pouvons essayer cela en tapant df
dans une nouvelle cellule et en l'exécutant, il imprimera toutes les données de notre ensemble de données en tant que DataFrame pour nous.
Mais nous ne voulons pas toujours voir toutes les données, parfois nous voulons simplement voir les premières données et leurs noms de colonnes. Nous pouvons utiliser le df.head()
fonction pour imprimer les cinq premières colonnes et df.tail()
pour imprimer les cinq derniers. La sortie de l'un ou l'autre des deux aurait l'air comme telle;
Nous voudrions vérifier les relations entre ces plusieurs lignes et colonnes de données. le .describe()
la fonction fait exactement cela pour nous.
Lancer df.describe () donne la sortie suivante;
On voit immédiatement que le .describe()
donne la moyenne, l'écart type, les valeurs minimales et maximales et les centiles de chaque colonne du DataFrame. Ceci est particulièrement utile.
Nous pouvons également vérifier la forme de notre DataFrame 2D pour connaître le nombre de lignes et de colonnes dont il dispose. Nous pouvons le faire en utilisant df.shape
qui renvoie un tuple au format (lignes, colonnes).
Nous pouvons également vérifier les noms de toutes les colonnes de notre DataFrame en utilisant df.columns
.
Que faire si nous voulons sélectionner une seule colonne et renvoyer toutes les données qu'elle contient? Ceci est fait de la même manière que le découpage d'un dictionnaire. Tapez le code suivant dans une nouvelle cellule et exécutez-le
df['price ']
Le code ci-dessus renvoie la colonne de prix, on peut aller plus loin en la sauvegardant dans une nouvelle variable en tant que telle
price = df['price']
Maintenant, nous pouvons effectuer toutes les autres actions qui peuvent être effectuées sur un DataFrame sur notre variable de prix car il ne s'agit que d'un sous-ensemble d'un DataFrame réel. On peut faire des trucs comme df.head()
, df.shape
etc..
Nous pourrions également sélectionner plusieurs colonnes en passant une liste de noms de colonnes dans df en tant que tel
data = df[['price ', 'bedrooms']]
Ce qui précède sélectionne les colonnes avec les noms «prix» et «chambres», si nous saisissons data.head()
dans une nouvelle cellule, nous aurions ce qui suit
La manière ci-dessus de découper les colonnes renvoie tous les éléments de ligne de cette colonne, que se passe-t-il si nous voulons renvoyer un sous-ensemble de lignes et un sous-ensemble de colonnes de notre ensemble de données? Cela peut être fait en utilisant .iloc
et est indexé d'une manière similaire aux listes python. Donc nous pouvons faire quelque chose comme
df.iloc[50: , 3]
Ce qui renvoie la 3ème colonne de la 50ème ligne jusqu'à la fin. C'est assez soigné et tout comme le découpage de listes en python.
Faisons maintenant des choses vraiment intéressantes, notre ensemble de données sur les prix des logements contient une colonne qui nous indique le prix d'une maison et une autre colonne nous indique le nombre de chambres à coucher de cette maison en particulier. Le prix du logement est une valeur continue, il est donc possible que nous n'ayons pas deux maisons qui ont le même prix. Mais le nombre de chambres est quelque peu discret, on peut donc avoir plusieurs maisons avec deux, trois, quatre chambres, etc.
Et si nous voulons obtenir toutes les maisons avec le même nombre de chambres et trouver le prix moyen de chaque chambre discrète? C'est relativement facile de faire cela chez les pandas, cela peut être fait comme tel;
df.groupby('bedrooms ')['price '].mean()
Ce qui précède regroupe d'abord le DataFrame par les ensembles de données avec un numéro de chambre identique en utilisant df.groupby()
fonction, puis nous lui disons de nous donner juste la colonne de la chambre et d'utiliser le .mean()
pour trouver la moyenne de chaque maison dans le jeu de données.
Et si nous voulons visualiser ce qui précède? Nous voudrions être en mesure de vérifier comment le prix moyen de chaque numéro de chambre varie? Nous avons juste besoin de chaîner le code précédent à un .plot()
fonctionner en tant que tel;
df.groupby('bedrooms ')['price '].mean().plot()
Nous aurons un résultat qui ressemble à tel;
Ce qui précède nous montre quelques tendances dans les données. Sur l'axe horizontal, nous avons un nombre distinct de chambres (Notez que plus d'une maison peut avoir X nombre de chambres), Sur l'axe vertical, nous avons la moyenne des prix en ce qui concerne le nombre de chambres correspondant sur l'horizontale axe. On peut maintenant immédiatement remarquer que les maisons de 5 à 10 chambres coûtent beaucoup plus cher que les maisons de 3 chambres. Il deviendra également évident que les maisons de 7 ou 8 chambres coûtent beaucoup plus cher que celles de 15, 20 ou même 30 chambres.
Des informations comme celles-ci expliquent pourquoi l'analyse des données est très importante, nous sommes en mesure d'extraire des informations utiles à partir des données qui ne sont pas immédiatement ou tout à fait impossibles à remarquer sans analyse.
Données manquantes
Supposons que je participe à un sondage qui consiste en une série de questions. Je partage un lien vers l'enquête avec des milliers de personnes afin qu'elles puissent donner leur avis. Mon objectif ultime est d'exécuter une analyse de données sur ces données afin que je puisse obtenir des informations clés à partir des données.
Maintenant, beaucoup de choses pourraient mal tourner, certains enquêteurs pourraient se sentir mal à l'aise de répondre à certaines de mes questions et laisser ce champ vide. Beaucoup de gens pourraient faire de même pour plusieurs parties de mes questions d'enquête. Cela pourrait ne pas être considéré comme un problème, mais imaginez si je devais collecter des données numériques dans mon enquête et qu'une partie de l'analyse m'obligeait à obtenir la somme, la moyenne ou une autre opération arithmétique. Plusieurs valeurs manquantes conduiraient à beaucoup d'inexactitudes dans mon analyse, je dois trouver un moyen de trouver et de remplacer ces valeurs manquantes par des valeurs qui pourraient les remplacer.
Les pandas nous fournissent une fonction pour trouver les valeurs manquantes dans un DataFrame appelé isnull()
.
Les isnull()
la fonction peut être utilisée comme telle;
df.isnull()
Cela retourne un DataFrame de booléens qui nous indique si les données initialement présentes étaient vraiment manquantes ou faussement manquantes. La sortie aurait l'air comme telle;
Nous avons besoin d'un moyen de pouvoir remplacer toutes ces valeurs manquantes, le plus souvent le choix des valeurs manquantes peut être considéré comme nul. Parfois, il peut être considéré comme la moyenne de toutes les autres données ou peut-être la moyenne des données qui l'entourent, selon le scientifique des données et le cas d'utilisation des données analysées.
Pour remplir toutes les valeurs manquantes dans un DataFrame, nous utilisons le .fillna()
fonction utilisée comme telle;
df.fillna(0)
Dans ce qui précède, nous remplissons toutes les données vides avec la valeur zéro. Cela pourrait aussi bien être n'importe quel autre numéro que nous spécifions.
L'importance des données ne peut pas être surestimée, cela nous aide à obtenir des réponses directement à partir de nos données elles-mêmes !. L'analyse des données, selon eux, est le nouveau pétrole des économies numériques.
Tous les exemples de cet article peuvent être trouvés ici.
Pour en savoir plus, consultez Analyse de données avec cours en ligne Python et Pandas.