Pandas de base : Utilisation de la mémoire et opérations sur DataFrame

Beginner

This tutorial is from open-source community. Access the source code

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.