Combiner Pandas avec NumPy
Pandas est construit sur NumPy, et les deux sont étroitement intégrés. Comprendre leur interaction peut rendre le traitement des données et le calcul scientifique plus efficaces.
Interconversion
Conversion entre DataFrame/Series et NumPy
Exemple
import pandas as pd
import numpy as np
# Convert DataFrame to NumPy array
df = pd.DataFrame({
"A": [1, 2, 3],
"B": [4, 5, 6]
})
arr = df.to_numpy()
print("DataFrame to array:")
print(arr)
print(f"Type: {type(arr)}")
print()
# Convertir une Series en tableau
s = pd.Series([1, 2, 3])
arr = s.values # Ou s.to_numpy()
print("Series en tableau :")
print(arr)
print()
# Convertir NumPy en DataFrame
arr = np.array([[1, 2], [3, 4], [5, 6]])
df = pd.DataFrame(arr, columns=["A", "B"])
print("Tableau en DataFrame :")
print(df)
import numpy as np
# Convert DataFrame to NumPy array
df = pd.DataFrame({
"A": [1, 2, 3],
"B": [4, 5, 6]
})
arr = df.to_numpy()
print("DataFrame to array:")
print(arr)
print(f"Type: {type(arr)}")
print()
# Convertir une Series en tableau
s = pd.Series([1, 2, 3])
arr = s.values # Ou s.to_numpy()
print("Series en tableau :")
print(arr)
print()
# Convertir NumPy en DataFrame
arr = np.array([[1, 2], [3, 4], [5, 6]])
df = pd.DataFrame(arr, columns=["A", "B"])
print("Tableau en DataFrame :")
print(df)
Utilisation des fonctions NumPy dans Pandas
Exemple
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5])
# Utiliser les fonctions NumPy
print("Valeur absolue :", np.abs(s))
print("Racine carrée :", np.sqrt(s))
print("Exponentielle :", np.exp(s))
print("Logarithme :", np.log(s))
print()
# Filtrage conditionnel
print("Valeurs supérieures à 3:")
print(s[s > 3])
import numpy as np
s = pd.Series([1, 2, 3, 4, 5])
# Utiliser les fonctions NumPy
print("Valeur absolue :", np.abs(s))
print("Racine carrée :", np.sqrt(s))
print("Exponentielle :", np.exp(s))
print("Logarithme :", np.log(s))
print()
# Filtrage conditionnel
print("Valeurs supérieures à 3:")
print(s[s > 3])
Opérations vectorisées
Exemple
import pandas as pd
import numpy as np
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
# Opérations vectorisées
print("A + B:", (df["A"] + df["B"]).tolist())
print("A * B:", (df["A"] * df["B"]).tolist())
print("A > B:", (df["A"] > df["B"]).tolist())
print()
# Utiliser apply pour le calcul élément par élément
result = df.apply(lambda x: np.multiply(x, 2))
print("Chaque élément * 2 :")
print(result)
import numpy as np
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
# Opérations vectorisées
print("A + B:", (df["A"] + df["B"]).tolist())
print("A * B:", (df["A"] * df["B"]).tolist())
print("A > B:", (df["A"] > df["B"]).tolist())
print()
# Utiliser apply pour le calcul élément par élément
result = df.apply(lambda x: np.multiply(x, 2))
print("Chaque élément * 2 :")
print(result)
Techniques de calcul numérique
Exemple
import pandas as pd
import numpy as np
df = pd.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [10, 20, 30, 40, 50]
})
# Calculer la variation en pourcentage de A par rapport à B
df["Taux de variation"] = np.divide(df["A"], df["B"], where=df["B"] != 0) * 100
print("Variation en pourcentage :")
print(df)
print()
# Utiliser np.where pour l'affectation conditionnelle
df["Étiquette"] = np.where(df["A"] > 3, "Grand", "Petit")
print("Étiquette conditionnelle :")
print(df)
import numpy as np
df = pd.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [10, 20, 30, 40, 50]
})
# Calculer la variation en pourcentage de A par rapport à B
df["Taux de variation"] = np.divide(df["A"], df["B"], where=df["B"] != 0) * 100
print("Variation en pourcentage :")
print(df)
print()
# Utiliser np.where pour l'affectation conditionnelle
df["Étiquette"] = np.where(df["A"] > 3, "Grand", "Petit")
print("Étiquette conditionnelle :")
print(df)
Calcul statistique
Exemple
import pandas as pd
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Fonctions statistiques NumPy
print(f"Moyenne : {np.mean(s):.2f}")
print(f"Écart-type : {np.std(s):.2f}")
print(f"Maximum : {np.max(s)}")
print(f"Minimum : {np.min(s)}")
print()
# Médiane
print(f"Médiane : {np.median(s)}")
import numpy as np
s = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# Fonctions statistiques NumPy
print(f"Moyenne : {np.mean(s):.2f}")
print(f"Écart-type : {np.std(s):.2f}")
print(f"Maximum : {np.max(s)}")
print(f"Minimum : {np.min(s)}")
print()
# Médiane
print(f"Médiane : {np.median(s)}")
Autres extensionsL'intégration profonde de Pandas et NumPy rend le traitement de données complexes simple et efficace.