Kelas DataFrame

Kumpulan data terdistribusi yang dikelompokkan ke dalam kolom bernama.

DataFrame setara dengan tabel relasional di Spark SQL, dan dapat dibuat menggunakan berbagai fungsi di SparkSession.

Penting

DataFrame tidak boleh dibuat secara langsung menggunakan konstruktor.

Mendukung Spark Connect

Karakteristik

Harta benda Deskripsi
sparkSession Mengembalikan SparkSession yang membuat DataFrame ini.
rdd Mengembalikan konten sebagai RDD Baris (mode Klasik saja).
na Mengembalikan DataFrameNaFunctions untuk menangani nilai yang hilang.
stat Mengembalikan DataFrameStatFunctions untuk fungsi statistik.
write Antarmuka untuk menyimpan konten DataFrame non-streaming ke penyimpanan eksternal.
writeStream Antarmuka untuk menyimpan konten DataFrame streaming ke penyimpanan eksternal.
schema Mengembalikan skema DataFrame ini sebagai StructType.
dtypes Mengembalikan semua nama kolom dan tipe datanya sebagai daftar.
columns Mengambil nama semua kolom dalam DataFrame sebagai daftar.
storageLevel Dapatkan tingkat penyimpanan DataFrame saat ini.
isStreaming Mengembalikan True jika DataFrame ini berisi satu atau beberapa sumber yang terus mengembalikan data saat data tiba.
executionInfo Mengembalikan objek ExecutionInfo setelah kueri dijalankan.
plot Mengembalikan PySparkPlotAccessor untuk memplot fungsi.

Metode

Tampilan dan inspeksi data

Metode Deskripsi
toJSON(use_unicode) Mengonversi DataFrame menjadi RDD string atau DataFrame.
printSchema(level) Mencetak skema dalam format pohon.
explain(extended, mode) Mencetak paket (logis dan fisik) ke konsol untuk tujuan penelusuran kesalahan.
show(n, truncate, vertical) Mencetak baris n pertama DataFrame ke konsol.
collect() Mengembalikan semua rekaman dalam DataFrame sebagai daftar Baris.
toLocalIterator(prefetchPartitions) Mengembalikan iterator yang berisi semua baris dalam DataFrame ini.
take(num) Mengembalikan baris num pertama sebagai daftar Baris.
tail(num) Mengembalikan baris num terakhir sebagai daftar Baris.
head(n) Mengembalikan baris n pertama.
first() Mengembalikan baris pertama sebagai Baris.
count() Mengembalikan jumlah baris dalam DataFrame ini.
isEmpty() Memeriksa apakah DataFrame kosong dan mengembalikan nilai boolean.
describe(*cols) Menghitung statistik dasar untuk kolom numerik dan string.
summary(*statistics) Menghitung statistik yang ditentukan untuk kolom numerik dan string.

Tampilan sementara

Metode Deskripsi
createTempView(name) Membuat tampilan sementara lokal dengan DataFrame ini.
createOrReplaceTempView(name) Membuat atau mengganti tampilan sementara lokal dengan DataFrame ini.
createGlobalTempView(name) Membuat tampilan sementara global dengan DataFrame ini.
createOrReplaceGlobalTempView(name) Membuat atau mengganti tampilan sementara global menggunakan nama yang diberikan.

Pemilihan dan proyeksi

Metode Deskripsi
select(*cols) Memproyeksikan sekumpulan ekspresi dan mengembalikan DataFrame baru.
selectExpr(*expr) Memproyeksikan sekumpulan ekspresi SQL dan mengembalikan DataFrame baru.
filter(condition) Memfilter baris menggunakan kondisi yang diberikan.
where(condition) Alias untuk filter.
drop(*cols) Mengembalikan DataFrame baru tanpa kolom tertentu.
toDF(*cols) Mengembalikan DataFrame baru dengan nama kolom baru yang ditentukan.
withColumn(colName, col) Mengembalikan DataFrame baru dengan menambahkan kolom atau mengganti kolom yang sudah ada yang memiliki nama yang sama.
withColumns(*colsMap) Mengembalikan DataFrame baru dengan menambahkan beberapa kolom atau mengganti kolom yang sudah ada yang memiliki nama yang sama.
withColumnRenamed(existing, new) Mengembalikan DataFrame baru dengan mengganti nama kolom yang sudah ada.
withColumnsRenamed(colsMap) Mengembalikan DataFrame baru dengan mengganti nama beberapa kolom.
withMetadata(columnName, metadata) Mengembalikan DataFrame baru dengan memperbarui kolom yang sudah ada dengan metadata.
metadataColumn(colName) Memilih kolom metadata berdasarkan nama kolom logisnya dan mengembalikannya sebagai Kolom.
colRegex(colName) Memilih kolom berdasarkan nama kolom yang ditentukan sebagai regex dan mengembalikannya sebagai Kolom.

Pengurutan dan pengurutan

Metode Deskripsi
sort(*cols, **kwargs) Mengembalikan DataFrame baru yang diurutkan menurut kolom yang ditentukan.
orderBy(*cols, **kwargs) Alias untuk diurutkan.
sortWithinPartitions(*cols, **kwargs) Mengembalikan DataFrame baru dengan setiap partisi yang diurutkan menurut kolom yang ditentukan.

Agregasi dan pengelompokan

Metode Deskripsi
groupBy(*cols) Mengelompokkan DataFrame menurut kolom yang ditentukan sehingga agregasi dapat dilakukan pada kolom tersebut.
rollup(*cols) Buat rollup multi-dimensi untuk DataFrame saat ini menggunakan kolom yang ditentukan.
cube(*cols) Buat kubus multi-dimensi untuk DataFrame saat ini menggunakan kolom yang ditentukan.
groupingSets(groupingSets, *cols) Buat agregasi multi-dimensi untuk DataFrame saat ini menggunakan kumpulan pengelompokan yang ditentukan.
agg(*exprs) Agregat pada seluruh DataFrame tanpa grup (singkatan untuk df.groupBy().agg()).
observe(observation, *exprs) Tentukan metrik (bernama) untuk diamati pada DataFrame.

Joins

Metode Deskripsi
join(other, on, how) Bergabung dengan DataFrame lain, menggunakan ekspresi gabungan yang diberikan.
crossJoin(other) Mengembalikan produk kartesius dengan DataFrame lain.
lateralJoin(other, on, how) Lateral bergabung dengan DataFrame lain, menggunakan ekspresi gabungan yang diberikan.

Mengatur operasi

Metode Deskripsi
union(other) Mengembalikan DataFrame baru yang berisi penyatuan baris dalam ini dan DataFrame lainnya.
unionByName(other, allowMissingColumns) Mengembalikan DataFrame baru yang berisi penyatuan baris dalam ini dan DataFrame lainnya.
intersect(other) Mengembalikan DataFrame baru yang hanya berisi baris di DataFrame ini dan DataFrame lainnya.
intersectAll(other) Mengembalikan DataFrame baru yang berisi baris di DataFrame ini dan DataFrame lain sambil mempertahankan duplikat.
subtract(other) Mengembalikan DataFrame baru yang berisi baris dalam DataFrame ini tetapi tidak di DataFrame lain.
exceptAll(other) Mengembalikan DataFrame baru yang berisi baris dalam DataFrame ini tetapi tidak di DataFrame lain sambil mempertahankan duplikat.

Deduplication

Metode Deskripsi
distinct() Mengembalikan DataFrame baru yang berisi baris yang berbeda dalam DataFrame ini.
dropDuplicates(subset) Mengembalikan DataFrame baru dengan baris duplikat dihapus, secara opsional hanya mempertimbangkan kolom tertentu.
dropDuplicatesWithinWatermark(subset) Mengembalikan DataFrame baru dengan baris duplikat dihapus, secara opsional hanya mempertimbangkan kolom tertentu, dalam marka air.

Pengambilan sampel dan pemisahan

Metode Deskripsi
sample(withReplacement, fraction, seed) Mengembalikan subset sampel dari DataFrame ini.
sampleBy(col, fractions, seed) Mengembalikan sampel yang di stratifikasi tanpa penggantian berdasarkan pecahan yang diberikan pada setiap stratum.
randomSplit(weights, seed) Membagi DataFrame ini secara acak dengan bobot yang disediakan.

Partitioning

Metode Deskripsi
coalesce(numPartitions) Mengembalikan DataFrame baru yang memiliki partisi numPartitions persis.
repartition(numPartitions, *cols) Mengembalikan DataFrame baru yang dipartisi oleh ekspresi partisi yang diberikan.
repartitionByRange(numPartitions, *cols) Mengembalikan DataFrame baru yang dipartisi oleh ekspresi partisi yang diberikan.
repartitionById(numPartitions, partitionIdCol) Mengembalikan DataFrame baru yang dipartisi oleh ekspresi ID partisi yang diberikan.

Membentuk ulang

Metode Deskripsi
unpivot(ids, values, variableColumnName, valueColumnName) Batalkan pivot DataFrame dari format lebar ke format panjang.
melt(ids, values, variableColumnName, valueColumnName) Alias untuk unpivot.
transpose(indexColumn) Mengubah urutan DataFrame sehingga nilai di kolom indeks yang ditentukan menjadi kolom baru.

Penanganan data yang hilang

Metode Deskripsi
dropna(how, thresh, subset) Mengembalikan baris DataFrame baru yang menghilangkan baris dengan nilai null atau NaN.
fillna(value, subset) Mengembalikan DataFrame baru yang nilai nullnya diisi dengan nilai baru.
replace(to_replace, value, subset) Mengembalikan DataFrame baru yang menggantikan nilai dengan nilai lain.

Fungsi statistik

Metode Deskripsi
approxQuantile(col, probabilities, relativeError) Menghitung perkiraan kuantil kolom numerik DataFrame.
corr(col1, col2, method) Menghitung korelasi dua kolom DataFrame sebagai nilai ganda.
cov(col1, col2) Hitung kovarians sampel untuk kolom yang diberikan, yang ditentukan oleh namanya.
crosstab(col1, col2) Menghitung tabel frekuensi sepasang yang bijaksana dari kolom yang diberikan.
freqItems(cols, support) Menemukan item yang sering untuk kolom, mungkin dengan positif palsu.

Operasi skema

Metode Deskripsi
to(schema) Mengembalikan DataFrame baru di mana setiap baris direkonsiliasi agar sesuai dengan skema yang ditentukan.
alias(alias) Mengembalikan DataFrame baru dengan set alias.

Iteration

Metode Deskripsi
foreach(f) Menerapkan fungsi f ke semua Baris DataFrame ini.
foreachPartition(f) Menerapkan fungsi f ke setiap partisi DataFrame ini.

Penembolokan dan persistensi

Metode Deskripsi
cache() Mempertahankan DataFrame dengan tingkat penyimpanan default (MEMORY_AND_DISK_DESER).
persist(storageLevel) Mengatur tingkat penyimpanan untuk mempertahankan konten DataFrame di seluruh operasi.
unpersist(blocking) Menandai DataFrame sebagai tidak persisten, dan menghapus semua blok untuknya dari memori dan disk.

Titik Pemeriksaan

Metode Deskripsi
checkpoint(eager) Mengembalikan versi checkpoint dari DataFrame ini.
localCheckpoint(eager, storageLevel) Mengembalikan versi DataFrame yang dicentang secara lokal.

Operasi streaming

Metode Deskripsi
withWatermark(eventTime, delayThreshold) Menentukan marka air waktu peristiwa untuk DataFrame ini.

Petunjuk pengoptimalan

Metode Deskripsi
hint(name, *parameters) Menentukan beberapa petunjuk pada DataFrame saat ini.

Batas dan offset

Metode Deskripsi
limit(num) Membatasi jumlah hasil ke angka yang ditentukan.
offset(num) Mengembalikan DataFrame baru dengan melewati baris n pertama.

Transformasi tingkat lanjut

Metode Deskripsi
transform(func, *args, **kwargs) Mengembalikan DataFrame baru. Sintaksis ringkas untuk menautkan transformasi kustom.

Metode konversi

Metode Deskripsi
toPandas() Mengembalikan konten DataFrame ini sebagai panda Pandas. DataFrame.
toArrow() Mengembalikan konten DataFrame ini sebagai PyArrow pyarrow. Meja.
pandas_api(index_col) Mengonversi DataFrame yang ada menjadi pandas-on-Spark DataFrame.
mapInPandas(func, schema, barrier, profile) Memetakan iterator batch dalam DataFrame saat ini menggunakan fungsi asli Python.
mapInArrow(func, schema, barrier, profile) Memetakan iterator batch dalam DataFrame saat ini menggunakan fungsi asli Python yang dilakukan pada pyarrow. RecordBatch.

Penulisan data

Metode Deskripsi
writeTo(table) Buat penyusun konfigurasi tulis untuk sumber v2.
mergeInto(table, condition) Menggabungkan serangkaian pembaruan, penyisipan, dan penghapusan berdasarkan tabel sumber ke dalam tabel target.

Perbandingan DataFrame

Metode Deskripsi
sameSemantics(other) Mengembalikan True saat kueri logis merencanakan di dalam kedua DataFrames sama.
semanticHash() Mengembalikan kode hash dari rencana kueri logis terhadap DataFrame ini.

Metadata dan informasi file

Metode Deskripsi
inputFiles() Mengembalikan rekam jepret upaya terbaik dari file yang menyusun DataFrame ini.

Fitur SQL tingkat lanjut

Metode Deskripsi
isLocal() Mengembalikan True jika metode kumpulkan dan ambil dapat dijalankan secara lokal.
asTable() Mengonversi DataFrame menjadi objek TableArg, yang dapat digunakan sebagai argumen tabel di TVF.
scalar() Mengembalikan objek Kolom untuk Subkueri SCALAR yang berisi tepat satu baris dan satu kolom.
exists() Mengembalikan objek Kolom untuk Subkueri EXISTS.

Examples

Operasi DataFrame Dasar

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

Agregasi dan pengelompokan

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

Joins

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

Transformasi kompleks

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