Python Tutoriel Pandas : DataFrame, plage de dates, utilisation de Pandas
Qu'est-ce que les Pandas Python?
Pandas est une bibliothèque open source qui vous permet d'effectuer des manipulations et des analyses de données dans Python. Pandas Python La bibliothèque offre la manipulation et les opérations de données pour les tableaux numériques et les séries chronologiques. Pandas fournit un moyen simple de créer, de manipuler et de gérer les données. Elle est construite sur NumPy, ce qui signifie qu'elle a besoin de NumPy pour fonctionner.
Pourquoi utiliser Pandas ?
Les data scientists utilisent Pandas dans Python pour ses avantages suivants :
- Gère facilement les données manquantes
- Il utilise Série pour structure de données unidimensionnelle et DataFrame pour une structure de données multidimensionnelle
- Il fournit un moyen efficace de découper les données
- Il offre un moyen flexible de fusionner, concaténer ou remodeler les données
- Il comprend un puissant outil de séries chronologiques avec lequel travailler
En un mot, Pandas est une bibliothèque utile dans l'analyse des données. Il peut être utilisé pour effectuer des manipulations et des analyses de données. Les Pandas fournissent des structures de données puissantes et faciles à utiliser, ainsi que les moyens d'effectuer rapidement des opérations sur ces structures.
Comment installer Pandas ?
Maintenant dans ce Python Tutoriel Pandas, nous apprendrons comment installer Pandas dans Python.
Pour installer la bibliothèque Pandas, veuillez vous référer à notre tutoriel Comment installer TensorFlow. Pandas est installé par défaut. Dans les cas éloignés, les pandas ne sont pas installés.
Vous pouvez installer Pandas en utilisant :
- Anaconda : conda install -c anaconda pandas
- In Jupyter Carnet de notes :
import sys
!conda install --yes --prefix {sys.prefix} pandas
Qu'est-ce qu'un DataFrame Pandas ?
Cadre de données Pandas est un tableau bidimensionnel avec une structure de données étiquetée ayant différents types de colonnes. Un DataFrame est un moyen standard de stocker des données sous forme de tableau, avec des lignes pour stocker les informations et des colonnes pour nommer les informations. Par exemple, le prix peut être le nom d'une colonne et 2,3,4 peuvent être les valeurs du prix.
Data Frame est bien connu des statisticiens et autres praticiens des données.
Ci-dessous, une image d'un bloc de données Pandas :
Qu'est-ce qu'une série ?
Une série est une structure de données unidimensionnelle. Il peut avoir n’importe quelle structure de données comme un entier, un flottant et une chaîne. C'est utile lorsque vous souhaitez effectuer un calcul ou renvoyer un tableau unidimensionnel. Une série, par définition, ne peut pas avoir plusieurs colonnes. Dans ce dernier cas, veuillez utiliser la structure de trame de données.
Python La série Pandas présente les paramètres suivants :
- Données : peut être une liste, un dictionnaire ou une valeur scalaire
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Vous pouvez ajouter l'index avec index. Cela aide à nommer les lignes. La longueur doit être égale à la taille de la colonne
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Ci-dessous, vous créez une série Pandas avec une valeur manquante pour les troisièmes lignes. Attention, valeurs manquantes dans Python sont notés « NaN ». Vous pouvez utiliser numpy pour créer artificiellement la valeur manquante : np.nan
pd.Series([1,2,np.nan])
Sortie
0 1.0 1 2.0 2 NaN dtype: float64
Créer un DataFrame Pandas
Maintenant, dans ce didacticiel Pandas DataFrame, nous allons apprendre à créer Python Trame de données Pandas :
Vous pouvez convertir un tableau numpy en une trame de données pandas avec pd.Data frame(). L’inverse est également possible. Pour convertir une trame de données pandas en tableau, vous pouvez utiliser np.array()
## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]]
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)
## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame: 0 1
0 1 2
1 3 4
Numpy array: [[1 2]
[3 4]]
Vous pouvez également utiliser un dictionnaire pour créer une trame de données Pandas.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Âge | Nom | |
|---|---|---|
| 0 | 30 | John |
| 1 | 40 | Smith |
Données sur la plage Pandas
Les pandas disposent d'une API pratique pour créer une plage de dates. Apprenons avec Python Exemples de pandas :
pd.data_range(date,période,fréquence) :
- Le premier paramètre est la date de début
- Le deuxième paramètre est le nombre de périodes (facultatif si la date de fin est précisée)
- Le dernier paramètre est la fréquence : jour : 'J', mois : 'M' et année : 'Y'.
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)
Sortie
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)
Sortie
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
Inspection des données
Vous pouvez vérifier la tête ou la queue de l'ensemble de données avec head() ou tail() précédé du nom du bloc de données du panda, comme indiqué dans l'exemple Pandas ci-dessous :
Étape 1) Créez une séquence aléatoire avec numpy. La séquence comporte 4 colonnes et 6 lignes
random = np.random.randn(6,4)
Étape 2) Ensuite, vous créez un bloc de données à l'aide de pandas.
Utilisez dates_m comme index pour le bloc de données. Cela signifie que chaque ligne recevra un « nom » ou un index, correspondant à une date.
Enfin, vous donnez un nom aux 4 colonnes avec l'argument colonnes
# Create data with date
df = pd.DataFrame(random,
index=dates_m,
columns=list('ABCD'))
Étape 3) Utilisation de la fonction tête
df.head(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | 1.139433 | 1.318510 | - 0.181334 | 1.615822 |
| 2030-02-28 | - 0.081995 | - 0.063582 | 0.857751 | - 0.527374 |
| 2030-03-31 | - 0.519179 | 0.080984 | - 1.454334 | 1.314947 |
Étape 4) Utilisation de la fonction tail
df.tail(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-04-30 | - 0.685448 | - 0.011736 | 0.622172 | 0.104993 |
| 2030-05-31 | - 0.935888 | - 0.731787 | - 0.558729 | 0.768774 |
| 2030-06-30 | 1.096981 | 0.949180 | - 0.196901 | - 0.471556 |
Étape 5) Une excellente pratique pour avoir une idée des données consiste à utiliser décrire(). Il fournit les décomptes, la moyenne, la norme, le minimum, le maximum et le centile de l'ensemble de données.
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| compter | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| signifier | 0.002317 | 0.256928 | - 0.151896 | 0.467601 |
| std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| min | - 0.935888 | - 0.731787 | - 1.454334 | - 0.527374 |
| 25 % | - 0.643880 | - 0.050621 | - 0.468272 | - 0.327419 |
| 50 % | - 0.300587 | 0.034624 | - 0.189118 | 0.436883 |
| 75 % | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
| max | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
Données de tranche
Le dernier point de ceci Python Le didacticiel Pandas explique comment découper une trame de données Pandas.
Vous pouvez utiliser le nom de la colonne pour extraire les données d'une colonne particulière, comme indiqué dans l'exemple Pandas ci-dessous :
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
Pour sélectionner plusieurs colonnes, vous devez utiliser deux fois le crochet, [[..,..]]
La première paire de crochets signifie que vous souhaitez sélectionner des colonnes, la deuxième paire de crochets indique les colonnes que vous souhaitez renvoyer.
df[['A', 'B']].
| A | B | |
|---|---|---|
| 2030-01-31 | - 0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | - 0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | - 1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Vous pouvez découper les lignes avec :
Le code ci-dessous renvoie les trois premières lignes
### using a slice for row df[0:3]
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | - 0.168655 | 0.587590 | 0.572301 | - 0.031827 |
| 2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
| 2030-03-31 | 0.767534 | - 0.940617 | 0.227255 | - 0.341532 |
La fonction loc est utilisée pour sélectionner les colonnes par noms. Comme d'habitude, les valeurs avant la virgule représentent les lignes et après la colonne. Vous devez utiliser les crochets pour sélectionner plusieurs colonnes.
## Multi col df.loc[:,['A','B']]
| A | B | |
|---|---|---|
| 2030-01-31 | - 0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | - 0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | - 1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Il existe une autre méthode pour sélectionner plusieurs lignes et colonnes dans Pandas. Vous pouvez utiliser iloc[]. Cette méthode utilise l'index au lieu du nom des colonnes. Le code ci-dessous renvoie la même trame de données que ci-dessus
df.iloc[:, :2]
| A | B | |
|---|---|---|
| 2030-01-31 | - 0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | - 0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | - 1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Supprimer une colonne
Vous pouvez supprimer des colonnes en utilisant pd.drop()
df.drop(columns=['A', 'C'])
| B | D | |
|---|---|---|
| 2030-01-31 | 0.587590 | - 0.031827 |
| 2030-02-28 | 0.998266 | 0.475975 |
| 2030-03-31 | - 0.940617 | - 0.341532 |
| 2030-04-30 | 0.507350 | - 0.296035 |
| 2030-05-31 | 1.276558 | 0.523017 |
| 2030-06-30 | 1.572085 | - 0.594772 |
Enchaînement
Vous pouvez concaténer deux DataFrame dans Pandas. Vous pouvez utiliser pd.concat()
Tout d'abord, vous devez créer deux DataFrames. Jusqu’ici tout va bien, vous êtes déjà familier avec la création de dataframes
import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
'Age': ['25', '30', '50']},
index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
'Age': ['26', '11']},
index=[3, 4])
Enfin, vous concaténez les deux DataFrame
df_concat = pd.concat([df1,df2]) df_concat
| Âge | Le nom | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
| 4 | 11 | Smith |
Drop_duplicates
Si un ensemble de données peut contenir des informations en double, `drop_duplicates` est un moyen facile d'exclure les lignes en double. Vous pouvez voir que `df_concat` a une observation en double, `Smith` apparaît deux fois dans la colonne `name.`
df_concat.drop_duplicates('name')
| Âge | Le nom | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
Trier les valeurs
Vous pouvez trier la valeur avec sort_values
df_concat.sort_values('Age')
| Âge | Le nom | |
|---|---|---|
| 4 | 11 | Smith |
| 0 | 25 | John |
| 3 | 26 | Adam |
| 1 | 30 | Smith |
| 2 | 50 | paul |
Renommer : changement d'index
Vous pouvez utiliser rename pour renommer une colonne dans Pandas. La première valeur est le nom de la colonne actuelle et la deuxième valeur est le nouveau nom de la colonne.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Âge_ppl | Prénom | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Smith |
| 2 | 50 | paul |
| 3 | 26 | Adam |
| 4 | 11 | Smith |
Résumé
Vous trouverez ci-dessous un résumé de la méthode la plus utile pour la science des données avec Pandas.
| importer des données | lire_csv |
|---|---|
| créer une série | Série |
| Créer une trame de données | Trame de données |
| Créer une plage de dates | date_range |
| retourner la tête | front |
| queue de retour | queue |
| Décrire | décrire |
| tranche en utilisant le nom | nom de données['nom de colonne'] |
| Découper en utilisant des lignes | nom_données[0:5] |

