Класс DataFrame

Распределенная коллекция данных, сгруппированных в именованные столбцы.

Кадр данных эквивалентен реляционной таблице в Spark SQL и может быть создан с помощью различных функций в SparkSession.

Это важно

Кадр данных не должен быть создан напрямую с помощью конструктора.

Поддержка Spark Connect

Свойства

Недвижимость Описание
sparkSession Возвращает SparkSession , создавший этот кадр данных.
rdd Возвращает содержимое в виде RDD строки (только в классическом режиме).
na Возвращает значения DataFrameNaFunctions для обработки отсутствующих значений.
stat Возвращает данные DataFrameStatFunctions для статистических функций.
write Интерфейс для сохранения содержимого непотокового кадра данных в внешнее хранилище.
writeStream Интерфейс для сохранения содержимого кадра данных потоковой передачи в внешнее хранилище.
schema Возвращает схему этого кадра данных в виде StructType.
dtypes Возвращает все имена столбцов и их типы данных в виде списка.
columns Извлекает имена всех столбцов в кадре данных в виде списка.
storageLevel Получите текущий уровень хранения кадра данных.
isStreaming Возвращает значение True, если этот кадр данных содержит один или несколько источников, которые постоянно возвращают данные по мере поступления.
executionInfo Возвращает объект ExecutionInfo после выполнения запроса.
plot Возвращает PySparkPlotAccessor для функций построения.

Методы

Просмотр и проверка данных

Метод Описание
toJSON(use_unicode) Преобразует кадр данных в RDD строки или кадра данных.
printSchema(level) Выводит схему в формате дерева.
explain(extended, mode) Выводит планы (логические и физические) в консоль для отладки.
show(n, truncate, vertical) Выводит первые n строки кадра данных в консоль.
collect() Возвращает все записи в кадре данных в виде списка строк.
toLocalIterator(prefetchPartitions) Возвращает итератор, содержащий все строки в этом кадре данных.
take(num) Возвращает первые числовые строки в виде списка строк.
tail(num) Возвращает последние числовые строки в виде списка строк.
head(n) Возвращает первые n строки.
first() Возвращает первую строку в виде строки.
count() Возвращает количество строк в этом кадре данных.
isEmpty() Проверяет, является ли кадр данных пустым и возвращает логическое значение.
describe(*cols) Вычисляет базовую статистику для числовых и строковых столбцов.
summary(*statistics) Вычисляет указанную статистику для числовых и строковых столбцов.

Временные представления

Метод Описание
createTempView(name) Создает локальное временное представление с помощью этого кадра данных.
createOrReplaceTempView(name) Создает или заменяет локальное временное представление этим кадром данных.
createGlobalTempView(name) Создает глобальное временное представление с помощью этого кадра данных.
createOrReplaceGlobalTempView(name) Создает или заменяет глобальное временное представление с помощью заданного имени.

Выбор и проекция

Метод Описание
select(*cols) Проектирует набор выражений и возвращает новый кадр данных.
selectExpr(*expr) Проектирует набор выражений SQL и возвращает новый кадр данных.
filter(condition) Фильтрует строки с помощью заданного условия.
where(condition) Псевдоним фильтра.
drop(*cols) Возвращает новый кадр данных без указанных столбцов.
toDF(*cols) Возвращает новый кадр данных с новыми указанными именами столбцов.
withColumn(colName, col) Возвращает новый кадр данных, добавив столбец или заменив существующий столбец с тем же именем.
withColumns(*colsMap) Возвращает новый кадр данных, добавив несколько столбцов или заменив существующие столбцы с одинаковыми именами.
withColumnRenamed(existing, new) Возвращает новый кадр данных путем переименования существующего столбца.
withColumnsRenamed(colsMap) Возвращает новый кадр данных путем переименования нескольких столбцов.
withMetadata(columnName, metadata) Возвращает новый кадр данных, обновив существующий столбец с метаданными.
metadataColumn(colName) Выбирает столбец метаданных на основе имени логического столбца и возвращает его в качестве столбца.
colRegex(colName) Выбирает столбец на основе имени столбца, указанного в виде регулярного выражения, и возвращает его в качестве столбца.

Сортировка и упорядочение

Метод Описание
sort(*cols, **kwargs) Возвращает новый кадр данных, отсортированный по указанным столбцам.
orderBy(*cols, **kwargs) Псевдоним для сортировки.
sortWithinPartitions(*cols, **kwargs) Возвращает новый кадр данных с каждой секцией, отсортированной по указанным столбцам.

Агрегирование и группирование

Метод Описание
groupBy(*cols) Группировать кадр данных по указанным столбцам, чтобы агрегирование можно было выполнять на них.
rollup(*cols) Создайте многомерный накопительный пакет для текущего кадра данных с помощью указанных столбцов.
cube(*cols) Создайте многомерный куб для текущего кадра данных с помощью указанных столбцов.
groupingSets(groupingSets, *cols) Создайте многомерную агрегирование для текущего кадра данных с помощью указанных наборов группирования.
agg(*exprs) Агрегирование для всего кадра данных без групп (сокращенно для df.groupBy().agg()).
observe(observation, *exprs) Определите (именованные) метрики для наблюдения на кадре данных.

Присоединения

Метод Описание
join(other, on, how) Присоединяется к другому кадру данных, используя заданное выражение соединения.
crossJoin(other) Возвращает декартовую продукцию с другим кадром данных.
lateralJoin(other, on, how) Боковое соединение с другим кадром данных с помощью заданного выражения соединения.

Установка операций

Метод Описание
union(other) Возвращает новый кадр данных, содержащий объединение строк в этом и другом кадре данных.
unionByName(other, allowMissingColumns) Возвращает новый кадр данных, содержащий объединение строк в этом и другом кадре данных.
intersect(other) Возвращает новый кадр данных, содержащий строки только в этом кадре данных и другом кадре данных.
intersectAll(other) Возвращает новый кадр данных, содержащий строки в этом кадре данных и другом кадре данных при сохранении повторяющихся данных.
subtract(other) Возвращает новый кадр данных, содержащий строки в этом кадре данных, но не в другом кадре данных.
exceptAll(other) Возвращает новый кадр данных, содержащий строки в этом кадре данных, но не в другом кадре данных при сохранении дубликатов.

Дедупликация

Метод Описание
distinct() Возвращает новый кадр данных, содержащий отдельные строки в этом кадре данных.
dropDuplicates(subset) Возвращает новый кадр данных с удаленными повторяющимися строками, при необходимости только учитывая определенные столбцы.
dropDuplicatesWithinWatermark(subset) Возвращает новый кадр данных с удаленными повторяющимися строками, при необходимости только учитывая определенные столбцы в подложку.

Выборка и разделение

Метод Описание
sample(withReplacement, fraction, seed) Возвращает пример подмножества этого кадра данных.
sampleBy(col, fractions, seed) Возвращает стратифицированный образец без замены на основе дроби, заданной на каждом страте.
randomSplit(weights, seed) Случайным образом разделяет этот кадр данных с предоставленными весами.

Partitioning

Метод Описание
coalesce(numPartitions) Возвращает новый кадр данных, имеющий точно числовые секции.
repartition(numPartitions, *cols) Возвращает новый кадр данных, секционированные заданными выражениями секционирования.
repartitionByRange(numPartitions, *cols) Возвращает новый кадр данных, секционированные заданными выражениями секционирования.
repartitionById(numPartitions, partitionIdCol) Возвращает новый кадр данных, разделенный заданным выражением идентификатора секции.

Переформирование

Метод Описание
unpivot(ids, values, variableColumnName, valueColumnName) Разворот кадра данных из широкого формата в длинный формат.
melt(ids, values, variableColumnName, valueColumnName) Псевдоним для отмены сводных данных.
transpose(indexColumn) Транспонирует кадр данных, чтобы значения в указанном столбце индекса стали новыми столбцами.

Обработка отсутствующих данных

Метод Описание
dropna(how, thresh, subset) Возвращает новый кадр данных, опустив строки со значениями NULL или NaN.
fillna(value, subset) Возвращает новый кадр данных, для которого значения NULL заполняются новым значением.
replace(to_replace, value, subset) Возвращает новый кадр данных, заменяющий значение другим значением.

Статистические функции

Метод Описание
approxQuantile(col, probabilities, relativeError) Вычисляет приблизительные квантили числовых столбцов кадра данных.
corr(col1, col2, method) Вычисляет корреляцию двух столбцов кадра данных как двойное значение.
cov(col1, col2) Вычислите пример ковариации для заданных столбцов, указанных их именами.
crosstab(col1, col2) Вычисляет таблицу с парой частоты заданных столбцов.
freqItems(cols, support) Поиск частых элементов для столбцов, возможно, с ложными срабатываниями.

Операции схемы

Метод Описание
to(schema) Возвращает новый кадр данных, в котором каждая строка сопоставляется с указанной схемой.
alias(alias) Возвращает новый кадр данных с набором псевдонимов.

Итерация

Метод Описание
foreach(f) Применяет функцию f ко всей строке этого кадра данных.
foreachPartition(f) Применяет функцию f к каждой секции этого кадра данных.

Кэширование и сохраняемость

Метод Описание
cache() Сохраняет кадр данных с уровнем хранения по умолчанию (MEMORY_AND_DISK_DESER).
persist(storageLevel) Задает уровень хранилища для сохранения содержимого кадра данных в операциях.
unpersist(blocking) Помечает кадр данных как непрестойчивый и удалите все блоки для него из памяти и диска.

Создание контрольных точек

Метод Описание
checkpoint(eager) Возвращает контрольную версию этого кадра данных.
localCheckpoint(eager, storageLevel) Возвращает локальную контрольную версию этого кадра данных.

Операции потоковой передачи

Метод Описание
withWatermark(eventTime, delayThreshold) Определяет подложку времени события для этого кадра данных.

Указания по оптимизации

Метод Описание
hint(name, *parameters) Указывает некоторое указание для текущего кадра данных.

Ограничения и смещения

Метод Описание
limit(num) Ограничивает число результатов указанным числом.
offset(num) Возвращает новый кадр данных, пропуская первые n строки.

Расширенные преобразования

Метод Описание
transform(func, *args, **kwargs) Возвращает новый кадр данных. Краткий синтаксис для цепочки пользовательских преобразований.

Методы преобразования

Метод Описание
toPandas() Возвращает содержимое этого кадра данных в виде pandas pandas. Кадр данных.
toArrow() Возвращает содержимое этого кадра данных как PyArrow pyarrow. Таблице.
pandas_api(index_col) Преобразует существующий кадр данных в кадр данных pandas-on-Spark.
mapInPandas(func, schema, barrier, profile) Сопоставляет итератор пакетов в текущем кадре данных с помощью собственной функции Python.
mapInArrow(func, schema, barrier, profile) Сопоставляет итератор пакетов в текущем кадре данных с помощью собственной функции Python, выполняемой в pyarrow. RecordBatch.

Запись данных

Метод Описание
writeTo(table) Создайте построитель конфигураций записи для источников версии 2.
mergeInto(table, condition) Объединяет набор обновлений, вставок и удалений на основе исходной таблицы в целевую таблицу.

Сравнение кадров данных

Метод Описание
sameSemantics(other) Возвращает значение True, если планы логических запросов в обоих кадрах данных равны.
semanticHash() Возвращает хэш-код плана логического запроса для этого кадра данных.

Метаданные и сведения о файле

Метод Описание
inputFiles() Возвращает оптимальный моментальный снимок файлов, составляющих этот кадр данных.

Расширенные возможности SQL

Метод Описание
isLocal() Возвращает значение True, если методы сбора и принятия могут выполняться локально.
asTable() Преобразует кадр данных в объект TableArg, который можно использовать в качестве аргумента таблицы в TVF.
scalar() Возвращает объект Column для вложенных запросов SCALAR, содержащих ровно одну строку и один столбец.
exists() Возвращает объект Column для подзапроса EXISTS.

Примеры

Базовые операции с кадрами данных

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

Агрегирование и группирование

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

Присоединения

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

Сложные преобразования

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