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
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. |
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()