Sobes.tech
Middle

Чӣ гуна дар Spark синну солро дар бинаҳо ба асоси санаи таввалуд дар санаи муайян гирифтан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Дар Apache Spark, барои гирифтани синну соли дар бинаҳо дар асоси санаи таввалуд дар санаи муайян, метавонед қадамҳои зеринро иҷро кунед:

  1. Синну солро дар солҳо ҳисоб кунед, ки аз санаи таввалуд аз санаи додашуда кам кунед.
  2. Маҳдудиятҳои бинаҳоро муайян кунед (масалан, 0-10, 11-20, 21-30 ва ғайра).
  3. Функсияи when ё bucketizer-ро истифода баред, то синну солро дар бинаҳо тақсим кунед.

Масалан дар PySpark:

from pyspark.sql import functions as F
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

data = [
    ("2000-05-15",),
    ("1985-10-30",),
    ("2010-01-01",)
]

df = spark.createDataFrame(data, ["birth_date"])

# Санаи истинод барои ҳисоб кардани синну сол
reference_date = F.lit("2024-06-01")

# Табдил додани сатрҳо ба санаҳо
df = df.withColumn("birth_date", F.to_date("birth_date"))

# Ҳисоб кардани синну сол дар солҳо
df = df.withColumn(
    "age",
    F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)

# Муайян кардани бинаҳои синну сол
bins = [0, 10, 20, 30, 40, 50, 60, 100]

from pyspark.ml.feature import Bucketizer

bucketizer = Bucketizer(
    splits=bins,
    inputCol="age",
    outputCol="age_bin"
)

df = bucketizer.transform(df)

df.show()

Натиҷа дар он аст, ки дар сутуни age_bin индекс бина, ки синну сол дар он қарор дорад, нишон дода мешавад. Ин индексиҳоро инчунин бо тамғаҳои хонданӣ пайваст кардан мумкин аст.