Analyse de données avec Python
Dans cet article, nous verrons comment effectuer une analyse de données avec Python. Nous discuterons de toutes sortes d'analyses de données, c'est-à-dire l'analyse de données numériques avec NumPy, les données tabulaires avec Pandas, la visualisation de données Matplotlib et l'analyse exploratoire des données.
Analyse de données avec Python
L'analyse des données est la technique de collecte, de transformation et d'organisation des données pour faire des prédictions futures et des décisions éclairées basées sur les données. Cela aide également à trouver des solutions possibles à un problème commercial. L'analyse des données comporte six étapes. Ils sont:
- Demander ou spécifier les exigences en matière de données
- Préparer ou collecter des données
- Nettoyer et traiter
- Analyser
- Partager
- Agir ou signaler
Analyse de données avec Python
Note: Pour en savoir plus sur ces étapes, consultez notre NumPy est un package de traitement de tableaux en Python et fournit un objet tableau multidimensionnel hautes performances et des outils pour travailler avec ces tableaux. C'est le package fondamental pour le calcul scientifique avec Python.
Tableaux dans NumPy
Tableau NumPy est un tableau d'éléments (généralement des nombres), tous du même type, indexés par un tuple d'entiers positifs. Dans Numpy, le nombre de dimensions du tableau est appelé le rang du tableau. Un tuple d'entiers donnant la taille du tableau le long de chaque dimension est appelé forme du tableau.
Création d'un tableau NumPy
Les tableaux NumPy peuvent être créés de plusieurs manières, avec différents rangs. Il peut également être créé en utilisant différents types de données comme des listes, des tuples, etc. Le type du tableau résultant est déduit du type d'éléments dans les séquences. NumPy propose plusieurs fonctions pour créer des tableaux avec le contenu initial de l'espace réservé. Ceux-ci minimisent la nécessité de développer des réseaux, une opération coûteuse.
Créer un tableau en utilisant numpy.empty(shape, dtype=float, order=’C’)
Python3import numpy as np b = np.empty(2, dtype = int) print('Matrix b :
', b) a = np.empty([2, 2], dtype = int) print('
Matrix a :
', a) c = np.empty([3, 3]) print('
Matrix c :
', c) Sortir:
Matrice vide utilisant des pandas
Créer un tableau en utilisant numpy.zeros (forme, dtype = Aucun, commande = 'C')
Python3import numpy as np b = np.zeros(2, dtype = int) print('Matrix b :
', b) a = np.zeros([2, 2], dtype = int) print('
Matrix a :
', a) c = np.zeros([3, 3]) print('
Matrix c :
', c) Sortir:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Opérations sur les tableaux Numpy
Opérations arithmétiques
- Ajout:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing addition using arithmetic operator add_ans = a+b print(add_ans) # Performing addition using numpy function add_ans = np.add(a, b) print(add_ans) # The same functions and operations can be used for # multiple matrices c = np.array([1, 2, 3, 4]) add_ans = a+b+c print(add_ans) add_ans = np.add(a, b, c) print(add_ans)
Sortir:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- Soustraction:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing subtraction using arithmetic operator sub_ans = a-b print(sub_ans) # Performing subtraction using numpy function sub_ans = np.subtract(a, b) print(sub_ans)
Sortir:
[ 3 67 3 70] [ 3 67 3 70]
- Multiplication:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing multiplication using arithmetic # operator mul_ans = a*b print(mul_ans) # Performing multiplication using numpy function mul_ans = np.multiply(a, b) print(mul_ans)
Sortir:
[ 10 360 130 3000] [ 10 360 130 3000]
- Division:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing division using arithmetic operators div_ans = a/b print(div_ans) # Performing division using numpy functions div_ans = np.divide(a, b) print(div_ans)
Sortir:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
Pour plus d'informations, reportez-vous à notre NumPy – Tutoriel sur les opérations arithmétiques
Indexation de tableau NumPy
Indexage peut être fait dans NumPy en utilisant un tableau comme index. Dans le cas de la tranche, une vue ou une copie superficielle du tableau est renvoyée mais dans le tableau d'index, une copie du tableau d'origine est renvoyée. Les tableaux Numpy peuvent être indexés avec d'autres tableaux ou toute autre séquence à l'exception des tuples. Le dernier élément est indexé de -1 seconde, de -2 et ainsi de suite.
Indexation de tableaux Python NumPy
Python3# Python program to demonstrate # the use of index arrays. import numpy as np # Create a sequence of integers from # 10 to 1 with a step of -2 a = np.arange(10, 1, -2) print('
A sequential array with a negative step:
',a) # Indexes are specified inside the np.array method. newarr = a[np.array([3, 1, 2 ])] print('
Elements at these indices are:
',newarr) Sortir:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
Découpage de tableau NumPy
Considérez la syntaxe x[obj] où x est le tableau et obj est l'index. L'objet slice est l'index dans le cas de découpage de base . Le découpage de base se produit lorsque obj est :
- un objet slice de la forme start: stop: step
- un nombre entier
- ou un tuple d'objets slice et d'entiers
Tous les tableaux générés par le découpage de base sont toujours la vue dans le tableau d'origine.
Python3# Python program for basic slicing. import numpy as np # Arrange elements from 0 to 19 a = np.arange(20) print('
Array is:
',a) # a[start:stop:step] print('
a[-8:17:1] = ',a[-8:17:1]) # The : operator means all elements till the end. print('
a[10:] = ',a[10:]) Sortir:
Array is: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] a[-8:17:1] = [12 13 14 15 16] a[10:] = [10 11 12 13 14 15 16 17 18 19]
Les points de suspension peuvent également être utilisés avec le découpage de base. Les points de suspension (…) sont le nombre d'objets : nécessaires pour réaliser un tuple de sélection de même longueur que les dimensions du tableau.
Python3# Python program for indexing using basic slicing with ellipsis import numpy as np # A 3 dimensional array. b = np.array([[[1, 2, 3],[4, 5, 6]], [[7, 8, 9],[10, 11, 12]]]) print(b[...,1]) #Equivalent to b[: ,: ,1 ]
Sortir:
[[ 2 5] [ 8 11]]
Diffusion de tableaux NumPy
Le terme diffusion fait référence à la façon dont numpy traite les tableaux avec des dimensions différentes lors d'opérations arithmétiques qui conduisent à certaines contraintes, le plus petit tableau est diffusé sur le plus grand tableau afin qu'ils aient des formes compatibles.
Supposons que nous disposions d’un grand ensemble de données, chaque donnée est une liste de paramètres. Dans Numpy, nous avons un tableau 2D, où chaque ligne est une donnée et le nombre de lignes est la taille de l'ensemble de données. Supposons que nous voulions appliquer une sorte de mise à l'échelle à toutes ces données, chaque paramètre obtient son propre facteur de mise à l'échelle ou disons que chaque paramètre est multiplié par un certain facteur.
Juste pour bien comprendre, comptons les calories contenues dans les aliments en utilisant la répartition des macronutriments. En gros, les parties caloriques des aliments sont constituées de graisses (9 calories par gramme), de protéines (4 CPG) et de glucides (4 CPG). Ainsi, si nous répertorions certains aliments (nos données) et, pour chaque aliment, sa répartition en macronutriments (paramètres), nous pouvons ensuite multiplier chaque nutriment par sa valeur calorique (appliquer une mise à l'échelle) pour calculer la répartition calorique de chaque aliment.
Avec cette transformation, nous pouvons désormais calculer toutes sortes d’informations utiles. Par exemple, quel est le nombre total de calories présentes dans certains aliments ou, compte tenu de la répartition de mon dîner, sachez combien de calories ai-je tirées des protéines, etc.
Voyons une manière naïve de produire ce calcul avec Numpy :
Python3import numpy as np macros = np.array([ [0.8, 2.9, 3.9], [52.4, 23.6, 36.5], [55.2, 31.7, 23.9], [14.4, 11, 4.9] ]) # Create a new array filled with zeros, # of the same shape as macros. result = np.zeros_like(macros) cal_per_macro = np.array([3, 3, 8]) # Now multiply each row of macros by # cal_per_macro. In Numpy, `*` is # element-wise multiplication between two arrays. for i in range(macros.shape[0]): result[i, :] = macros[i, :] * cal_per_macro result
Sortir:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Règles de diffusion : La diffusion de deux tableaux ensemble suit ces règles :
- Si les tableaux n'ont pas le même rang, ajoutez 1 à la forme du tableau de rang inférieur jusqu'à ce que les deux formes aient la même longueur.
- Les deux tableaux sont compatibles dans une dimension s'ils ont la même taille dans la dimension ou si l'un des tableaux a la taille 1 dans cette dimension.
- Les tableaux peuvent être diffusés ensemble s'ils sont compatibles avec toutes les dimensions.
- Après la diffusion, chaque tableau se comporte comme s'il avait une forme égale au maximum de formes par élément des deux tableaux d'entrée.
- Dans n'importe quelle dimension où un tableau avait une taille de 1 et l'autre tableau une taille supérieure à 1, le premier tableau se comporte comme s'il était copié le long de cette dimension.
import numpy as np v = np.array([12, 24, 36]) w = np.array([45, 55]) # To compute an outer product we first # reshape v to a column vector of shape 3x1 # then broadcast it against w to yield an output # of shape 3x2 which is the outer product of v and w print(np.reshape(v, (3, 1)) * w) X = np.array([[12, 22, 33], [45, 55, 66]]) # x has shape 2x3 and v has shape (3, ) # so they broadcast to 2x3, print(X + v) # Add a vector to each column of a matrix X has # shape 2x3 and w has shape (2, ) If we transpose X # then it has shape 3x2 and can be broadcast against w # to yield a result of shape 3x2. # Transposing this yields the final result # of shape 2x3 which is the matrix. print((X.T + w).T) # Another solution is to reshape w to be a column # vector of shape 2X1 we can then broadcast it # directly against X to produce the same output. print(X + np.reshape(w, (2, 1))) # Multiply a matrix by a constant, X has shape 2x3. # Numpy treats scalars as arrays of shape(); # these can be broadcast together to shape 2x3. print(X * 2)
Sortir:
[[ 540 660] [1080 1320] [1620 1980]] [[ 24 46 69] [ 57 79 102]] [[ 57 67 78] [100 110 121]] [[ 57 67 78] [100 110 121]] [[ 24 44 66] [ 90 110 132]]
Note: Pour plus d'informations, reportez-vous à notre Tutoriel Python NumPy .
Analyser des données à l'aide de Pandas
Python Pandas Est utilisé pour les données relationnelles ou étiquetées et fournit diverses structures de données pour manipuler ces données et séries chronologiques. Cette bibliothèque est construite au-dessus de la bibliothèque NumPy. Ce module est généralement importé sous la forme :
import pandas as pd
Ici, pd est appelé un alias des Pandas. Cependant, il n'est pas nécessaire d'importer la bibliothèque en utilisant l'alias, cela permet simplement d'écrire moins de code à chaque fois qu'une méthode ou une propriété est appelée. Les pandas fournissent généralement deux structures de données pour manipuler les données :
- Série
- Trame de données
Série:
Série Pandas est un tableau étiqueté unidimensionnel capable de contenir des données de tout type (entier, chaîne, float, objets python, etc.). Les étiquettes des axes sont collectivement appelées index. La série Pandas n'est rien d'autre qu'une colonne dans une feuille Excel. Les étiquettes ne doivent pas nécessairement être uniques mais doivent être de type hachable. L'objet prend en charge l'indexation basée sur des entiers et des étiquettes et fournit une multitude de méthodes pour effectuer des opérations impliquant l'index.
Série Pandas
Il peut être créé à l'aide de la fonction Series() en chargeant l'ensemble de données à partir du stockage existant comme SQL, base de données, fichiers CSV, fichiers Excel, etc., ou à partir de structures de données telles que des listes, des dictionnaires, etc.
Série de création de pandas Python
Python3import pandas as pd import numpy as np # Creating empty series ser = pd.Series() print(ser) # simple array data = np.array(['g', 'e', 'e', 'k', 's']) ser = pd.Series(data) print(ser)
Sortir:
série pandas
Trame de données:
Cadre de données Pandas est une structure de données tabulaire bidimensionnelle à taille variable et potentiellement hétérogène avec des axes étiquetés (lignes et colonnes). Une trame de données est une structure de données bidimensionnelle, c'est-à-dire que les données sont alignées sous forme de tableau en lignes et en colonnes. Pandas DataFrame se compose de trois composants principaux : les données, les lignes et les colonnes.
Cadre de données Pandas
Il peut être créé à l’aide de la méthode Dataframe() et, tout comme une série, il peut également provenir de différents types de fichiers et structures de données.
Python Pandas créant une trame de données
Python3import pandas as pd # Calling DataFrame constructor df = pd.DataFrame() print(df) # list of strings lst = ['Geeks', 'For', 'Geeks', 'is', 'portal', 'for', 'Geeks'] # Calling DataFrame constructor on list df = pd.DataFrame(lst) df
Sortir:
Création de Dataframe à partir d'une liste Python
Création d'une trame de données à partir d'un CSV
Nous pouvons créer une trame de données à partir du CSV fichiers utilisant le read_csv() fonction.
Python Pandas lit CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Sortir:
responsable d'un dataframe
Filtrage du DataFrame
Pandas dataframe.filter() La fonction est utilisée pour sous-ensembler des lignes ou des colonnes de dataframe en fonction des étiquettes dans l'index spécifié. Notez que cette routine ne filtre pas une trame de données sur son contenu. Le filtre est appliqué aux étiquettes de l'index.
Cadre de données de filtre Python Pandas
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Sortir:
Application d'un filtre sur l'ensemble de données
Tri du DataFrame
Afin de trier la trame de données dans les pandas, la fonction valeurs_de tri() est utilisé. Pandas sort_values() peut trier le bloc de données par ordre croissant ou décroissant.
Python Pandas triant la trame de données par ordre croissant
Sortir:
Ensemble de données trié en fonction d'une valeur de colonne
Groupe PandasBy
Par groupe est un concept assez simple. Nous pouvons créer un regroupement de catégories et appliquer une fonction aux catégories. Dans les vrais projets de science des données, vous devrez traiter de grandes quantités de données et essayer des choses encore et encore. C'est pourquoi, pour plus d'efficacité, nous utilisons le concept Groupby. Groupby fait principalement référence à un processus impliquant une ou plusieurs des étapes suivantes :
- Scission: Il s'agit d'un processus dans lequel nous divisons les données en groupes en appliquant certaines conditions aux ensembles de données.
- Candidature : C'est un processus dans lequel nous appliquons une fonction à chaque groupe indépendamment.
- Combinant : Il s'agit d'un processus dans lequel nous combinons différents ensembles de données après avoir appliqué le groupby et les résultats dans une structure de données.
L'image suivante aidera à comprendre le processus impliqué dans le concept Groupby.
1. Regroupez les valeurs uniques de la colonne Équipe
Méthode Pandas Groupby
2. Il y a désormais un bucket pour chaque groupe
3. Jetez les autres données dans les seaux
4. Appliquez une fonction sur la colonne de poids de chaque godet.
Application de la fonction sur la colonne de poids de chaque colonne
Python Pandas GroupBy
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) print('Original Dataframe') display(df) # applying groupby() function to # group the data on Name value. gk = df.groupby('Name') # Let's print the first entries # in all the groups formed. print('After Creating Groups') gk.first() Sortir:
groupe de pandas
Application de la fonction au groupe :
Après avoir divisé une donnée en groupe, nous appliquons une fonction à chaque groupe afin que nous effectuions certaines opérations :
- Agrégation: Il s'agit d'un processus dans lequel nous calculons une ou plusieurs statistiques récapitulatives sur chaque groupe. Par exemple, calculer les sommes ou les moyennes du groupe
- Transformation: Il s'agit d'un processus dans lequel nous effectuons des calculs spécifiques à un groupe et renvoyons un index similaire. Par exemple, remplir les NA au sein des groupes avec une valeur dérivée de chaque groupe
- Filtration: C'est un processus dans lequel nous éliminons certains groupes, selon un calcul par groupe qui évalue Vrai ou Faux. Par exemple, filtrer les données en fonction de la somme ou de la moyenne du groupe
Agrégation de pandas
Agrégation est un processus dans lequel nous calculons une statistique récapitulative sur chaque groupe. La fonction agrégée renvoie une seule valeur agrégée pour chaque groupe. Après avoir divisé les données en groupes à l'aide de la fonction groupby, plusieurs opérations d'agrégation peuvent être effectuées sur les données groupées.
Agrégation de Pandas Python
Python3# importing pandas module import pandas as pd # importing numpy as np import numpy as np # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # performing aggregation using # aggregate method grp1 = df.groupby('Name') grp1.aggregate(np.sum) Sortir:
Utilisation de la fonction d'agrégation de somme sur l'ensemble de données
Concaténation de DataFrame
Afin de concaténer la trame de données, nous utilisons concat () fonction qui aide à concaténer la trame de données. Cette fonction fait tout le gros du travail consistant à effectuer des opérations de concaténation avec un axe d'objets Pandas tout en effectuant une logique d'ensemble facultative (union ou intersection) des index (le cas échéant) sur les autres axes.
Python Pandas concatène une trame de données
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32],} # Define a dictionary containing employee data data2 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2) display(df, df1) # combining series and dataframe res = pd.concat([df, df1], axis=1) res Sortir:
Fusion de DataFrame
Lorsque nous devons combiner de très grands DataFrames, les jointures constituent un moyen puissant d’effectuer ces opérations rapidement. Les jointures ne peuvent être effectuées que sur deux DataFrames à la fois, désignées par des tables gauche et droite. La clé est la colonne commune sur laquelle les deux DataFrames seront joints. C'est une bonne pratique d'utiliser des clés qui ont des valeurs uniques dans toute la colonne pour éviter la duplication involontaire des valeurs de ligne. Les pandas assurent une seule fonction, fusionner() , comme point d'entrée pour toutes les opérations de jointure de base de données standard entre les objets DataFrame.
Il existe quatre manières de base de gérer la jointure (interne, gauche, droite et externe), en fonction des lignes qui doivent conserver leurs données.
Python Pandas fusionne la trame de données
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32],} # Define a dictionary containing employee data data2 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2) display(df, df1) # using .merge() function res = pd.merge(df, df1, on='key') res Sortir:
Concatiner deux ensembles de données
Rejoindre DataFrame
Afin de rejoindre le dataframe, nous utilisons .rejoindre() fonction, cette fonction est utilisée pour combiner les colonnes de deux DataFrames potentiellement indexés différemment en un seul DataFrame de résultat.
Les Pandas Python rejoignent Dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32]} # Define a dictionary containing employee data data2 = {'Address':['Allahabad', 'Kannuaj', 'Allahabad', 'Kannuaj'], 'Qualification':['MCA', 'Phd', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1,index=['K0', 'K1', 'K2', 'K3']) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2, index=['K0', 'K2', 'K3', 'K4']) display(df, df1) # joining dataframe res = df.join(df1) res Sortir:
Joindre deux ensembles de données
Pour plus d'informations, reportez-vous à notre Pandas fusionnant, rejoignant et concaténant Didacticiel
Pour un guide complet sur les Pandas, reportez-vous à notre Tutoriel Pandas .
Visualisation avec Matplotlib
Matplotlib est facile à utiliser et constitue une étonnante bibliothèque de visualisation en Python. Il est construit sur des tableaux NumPy et conçu pour fonctionner avec la pile SciPy plus large et se compose de plusieurs tracés comme une ligne, une barre, un nuage de points, un histogramme, etc.
Pyplot
Pyplot est un module Matplotlib qui fournit une interface de type MATLAB. Pyplot fournit des fonctions qui interagissent avec la figure, c'est-à-dire crée une figure, décore le tracé avec des étiquettes et crée une zone de traçage dans une figure.
Python3# Python program to show pyplot module import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) plt.axis([0, 6, 0, 20]) plt.show()
Sortir:
Diagramme à bandes
UN tracé à barres ou un diagramme à barres est un graphique qui représente la catégorie de données avec des barres rectangulaires dont les longueurs et les hauteurs sont proportionnelles aux valeurs qu'elles représentent. Les tracés à barres peuvent être tracés horizontalement ou verticalement. Un graphique à barres décrit les comparaisons entre les catégories discrètes. Il peut être créé à l'aide de la méthode bar().
Graphique à barres Python Matplotlib
Ici, nous utiliserons uniquement l'ensemble de données iris
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') # This will plot a simple bar chart plt.bar(df['Species'], df['SepalLengthCm']) # Title to the plot plt.title('Iris Dataset') # Adding the legends plt.legend(['bar']) plt.show() Sortir:
Graphique à barres utilisant la bibliothèque matplotlib
Histogrammes
UN histogramme est essentiellement utilisé pour représenter des données sous la forme de certains groupes. Il s'agit d'un type de graphique à barres où l'axe X représente les plages de cases tandis que l'axe Y donne des informations sur la fréquence. Pour créer un histogramme, la première étape consiste à créer un groupe de plages, puis à répartir toute la plage de valeurs dans une série d'intervalles et à compter les valeurs qui tombent dans chacun des intervalles. Les groupes sont clairement identifiés comme des intervalles de variables consécutifs et sans chevauchement. Le hist() La fonction est utilisée pour calculer et créer un histogramme de x.
Histogramme Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.hist(df['SepalLengthCm']) # Title to the plot plt.title('Histogram') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Sortir:
Histplot utilisant la bibliothèque matplotlib
Nuage de points
Les nuages de points sont utilisés pour observer la relation entre les variables et utilisent des points pour représenter la relation entre elles. Le dispersion() La méthode de la bibliothèque matplotlib est utilisée pour dessiner un nuage de points.
Diagramme de dispersion Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.scatter(df['Species'], df['SepalLengthCm']) # Title to the plot plt.title('Scatter Plot') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Sortir:
Nuage de points utilisant la bibliothèque matplotlib
Boîte à moustaches
UN boîte à moustaches , Corrélation également connue sous le nom de diagramme en boîte et moustaches. C'est une très bonne représentation visuelle lorsqu'il s'agit de mesurer la distribution des données. Trace clairement les valeurs médianes, les valeurs aberrantes et les quartiles. Comprendre la distribution des données est un autre facteur important qui conduit à une meilleure construction de modèles. Si les données comportent des valeurs aberrantes, le diagramme en boîte est un moyen recommandé pour les identifier et prendre les mesures nécessaires. Le graphique en forme de boîte et de moustaches montre comment les données sont réparties. Cinq informations sont généralement incluses dans le graphique
- Le minimum est indiqué à l’extrême gauche du graphique, à l’extrémité de la « moustache » gauche
- Le premier quartile, Q1, est l'extrême gauche de la boîte (moustache gauche)
- La médiane est représentée par une ligne au centre de la boîte
- Troisième quartile, Q3, affiché à l'extrême droite de la case (moustache droite)
- Le maximum est à l'extrême droite de la case
Représentation du box plot
Gamme interquartile
Illustration d'une boîte à moustaches
Diagramme en boîte Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.boxplot(df['SepalWidthCm']) # Title to the plot plt.title('Box Plot') # Adding the legends plt.legend(['SepalWidthCm']) plt.show() Sortir:
Boxplot utilisant la bibliothèque matplotlib
Cartes thermiques de corrélation
Une Heatmap 2D est un outil de visualisation de données qui permet de représenter l'ampleur du phénomène sous forme de couleurs. Une carte thermique de corrélation est une carte thermique qui montre une matrice de corrélation 2D entre deux dimensions discrètes, utilisant des cellules colorées pour représenter des données provenant généralement d'une échelle monochromatique. Les valeurs de la première dimension apparaissent sous forme de lignes du tableau tandis que la deuxième dimension est sous forme de colonne. La couleur de la cellule est proportionnelle au nombre de mesures correspondant à la valeur dimensionnelle. Cela rend les cartes thermiques de corrélation idéales pour l'analyse des données, car elles rendent les modèles facilement lisibles et mettent en évidence les différences et les variations dans les mêmes données. Une carte thermique de corrélation, comme une carte thermique ordinaire, est assistée par une barre de couleurs rendant les données facilement lisibles et compréhensibles.
Note: Les données ici doivent être transmises avec la méthode corr() pour générer une carte thermique de corrélation. De plus, corr() élimine lui-même les colonnes qui ne seront d'aucune utilité lors de la génération d'une carte thermique de corrélation et sélectionne celles qui peuvent être utilisées.
Carte thermique de corrélation Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.imshow(df.corr() , cmap = 'autumn' , interpolation = 'nearest' ) plt.title('Heat Map') plt.show() Sortir:
Heatmap utilisant la bibliothèque matplotlib
Pour plus d'informations sur la visualisation des données, reportez-vous à nos didacticiels ci-dessous -
- Note: Nous utiliserons Iris Dataset.
Obtenir des informations sur l'ensemble de données
Nous utiliserons le paramètre shape pour obtenir la forme de l'ensemble de données.
Forme de la trame de données
Python3df.shapeSortir:
(150, 6)Nous pouvons voir que le dataframe contient 6 colonnes et 150 lignes.
Note: Nous utiliserons Iris Dataset.
Obtenir des informations sur l'ensemble de données
Passons maintenant également aux colonnes et à leurs types de données. Pour cela, nous utiliserons le Info() méthode.
Informations sur l'ensemble de données
Python3df.info()Sortir:
![]()
informations sur l'ensemble de données
Nous pouvons voir qu'une seule colonne contient des données catégorielles et que toutes les autres colonnes sont de type numérique avec des entrées non nulles.
Obtenons un résumé statistique rapide de l'ensemble de données en utilisant le décrire() méthode. La fonction décrire() applique des calculs statistiques de base sur l'ensemble de données comme les valeurs extrêmes, le nombre d'écarts types de points de données, etc. Toute valeur manquante ou valeur NaN est automatiquement ignorée. La fonction décrire() donne une bonne image de la distribution des données.
Description de l'ensemble de données
Python3df.describe()Sortir:
![]()
Description de l'ensemble de données
Nous pouvons voir le nombre de chaque colonne ainsi que leur valeur moyenne, leur écart type, leurs valeurs minimales et maximales.
Vérification des valeurs manquantes
Nous vérifierons si nos données contiennent des valeurs manquantes ou non. Des valeurs manquantes peuvent survenir lorsqu'aucune information n'est fournie pour un ou plusieurs éléments ou pour une unité entière. Nous utiliserons le est nul() méthode.
code python pour la valeur manquante
Python3df.isnull().sum()Sortir:
![]()
Valeurs manquantes dans l'ensemble de données
Nous pouvons voir qu’aucune colonne n’a de valeur manquante.
Vérification des doublons
Voyons si notre ensemble de données contient des doublons ou non. Pandas drop_duplicates() La méthode aide à supprimer les doublons de la trame de données.
Fonction Pandas pour les valeurs manquantes
Python3data = df.drop_duplicates(subset ='Species',) dataSortir:
![]()
Suppression de la valeur en double dans l'ensemble de données
Nous pouvons voir qu’il n’existe que trois espèces uniques. Voyons si l'ensemble de données est équilibré ou non, c'est-à-dire que toutes les espèces contiennent un nombre égal de lignes ou non. Nous utiliserons le Série.value_counts() fonction. Cette fonction renvoie une série contenant un nombre de valeurs uniques.
Code Python pour le nombre de valeurs dans la colonne
Python3df.value_counts('Species')Sortir:
![]()
nombre de valeurs dans l'ensemble de données
Nous pouvons voir que toutes les espèces contiennent un nombre égal de lignes, nous ne devons donc supprimer aucune entrée.
Relation entre variables
Nous verrons la relation entre la longueur et la largeur des sépales ainsi qu'entre la longueur et la largeur des pétales.
Comparaison de la longueur et de la largeur des sépales
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x='SepalLengthCm', y='SepalWidthCm', hue='Species', data=df, ) # Placing Legend outside the Figure plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()Sortir:
![]()
Nuage de points utilisant la bibliothèque matplotlib
Du graphique ci-dessus, nous pouvons déduire que –
- L'espèce Setosa a des sépales plus petits mais des sépales plus larges.
- L'espèce Versicolor se situe au milieu des deux autres espèces en termes de longueur et de largeur des sépales.
- L'espèce Virginica a des sépales plus longs mais plus petits.
Comparaison de la longueur et de la largeur des pétales
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x='PetalLengthCm', y='PetalWidthCm', hue='Species', data=df, ) # Placing Legend outside the Figure plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()Sortir:
![]()
longueur des pétales de l'intrigue sactter
Du graphique ci-dessus, nous pouvons déduire que –
- L'espèce Setosa a des pétales de plus petite longueur et largeur.
- L'espèce Versicolor se situe au milieu des deux autres espèces en termes de longueur et de largeur des pétales.
- L'espèce Virginica a les plus grandes longueurs et largeurs de pétales.
Traçons toutes les relations de la colonne à l'aide d'un pairplot. Il peut être utilisé pour une analyse multivariée.
Code Python pour le tracé de paires
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Sortir:
Pairplot pour l'ensemble de données
Nous pouvons voir de nombreux types de relations à partir de cette parcelle, comme l'espèce Seotsa qui a la plus petite largeur et longueur de pétales. Il a également la plus petite longueur de sépales mais des largeurs de sépales plus grandes. De telles informations peuvent être recueillies sur n’importe quelle autre espèce.
Gestion de la corrélation
Pandas dataframe.corr() est utilisé pour trouver la corrélation par paire de toutes les colonnes de la trame de données. Toutes les valeurs NA sont automatiquement exclues. Toutes les colonnes de type de données non numériques dans la trame de données sont ignorées.
Exemple:
Python3data.corr(method='pearson')Sortir:
![]()
corrélation entre les colonnes de l'ensemble de données
Cartes thermiques
La carte thermique est une technique de visualisation de données utilisée pour analyser l'ensemble de données sous forme de couleurs en deux dimensions. Fondamentalement, il montre une corrélation entre toutes les variables numériques de l'ensemble de données. En termes plus simples, nous pouvons tracer la corrélation trouvée ci-dessus à l'aide des cartes thermiques.
code python pour la carte thermique
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.heatmap(df.corr(method='pearson').drop( ['Id'], axis=1).drop(['Id'], axis=0), annot = True); plt.show()Sortir:
![]()
Heatmap pour la corrélation dans l'ensemble de données
D’après le graphique ci-dessus, nous pouvons voir que –
- La largeur et la longueur des pétales ont des corrélations élevées.
- La longueur des pétales et la largeur des sépales ont de bonnes corrélations.
- La largeur des pétales et la longueur des sépales ont de bonnes corrélations.
Gestion des valeurs aberrantes
Une valeur aberrante est un élément de données/un objet qui s'écarte considérablement du reste des objets (dites normaux). Ils peuvent être provoqués par des erreurs de mesure ou d’exécution. L’analyse pour la détection des valeurs aberrantes est appelée extraction des valeurs aberrantes. Il existe de nombreuses façons de détecter les valeurs aberrantes, et le processus de suppression est le même que la suppression d'un élément de données de la trame de données du panda.
Considérons l'ensemble de données iris et traçons le boxplot pour la colonne SepalWidthCm.
code python pour Boxplot
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt # Load the dataset df = pd.read_csv('Iris.csv') sns.boxplot(x='SepalWidthCm', data=df)Sortir:
![]()
Boîte à moustaches pour la colonne de largeur des sépales
Dans le graphique ci-dessus, les valeurs supérieures à 4 et inférieures à 2 agissent comme des valeurs aberrantes.
Suppression des valeurs aberrantes
Pour supprimer la valeur aberrante, il faut suivre le même processus de suppression d'une entrée de l'ensemble de données en utilisant sa position exacte dans l'ensemble de données, car dans toutes les méthodes ci-dessus de détection des valeurs aberrantes, le résultat final est la liste de tous les éléments de données qui satisfont à la définition des valeurs aberrantes. selon la méthode utilisée.
Nous détecterons les valeurs aberrantes en utilisant IQR et ensuite nous les supprimerons. Nous dessinerons également le boxplot pour voir si les valeurs aberrantes sont supprimées ou non.
Python3# Importing import sklearn from sklearn.datasets import load_boston import pandas as pd import seaborn as sns # Load the dataset df = pd.read_csv('Iris.csv') # IQR Q1 = np.percentile(df['SepalWidthCm'], 25, interpolation = 'midpoint') Q3 = np.percentile(df['SepalWidthCm'], 75, interpolation = 'midpoint') IQR = Q3 - Q1 print('Old Shape: ', df.shape) # Upper bound upper = np.where(df['SepalWidthCm']>= (Q3+1,5*IQR)) # Limite inférieure inférieure = np.where(df['SepalWidthCm'] <= (Q1-1.5*IQR)) # Removing the Outliers df.drop(upper[0], inplace = True) df.drop(lower[0], inplace = True) print('New Shape: ', df.shape) sns.boxplot(x='SepalWidthCm', data=df)Sortir:
![]()
boîte à moustaches utilisant la bibliothèque Seaborn
Pour plus d'informations sur EDA, reportez-vous à nos didacticiels ci-dessous -