Créer des DataFrames
Construire des données tabulaires bidimensionnelles à partir de dictionnaires, de listes d'enregistrements et de fichiers CSV avec les DataFrames de pandas.
- Créer un DataFrame à partir d'un dictionnaire de listes
- Créer un DataFrame à partir d'une liste de dictionnaires
- Lire un fichier CSV dans un DataFrame avec pd.read_csv()
- Inspecter un DataFrame avec head(), info(), describe() et shape
Qu’est-ce qu’un DataFrame ?
Un DataFrame pandas est une structure de données bidimensionnelle étiquetée, pensez à un tableur, à une table SQL ou à un dictionnaire d’objets Series. Chaque colonne est une Series, et toutes les colonnes partagent le même index.
import pandas as pd
df = pd.DataFrame({
"Name": ["Alice", "Bob", "Carol"],
"Age": [24, 30, 28],
"Score": [88, 92, 79]
})
print(df)Sortie :
Name Age Score
0 Alice 24 88
1 Bob 30 92
2 Carol 28 79
Créer des DataFrames à partir de différentes sources
À partir d’un dictionnaire de listes, chaque clé devient un nom de colonne :
df = pd.DataFrame({
"City": ["Lagos", "Nairobi", "Cairo"],
"Population": [15_400_000, 4_400_000, 20_900_000],
"Country": ["Nigeria", "Kenya", "Egypt"]
})À partir d’une liste de dictionnaires, chaque dictionnaire est une ligne :
records = [
{"Name": "Alice", "Score": 88},
{"Name": "Bob", "Score": 92},
{"Name": "Carol", "Score": 79},
]
df = pd.DataFrame(records)À partir d’une Series, plusieurs Series se combinent en colonnes :
names = pd.Series(["Alice", "Bob", "Carol"])
scores = pd.Series([88, 92, 79])
df = pd.DataFrame({"Name": names, "Score": scores})Lire des fichiers CSV
La façon la plus courante de charger des données réelles est de partir d’un fichier CSV :
df = pd.read_csv("titanic.csv")Paramètres utiles pour read_csv() :
df = pd.read_csv(
"data.csv",
index_col="id", # use 'id' column as the index
usecols=["name", "age", "fare"], # load only these columns
na_values=["?", ""], # treat '?' and empty strings as NaN
dtype={"age": "float"} # force column type
)Pour ce cours, nous utiliserons le jeu de données Titanic, disponible à l’adresse suivante :
# titanic.csv ships with the course — load it from the browser file system.
df = pd.read_csv("titanic.csv")Inspecter vos données
Après avoir chargé les données, inspectez-les toujours d’abord :
df.head() # first 5 rows
df.tail(3) # last 3 rows
df.shape # (rows, columns) — e.g. (891, 12)
df.info() # column names, non-null counts, dtypes
df.describe() # statistical summary of numeric columnsLa méthode info() est particulièrement importante, elle révèle les valeurs manquantes et les types de données :
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null object
4 Age 714 non-null float64
5 SibSp 891 non-null int64
...
Remarquez que Age n’a que 714 valeurs non-null sur 891, cela signifie 177 valeurs manquantes. Nettoyer ces données est une compétence essentielle que vous apprendrez plus tard.
Accès aux colonnes
Une fois que vous avez un DataFrame, vous pouvez accéder aux colonnes sous forme de Series :
print(df["Age"]) # returns a Series
print(df.Age) # dot notation also works (if column name has no spaces)Sélectionnez plusieurs colonnes en passant une liste :
df[["Name", "Age"]]Essayez-le
Créez un DataFrame représentant trois employés avec des colonnes pour le Nom, le Département et le Salaire. Affichez le DataFrame, puis affichez uniquement les colonnes Nom et Salaire.
import pandas as pd
employees = pd.DataFrame({
"Name": ["Amina", "Kofi", "Zara"],
"Department": ["Engineering", "Marketing", "Engineering"],
"Salary": [95000, 72000, 88000]
})
print(employees)
print(employees[["Name", "Salary"]])Points clés à retenir
- Un DataFrame est une table avec des lignes étiquetées (index) et des colonnes étiquetées
- Les dictionnaires de listes et les listes de dictionnaires sont les méthodes de construction les plus courantes
pd.read_csv()charge des données externes, utilisezindex_col,usecolsetna_valuespour un contrôle précis- Inspectez toujours les nouvelles données avec
head(),info()etdescribe()avant d’analyser
Défi pratique
Chargez le jeu de données Titanic depuis l’URL ci-dessus. Combien de lignes et de colonnes possède-t-il ? Quels sont les noms des colonnes ? Combien de colonnes contiennent des valeurs manquantes ? Utilisez info() pour le découvrir.
1. Qu'est-ce qu'un DataFrame pandas ?
2. Comment créer un DataFrame à partir d'un dictionnaire ?
3. Que renvoie df.shape ?