Classe DataFrame
Une collection distribuée de données regroupées en colonnes nommées.
Un DataFrame est l'équivalent d'une table relationnelle dans Spark SQL et peut être créé à l'aide de diverses fonctions dans SparkSession.
Un DataFrame ne doit pas être créé directement à l'aide du constructeur.
Prend en charge Spark Connect
Propriétés
Propriété | Description |
|---|---|
Renvoie SparkSession qui a créé ce DataFrame. | |
Renvoie le contenu en tant que RDD de lignes (mode Classique uniquement). | |
Renvoie un DataFrameNaFunctions pour gérer les valeurs manquantes. | |
Renvoie un DataFrameStatFunctions pour les fonctions statistiques. | |
Interface pour enregistrer le contenu du DataFrame non-streaming dans un stockage externe. | |
Interface pour enregistrer le contenu du DataFrame en streaming vers un stockage externe. | |
Renvoie le schéma de ce DataFrame sous forme de StructType. | |
Renvoie tous les noms de colonne et leurs types de données sous forme de liste. | |
Récupère les noms de toutes les colonnes du DataFrame sous forme de liste. | |
Obtenez le niveau de stockage actuel du DataFrame. | |
Retourne True si ce DataFrame contient une ou plusieurs sources qui renvoient continuellement des données à mesure qu'elles arrivent. | |
Retourne un objet ExecutionInfo après l'exécution de la query. | |
Retourne un PySparkPlotAccessor pour les fonctions de traçage. |
Méthodes
Visualisation et inspection des données
Méthode | Description |
|---|---|
Convertit un DataFrame en un RDD de chaînes de caractères ou un DataFrame. | |
Affiche le schéma en arborescence. | |
Imprime les plans (logiques et physiques) dans la console à des fins de debugging. | |
Imprime les n premières lignes du DataFrame dans la console. | |
Renvoie tous les enregistrements du DataFrame sous forme de liste de lignes. | |
Renvoie un itérateur qui contient toutes les lignes de ce DataFrame. | |
Retourne les premières num lignes sous forme de liste de lignes. | |
Renvoie les num dernières lignes sous forme de liste de lignes. | |
Renvoie les n premières lignes. | |
Renvoie la première ligne en tant que ligne. | |
Renvoie le nombre de lignes dans ce DataFrame. | |
Vérifie si le DataFrame est vide et renvoie une valeur booléenne. | |
Calcule les statistiques de base pour les colonnes numériques et de chaîne. | |
Calcule les statistiques spécifiées pour les colonnes numériques et de chaîne. |
Vues temporaires
Méthode | Description |
|---|---|
Crée une vue temporaire locale avec ce DataFrame. | |
Crée ou remplace une vue temporaire locale avec ce DataFrame. | |
Crée une vue temporaire globale avec ce DataFrame. | |
Crée ou remplace une vue temporaire globale en utilisant le nom donné. |
Sélection et projection
Méthode | Description |
|---|---|
Projete un ensemble d'expressions et renvoie un nouveau DataFrame. | |
Projette un ensemble d'expressions SQL et retourne un nouveau DataFrame. | |
Filtre les lignes selon la condition donnée. | |
Alias pour le filtre. | |
Renvoie un nouveau DataFrame sans les colonnes spécifiées. | |
Renvoie un nouveau DataFrame avec de nouveaux noms de colonne spécifiés. | |
Renvoie un nouveau DataFrame en ajoutant une colonne ou en remplaçant la colonne existante qui a le même nom. | |
Renvoie un nouveau DataFrame en ajoutant plusieurs colonnes ou en remplaçant les colonnes existantes qui ont les mêmes noms. | |
Renvoie un nouveau DataFrame en renommant une colonne existante. | |
Renvoie un nouveau DataFrame en renommant plusieurs colonnes. | |
Retourne un nouveau DataFrame en mettant à jour une colonne existante avec des métadonnées. | |
Sélectionne une colonne de métadonnées basée sur son nom de colonne logique et la retourne en tant que colonne. | |
Sélectionne une colonne basée sur le nom de colonne spécifié comme expression régulière et la renvoie comme Colonne. |
Tri et classement
Méthode | Description |
|---|---|
Renvoie un nouveau DataFrame trié par la ou les colonnes spécifiées. | |
Alias de tri. | |
Renvoie un nouveau DataFrame, chaque partition étant triée par la ou les colonnes spécifiées. |
Agrégation et regroupement
Méthode | Description |
|---|---|
Regroupe le DataFrame par les colonnes spécifiées afin que l'agrégation puisse être effectuée sur celles-ci. | |
Créez un regroupement multidimensionnel pour le DataFrame actuel en utilisant les colonnes spécifiées. | |
Créez un cube multidimensionnel pour le DataFrame actuel à l'aide des colonnes spécifiées. | |
Créer une agrégation multidimensionnelle pour le DataFrame actuel à l’aide des ensembles de regroupement spécifiés. | |
Agréger sur l'intégralité du DataFrame sans groupes (raccourci pour df.groupBy().agg()). | |
Définissez des métriques (nommées) à observer sur le DataFrame. |
Jointures
Méthode | Description |
|---|---|
Joint à un autre DataFrame, en utilisant l'expression de jointure donnée. | |
Renvoie le produit cartésien avec un autre DataFrame. | |
Jointures latérales avec un autre DataFrame, en utilisant l'expression de jointure donnée. |
Opérations
Méthode | Description |
|---|---|
Retourne un nouveau DataFrame contenant l'union des lignes dans ce DataFrame et un autre. | |
Renvoie un nouveau DataFrame contenant l'union des lignes de celui-ci et d'un autre DataFrame. | |
Renvoie un nouveau DataFrame contenant uniquement les lignes présentes à la fois dans ce DataFrame et dans un autre DataFrame. | |
Renvoie un nouveau DataFrame contenant des lignes de ce DataFrame et d'un autre DataFrame, tout en préservant les doublons. | |
Renvoie un nouveau DataFrame contenant les lignes de ce DataFrame mais pas celles d'un autre DataFrame. | |
Retourne un nouveau DataFrame contenant des lignes de ce DataFrame mais pas de l'autre DataFrame, tout en préservant les doublons. |
Déduplication
Méthode | Description |
|---|---|
Renvoie un nouveau DataFrame contenant les lignes distinctes dans ce DataFrame. | |
Renvoie un nouveau DataFrame avec les lignes en double supprimées, en ne considérant que certaines colonnes, le cas échéant. | |
Renvoie un nouveau DataFrame avec les lignes dupliquées supprimées, en tenant éventuellement compte uniquement de certaines colonnes, dans les limites du filigrane. |
Échantillonnage et fractionnement
Méthode | Description |
|---|---|
Renvoie un sous-ensemble échantillonné de ce DataFrame. | |
Renvoie un échantillon stratifié sans remplacement basé sur la fraction donnée sur chaque strate. | |
Divise aléatoirement ce DataFrame avec les pondérations fournies. |
Partitionnement
Méthode | Description |
|---|---|
Retourne un nouveau DataFrame qui a exactement numPartitions partitions. | |
Renvoie un nouveau DataFrame partitionné par les expressions de partitionnement données. | |
Renvoie un nouveau DataFrame partitionné par les expressions de partitionnement données. | |
Renvoie un nouveau DataFrame partitionné par l'expression d'ID de partition donnée. |
Remodelage
Méthode | Description |
|---|---|
Dépivoter un DataFrame d'un format large à un format long. | |
Alias pour unpivot. | |
Transpose un DataFrame de sorte que les valeurs de la colonne d'index spécifiée deviennent les nouvelles colonnes. |
Gestion des données manquantes
Méthode | Description |
|---|---|
Renvoie un nouveau DataFrame omettant les lignes avec des valeurs nulles ou NaN. | |
Renvoie un nouveau DataFrame dont les valeurs nulles sont remplies avec la nouvelle valeur. | |
Renvoie un nouveau DataFrame remplaçant une valeur par une autre valeur. |
Fonctions statistiques
Méthode | Description |
|---|---|
Calcule les quantiles approximatifs des colonnes numériques d'un DataFrame. | |
Calcule la corrélation de deux colonnes d'un DataFrame sous forme de valeur double. | |
Calcule la covariance d'échantillon pour les colonnes données, spécifiées par leurs noms. | |
Calcule une table de fréquences par paires des colonnes données. | |
Recherche d'éléments fréquents pour les colonnes, éventuellement avec de faux positifs. |
Opérations de schéma
Méthode | Description |
|---|---|
Renvoie un nouveau DataFrame où chaque ligne est rapprochée pour correspondre au schéma spécifié. | |
Renvoie un nouveau DataFrame avec un alias défini. |
Itération
Méthode | Description |
|---|---|
Applique la fonction f à toutes les lignes de ce DataFrame. | |
Applique la fonction f à chaque partition de ce DataFrame. |
Mise en cache et persistance
Le tableau suivant décrit le comportement sur le compute classic.
Méthode | Description |
|---|---|
Conserve le DataFrame avec le niveau de stockage default (MEMORY_AND_DISK_DESER). | |
Définit le niveau de stockage pour persister le contenu du DataFrame entre les Opérations. | |
Marque le DataFrame comme non persistant et supprime tous les blocs le concernant de la mémoire et du disque. |
Dans le compute Serverless, cache() et persist() font immédiatement le compute du DataFrame et stockent le résultat sous forme de snapshot fixe pour votre session, tandis que persist() ignore le niveau de stockage. unpersist() marque le snapshot comme prêt à être récupéré, et le DataFrame ainsi que les DataFrames dérivés ne peuvent plus être utilisés. Voir Mise en cache des DataFrames sur le compute serverless.
Points de contrôle
Méthode | Description |
|---|---|
Renvoie une version avec point de contrôle de ce DataFrame. | |
Renvoie une version de ce DataFrame avec point de contrôle local. |
Opérations de streaming
Méthode | Description |
|---|---|
Définit un filigrane temporel d'événement pour ce DataFrame. |
Conseils d'optimisation
Méthode | Description |
|---|---|
Spécifie une indication sur le DataFrame actuel. |
Limites et décalages
Méthode | Description |
|---|---|
Limite le nombre de résultats au nombre spécifié. | |
Retourne un nouveau DataFrame en ignorant les n premières lignes. |
Transformations avancées
Méthode | Description |
|---|---|
Renvoie un nouveau DataFrame. Syntaxe concise pour enchaîner les transformations personnalisées. |
Méthodes de conversion
Méthode | Description |
|---|---|
Renvoie le contenu de ce DataFrame sous forme de DataFrame Pandas pandas.DataFrame. | |
Renvoie le contenu de ce DataFrame en tant que pyarrow.Table PyArrow. | |
Convertit le DataFrame existant en un DataFrame pandas-on-Spark. | |
Mappe un itérateur de batches dans le DataFrame actuel à l'aide d'une fonction Python native. | |
Mappe un itérateur de batches dans le DataFrame actuel à l'aide d'une fonction native Python qui est exécutée sur pyarrow.RecordBatch. |
Écriture de données
Méthode | Description |
|---|---|
Créez un constructeur de configuration d'écriture pour les sources v2. | |
Merge un ensemble de mises à jour, d'insertions et de suppressions basées sur une table source dans une table cible. |
Comparaison de DataFrame
Méthode | Description |
|---|---|
Renvoie True lorsque les plans de requête logiques dans les deux DataFrames sont égaux. | |
Renvoie un code de hachage du plan de requête logique de ce DataFrame. |
Métadonnées et informations sur les fichiers
Méthode | Description |
|---|---|
Renvoie un instantané au mieux des fichiers qui composent ce DataFrame. |
Fonctionnalités SQL avancées
Méthode | Description |
|---|---|
Renvoie `Vrai` si les méthodes `collect` et `take` peuvent être exécutées localement. | |
Convertit le DataFrame en un objet TableArg, qui peut être utilisé comme argument de table dans une fonction TVF. | |
Renvoie un objet Column pour une sous-requête scalaire contenant exactement une ligne et une colonne. | |
Renvoie un objet Column pour une sous-requête EXISTS. |
Exemples
Opérations de base sur les DataFrame
# Create a DataFrame
people = spark.createDataFrame([
{"deptId": 1, "age": 40, "name": "Alice", "gender": "M", "salary": 50},
{"deptId": 1, "age": 50, "name": "Bob", "gender": "M", "salary": 100},
{"deptId": 2, "age": 60, "name": "Sue", "gender": "F", "salary": 150},
{"deptId": 3, "age": 20, "name": "Tom", "gender": "M", "salary": 200}
])
# Select columns
people.select("name", "age").show()
# Filter rows
people.filter(people.age > 30).show()
# Add a new column
people.withColumn("age_plus_10", people.age + 10).show()
Agrégation et regroupement
# Group by and aggregate
people.groupBy("gender").agg({"salary": "avg", "age": "max"}).show()
# Multiple aggregations
from pyspark.sql import functions as F
people.groupBy("deptId").agg(
F.avg("salary").alias("avg_salary"),
F.max("age").alias("max_age")
).show()
Jointures
# Create another DataFrame
department = spark.createDataFrame([
{"id": 1, "name": "PySpark"},
{"id": 2, "name": "ML"},
{"id": 3, "name": "Spark SQL"}
])
# Join DataFrames
people.join(department, people.deptId == department.id).show()
Transformations complexes
# Chained operations
result = people.filter(people.age > 30) \
.join(department, people.deptId == department.id) \
.groupBy(department.name, "gender") \
.agg({"salary": "avg", "age": "max"}) \
.sort("max(age)")
result.show()