DataFrame sınıfı

Adlandırılmış sütunlar halinde gruplandırılmış dağıtılmış bir veri koleksiyonu.

DataFrame, Spark SQL'deki ilişkisel tabloya eşdeğerdir ve SparkSession'daki çeşitli işlevler kullanılarak oluşturulabilir.

Önemli

DataFrame oluşturucu kullanılarak doğrudan oluşturulmamalıdır.

Spark Connect'i destekler

Özellikler

Mülkiyet Açıklama
sparkSession Bu DataFrame'i oluşturan SparkSession'ı döndürür.
rdd İçeriği Satır RDD'si olarak döndürür (yalnızca Klasik mod).
na Eksik değerleri işlemek için bir DataFrameNaFunctions döndürür.
stat İstatistik işlevleri için bir DataFrameStatFunctions döndürür.
write Akış dışı DataFrame'in içeriğini dış depolama alanına kaydetme arabirimi.
writeStream DataFrame akışının içeriğini dış depolama alanına kaydetme arabirimi.
schema Bu DataFrame'in şemasını StructType olarak döndürür.
dtypes Tüm sütun adlarını ve bunların veri türlerini liste olarak döndürür.
columns DataFrame'deki tüm sütunların adlarını liste olarak alır.
storageLevel DataFrame'in geçerli depolama düzeyini alın.
isStreaming Bu DataFrame geldikçe sürekli veri döndüren bir veya daha fazla kaynak içeriyorsa True döndürür.
executionInfo Sorgu yürütüldükten sonra bir ExecutionInfo nesnesi döndürür.
plot İşlevleri çizmek için bir PySparkPlotAccessor döndürür.

Methods

Veri görüntüleme ve denetleme

Yöntem Açıklama
toJSON(use_unicode) Bir DataFrame'i dize veya DataFrame'in RDD'sine dönüştürür.
printSchema(level) Şemayı ağaç biçiminde yazdırır.
explain(extended, mode) Hata ayıklama amacıyla (mantıksal ve fiziksel) planları konsola yazdırır.
show(n, truncate, vertical) DataFrame'in ilk n satırını konsola yazdırır.
collect() DataFrame'deki tüm kayıtları Satır listesi olarak döndürür.
toLocalIterator(prefetchPartitions) Bu DataFrame'deki tüm satırları içeren bir yineleyici döndürür.
take(num) İlk sayı satırlarını Satır listesi olarak döndürür.
tail(num) Son sayı satırlarını Satır listesi olarak döndürür.
head(n) İlk n satırı döndürür.
first() İlk satırı Satır olarak döndürür.
count() Bu DataFrame'deki satır sayısını döndürür.
isEmpty() DataFrame'in boş olup olmadığını denetler ve boole değeri döndürür.
describe(*cols) Sayısal ve dize sütunları için temel istatistikleri hesaplar.
summary(*statistics) Sayısal ve dize sütunları için belirtilen istatistikleri hesaplar.

Geçici görünümler

Yöntem Açıklama
createTempView(name) Bu DataFrame ile yerel bir geçici görünüm oluşturur.
createOrReplaceTempView(name) Yerel geçici görünümü bu DataFrame ile oluşturur veya değiştirir.
createGlobalTempView(name) Bu DataFrame ile genel bir geçici görünüm oluşturur.
createOrReplaceGlobalTempView(name) Verilen adı kullanarak genel bir geçici görünüm oluşturur veya değiştirir.

Seçim ve projeksiyon

Yöntem Açıklama
select(*cols) Bir ifade kümesini projeler ve yeni bir DataFrame döndürür.
selectExpr(*expr) Bir DIZI SQL ifadesi oluşturur ve yeni bir DataFrame döndürür.
filter(condition) Verilen koşulu kullanarak satırları filtreler.
where(condition) Filtre için diğer ad.
drop(*cols) Belirtilen sütunlar olmadan yeni bir DataFrame döndürür.
toDF(*cols) Yeni belirtilen sütun adlarıyla yeni bir DataFrame döndürür.
withColumn(colName, col) Bir sütun ekleyerek veya aynı ada sahip mevcut sütunu değiştirerek yeni bir DataFrame döndürür.
withColumns(*colsMap) Birden çok sütun ekleyerek veya aynı adlara sahip mevcut sütunları değiştirerek yeni bir DataFrame döndürür.
withColumnRenamed(existing, new) Mevcut bir sütunu yeniden adlandırarak yeni bir DataFrame döndürür.
withColumnsRenamed(colsMap) Birden çok sütunu yeniden adlandırarak yeni bir DataFrame döndürür.
withMetadata(columnName, metadata) Mevcut bir sütunu meta verilerle güncelleştirerek yeni bir DataFrame döndürür.
metadataColumn(colName) Mantıksal sütun adına göre bir meta veri sütunu seçer ve sütun olarak döndürür.
colRegex(colName) Bir regex olarak belirtilen sütun adına göre sütunu seçer ve Sütun olarak döndürür.

Sıralama ve sıralama

Yöntem Açıklama
sort(*cols, **kwargs) Belirtilen sütunlara göre sıralanmış yeni bir DataFrame döndürür.
orderBy(*cols, **kwargs) Sıralama için diğer ad.
sortWithinPartitions(*cols, **kwargs) Her bölümü belirtilen sütunlara göre sıralanmış yeni bir DataFrame döndürür.

Toplama ve gruplandırma

Yöntem Açıklama
groupBy(*cols) DataFrame'i belirtilen sütunlara göre gruplandırarak bunlar üzerinde toplama gerçekleştirilebilmesini sağlayın.
rollup(*cols) Belirtilen sütunları kullanarak geçerli DataFrame için çok boyutlu bir toplama oluşturun.
cube(*cols) Belirtilen sütunları kullanarak geçerli DataFrame için çok boyutlu bir küp oluşturun.
groupingSets(groupingSets, *cols) Belirtilen gruplandırma kümelerini kullanarak geçerli DataFrame için çok boyutlu toplama oluşturun.
agg(*exprs) DataFrame'in tamamında gruplar olmadan toplama (df.groupBy().agg() kısaltması).
observe(observation, *exprs) DataFrame'de gözlemlenen (adlandırılmış) ölçümleri tanımlayın.

Joins

Yöntem Açıklama
join(other, on, how) Verilen birleştirme ifadesini kullanarak başka bir DataFrame ile birleşir.
crossJoin(other) Kartezyen ürünü başka bir DataFrame ile döndürür.
lateralJoin(other, on, how) Verilen birleştirme ifadesini kullanarak başka bir DataFrame ile yanal birleşimler.

İşlemleri ayarlama

Yöntem Açıklama
union(other) Bu ve başka bir DataFrame'deki satırların birleşimini içeren yeni bir DataFrame döndürür.
unionByName(other, allowMissingColumns) Bu ve başka bir DataFrame'deki satırların birleşimini içeren yeni bir DataFrame döndürür.
intersect(other) Yalnızca bu DataFrame'de ve başka bir DataFrame'de satırlar içeren yeni bir DataFrame döndürür.
intersectAll(other) Yinelenenleri korurken hem bu DataFrame'de hem de başka bir DataFrame'de satırlar içeren yeni bir DataFrame döndürür.
subtract(other) Bu DataFrame'de satır içeren ancak başka bir DataFrame'de olmayan yeni bir DataFrame döndür.
exceptAll(other) Yinelenenleri korurken bu DataFrame'de satır içeren ancak başka bir DataFrame'de olmayan yeni bir DataFrame döndürür.

Deduplication

Yöntem Açıklama
distinct() Bu DataFrame'deki ayrı satırları içeren yeni bir DataFrame döndürür.
dropDuplicates(subset) İsteğe bağlı olarak yalnızca belirli sütunları dikkate alarak yinelenen satırların kaldırıldığı yeni bir DataFrame döndürür.
dropDuplicatesWithinWatermark(subset) Filigran içinde isteğe bağlı olarak yalnızca belirli sütunları dikkate alarak yinelenen satırların kaldırıldığı yeni bir DataFrame döndürür.

Örnekleme ve bölme

Yöntem Açıklama
sample(withReplacement, fraction, seed) Bu DataFrame'in örneklenmiş bir alt kümesini döndürür.
sampleBy(col, fractions, seed) Her katmanda verilen kesire göre değiştirme yapmadan katmanlı bir örnek döndürür.
randomSplit(weights, seed) Bu DataFrame'i sağlanan ağırlıklarla rastgele böler.

Partitioning

Yöntem Açıklama
coalesce(numPartitions) Tam olarak numPartitions bölümlerine sahip yeni bir DataFrame döndürür.
repartition(numPartitions, *cols) Verilen bölümleme ifadeleri tarafından bölümlenmiş yeni bir DataFrame döndürür.
repartitionByRange(numPartitions, *cols) Verilen bölümleme ifadeleri tarafından bölümlenmiş yeni bir DataFrame döndürür.
repartitionById(numPartitions, partitionIdCol) Verilen bölüm kimliği ifadesi tarafından bölümlenmiş yeni bir DataFrame döndürür.

Yeniden şekillendirme

Yöntem Açıklama
unpivot(ids, values, variableColumnName, valueColumnName) DataFrame'i geniş biçimden uzun biçime çıkarın.
melt(ids, values, variableColumnName, valueColumnName) Unpivot için diğer ad.
transpose(indexColumn) Bir DataFrame'i, belirtilen dizin sütunundaki değerler yeni sütunlar olacak şekilde dönüştürür.

Eksik veri işleme

Yöntem Açıklama
dropna(how, thresh, subset) Null veya NaN değerlerine sahip yeni bir DataFrame atlama satırı döndürür.
fillna(value, subset) Null değerlerin yeni değerle doldurulduğu yeni bir DataFrame döndürür.
replace(to_replace, value, subset) Bir değeri başka bir değerle değiştiren yeni bir DataFrame döndürür.

İstatistiksel işlevler

Yöntem Açıklama
approxQuantile(col, probabilities, relativeError) Bir DataFrame'in sayısal sütunlarının yaklaşık niceliklerini hesaplar.
corr(col1, col2, method) Bir DataFrame'in iki sütununun bağıntısını çift değer olarak hesaplar.
cov(col1, col2) Verilen sütunlar için adlarıyla belirtilen örnek kovaryansı hesaplayın.
crosstab(col1, col2) Verilen sütunların çift yönlü sıklık tablosunu hesaplar.
freqItems(cols, support) Büyük olasılıkla hatalı pozitif değerler içeren sütunlar için sık kullanılan öğeleri bulma.

Şema işlemleri

Yöntem Açıklama
to(schema) Her satırın belirtilen şemayla eşleşecek şekilde uzlaştırıldığı yeni bir DataFrame döndürür.
alias(alias) Diğer ad kümesine sahip yeni bir DataFrame döndürür.

Yineleme

Yöntem Açıklama
foreach(f) f işlevini bu DataFrame'in tüm Satırlarına uygular.
foreachPartition(f) f işlevini bu DataFrame'in her bölümüne uygular.

Önbelleğe alma ve kalıcılık

Yöntem Açıklama
cache() DataFrame'i varsayılan depolama düzeyiyle (MEMORY_AND_DISK_DESER) kalıcı hale getirir.
persist(storageLevel) DataFrame'in içeriğini işlemler arasında kalıcı hale getirmek için depolama düzeyini ayarlar.
unpersist(blocking) DataFrame'i kalıcı olmayan olarak işaretler ve bellekten ve diskten tüm blokları kaldırır.

Kontrol noktası oluşturma

Yöntem Açıklama
checkpoint(eager) Bu DataFrame'in denetim noktası uygulanmış bir sürümünü döndürür.
localCheckpoint(eager, storageLevel) Bu DataFrame'in yerel olarak denetlenen bir sürümünü döndürür.

Akış işlemleri

Yöntem Açıklama
withWatermark(eventTime, delayThreshold) Bu DataFrame için bir olay zamanı filigranı tanımlar.

İyileştirme ipuçları

Yöntem Açıklama
hint(name, *parameters) Geçerli DataFrame'de bazı ipuçları belirtir.

Sınırlar ve uzaklıklar

Yöntem Açıklama
limit(num) Sonuç sayısını belirtilen sayıyla sınırlar.
offset(num) İlk n satırı atlayarak yeni bir DataFrame döndürür.

Gelişmiş dönüştürmeler

Yöntem Açıklama
transform(func, *args, **kwargs) Yeni bir DataFrame döndürür. Özel dönüştürmeleri zincirleme için kısa söz dizimi.

Dönüştürme yöntemleri

Yöntem Açıklama
toPandas() Bu DataFrame'in içeriğini Pandas pandas olarak döndürür. DataFrame.
toArrow() Bu DataFrame'in içeriğini PyArrow pyarrow olarak döndürür. Tablo.
pandas_api(index_col) Mevcut DataFrame'i pandas-on-Spark DataFrame'e dönüştürür.
mapInPandas(func, schema, barrier, profile) Python yerel işlevini kullanarak geçerli DataFrame'deki bir toplu iş yineleyicisini eşler.
mapInArrow(func, schema, barrier, profile) Pyarrow üzerinde gerçekleştirilen python yerel işlevini kullanarak geçerli DataFrame'deki toplu işlemlerin yineleyicisini eşler. RecordBatch.

Veri yazımı

Yöntem Açıklama
writeTo(table) v2 kaynakları için bir yazma yapılandırma oluşturucusu oluşturun.
mergeInto(table, condition) Kaynak tabloyu temel alan bir dizi güncelleştirme, ekleme ve silmeyi hedef tabloyla birleştirir.

DataFrame karşılaştırması

Yöntem Açıklama
sameSemantics(other) Her iki DataFrame içindeki mantıksal sorgu planları eşit olduğunda True döndürür.
semanticHash() Bu DataFrame'e karşı mantıksal sorgu planının karma kodunu döndürür.

Meta veriler ve dosya bilgileri

Yöntem Açıklama
inputFiles() Bu DataFrame'i oluşturan dosyaların en iyi çaba anlık görüntüsünü döndürür.

Gelişmiş SQL özellikleri

Yöntem Açıklama
isLocal() Toplama ve alma yöntemleri yerel olarak çalıştırılabilirse True döndürür.
asTable() DataFrame'i, TVF'de tablo bağımsız değişkeni olarak kullanılabilen tableArg nesnesine dönüştürür.
scalar() Tam olarak bir satır ve bir sütun içeren bir SCALAR Alt Sorgusu için Sütun nesnesi döndürür.
exists() EXISTS Alt Sorgusu için Sütun nesnesi döndürme.

Örnekler

Temel DataFrame işlemleri

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

Toplama ve gruplandırma

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

Karmaşık dönüşümler

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