Introduction
Bienvenue dans le Laboratoire Pandas de base! Dans ce laboratoire, nous allons explorer certains aspects fondamentaux de la bibliothèque Pandas : l'utilisation mémoire des DataFrame, la gestion des instructions if/condition de vérité, l'utilisation des méthodes de Fonction Utilisateur Définie (UDF), la gestion des valeurs NA, les différences avec NumPy et les considérations de sécurité multithread.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder au carnet Jupyter pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Comprendre l'utilisation mémoire des DataFrame
Pandas fournit plusieurs méthodes pour comprendre l'utilisation mémoire d'un DataFrame. La méthode .info() peut être utilisée pour voir un résumé, y compris l'utilisation mémoire.
import pandas as pd
import numpy as np
## Créer un DataFrame
dtypes = ["int64", "float64", "datetime64[ns]", "timedelta64[ns]", "complex128", "object", "bool"]
n = 5000
data = {t: np.random.randint(100, size=n).astype(t) for t in dtypes}
df = pd.DataFrame(data)
df["categorical"] = df["object"].astype("category")
## Afficher les informations du DataFrame
df.info()
Utiliser des instructions if/condition de vérité avec Pandas
Pandas ne prend pas en charge l'utilisation directe d'instructions if/condition de vérité en raison de l'ambiguité. Utilisez plutôt des méthodes telles que .any(), .all() ou .empty().
## Vérifier si une valeur dans la Séries est True
if pd.Series([False, True, False]).any():
print("Au moins une valeur True dans la Séries")
Mutation avec des méthodes de Fonction Utilisateur Définie (UDF)
Lorsque vous utilisez une méthode pandas qui prend une UDF, évitez de modifier le DataFrame à l'intérieur de la UDF. Au lieu de cela, faites une copie avant de faire des modifications.
def f(s):
s = s.copy()
s.pop("a")
return s
df = pd.DataFrame({"a": [1, 2, 3], 'b': [4, 5, 6]})
df.apply(f, axis="columns")
Gérer les valeurs manquantes (NA)
Pandas fournit des types d'extension de nombres entiers pouvant être nuls pour représenter des entiers avec des valeurs manquantes éventuelles.
s_int = pd.Series([1, 2, 3, 4, 5], index=list("abcde"), dtype=pd.Int64Dtype())
s2_int = s_int.reindex(["a", "b", "c", "f", "u"])
Comprendre les différences avec NumPy
Pandas et NumPy présentent des différences légères dans la manière dont ils calculent la variance. Il est important de prendre cela en compte lors du passage d'une bibliothèque à l'autre.
## Variance dans pandas
var_pandas = df.var()
## Variance dans NumPy
var_numpy = np.var(df.values)
Considérer la sécurité en matière de threads dans Pandas
Pandas n'est pas complètement sécuritaire pour les threads. Soyez prudent lorsqu'il s'agit de partager des objets Pandas entre plusieurs threads.
Gérer les problèmes d'ordre d'octets
Vous pouvez rencontrer des problèmes d'ordre d'octets lorsqu'il s'agit de traiter des données créées sur une machine ayant un ordre d'octets différent. Convertissez les données en ordre d'octets natif du système avant de les passer à Pandas.
x = np.array(list(range(10)), ">i4") ## big endian
newx = x.byteswap().newbyteorder() ## force native byteorder
s = pd.Series(newx)
Sommaire
Dans ce laboratoire, nous avons exploré certains aspects clés de la bibliothèque Pandas. Comprendre ces aspects vous aidera à utiliser Pandas plus efficacement et à éviter les pièges courants.