Sobes.tech
Middle

Πώς παίρνουμε την ηλικία σε μπάλες στο Spark με βάση την ημερομηνία γέννησης σε μια συγκεκριμένη ημερομηνία;

sobes.tech AI

Απάντηση από AI

Στο Apache Spark, για να λάβετε την ηλικία σε bins βάσει της ημερομηνίας γέννησης σε μια συγκεκριμένη ημερομηνία, μπορείτε να ακολουθήσετε τα εξής βήματα:

  1. Υπολογίστε την ηλικία σε χρόνια αφαιρώντας την ημερομηνία γέννησης από την δεδομένη ημερομηνία.
  2. Ορίστε τα όρια των bins (π.χ., 0-10, 11-20, 21-30 κ.λπ.).
  3. Χρησιμοποιήστε τη λειτουργία when ή bucketizer για να διανείμετε την ηλικία στα bins.

Παράδειγμα σε 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 ηλικίας
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 θα εμφανίζεται ο δείκτης του bin στο οποίο ανήκει η ηλικία. Αυτοί οι δείκτες μπορούν επίσης να συσχετιστούν με αναγνώσιμα ετικέτες.