Middle
Hoe krijg je de leeftijd in bins op Spark op basis van geboortedatum op een bepaalde datum?
sobes.tech AI
Antwoord van AI
In Apache Spark, om de leeftijd in bins te krijgen op basis van de geboortedatum op een bepaalde datum, kun je de volgende stappen volgen:
- Bereken de leeftijd in jaren door de geboortedatum af te trekken van de gegeven datum.
- Definieer de grenzen van de bins (bijvoorbeeld 0-10, 11-20, 21-30, enzovoort).
- Gebruik de functie
whenofbucketizerom de leeftijd over de bins te verdelen.
Voorbeeld in 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"])
# Referentiedatum voor leeftijdsberekening
reference_date = F.lit("2024-06-01")
# Converteer strings naar datums
df = df.withColumn("birth_date", F.to_date("birth_date"))
# Bereken de leeftijd in jaren
df = df.withColumn(
"age",
F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)
# Definieer de leeftijds-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()
Het resultaat is dat in de kolom age_bin de index van de bin wordt weergegeven waarin de leeftijd valt. Deze indices kunnen ook worden gekoppeld aan leesbare labels.