Middle
Comment obtenir l'âge en bins dans Spark selon la date de naissance à une date donnée?
sobes.tech IA
Réponse de l'IA
Dans Apache Spark, pour obtenir l'âge en bins basé sur la date de naissance à une date donnée, vous pouvez suivre ces étapes:
- Calculer l'âge en années en soustrayant la date de naissance de la date donnée.
- Définir les limites des bins (par exemple, 0-10, 11-20, 21-30, etc.).
- Utiliser la fonction
whenoubucketizerpour répartir l'âge dans les bins.
Exemple en 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"])
# Date de référence pour le calcul de l'âge
reference_date = F.lit("2024-06-01")
# Convertir les chaînes en dates
df = df.withColumn("birth_date", F.to_date("birth_date"))
# Calculer l'âge en années
df = df.withColumn(
"age",
F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)
# Définir les bins d'âge
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()
Le résultat sera que la colonne age_bin contiendra l'indice du bin dans lequel tombe l'âge. Vous pouvez également associer ces indices à des étiquettes lisibles.