Sobes.tech
Middle

Como obter a idade em bins no Spark com base na data de nascimento numa data específica?

sobes.tech IA

Resposta da IA

No Apache Spark, para obter a idade em bins com base na data de nascimento numa data específica, pode seguir os seguintes passos:

  1. Calcular a idade em anos subtraindo a data de nascimento da data dada.
  2. Definir os limites dos bins (por exemplo, 0-10, 11-20, 21-30, etc.).
  3. Utilizar a função when ou bucketizer para distribuir a idade pelos bins.

Exemplo em 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"])

# Data de referência para cálculo da idade
reference_date = F.lit("2024-06-01")

# Converter strings para datas
df = df.withColumn("birth_date", F.to_date("birth_date"))

# Calcular a idade em anos
df = df.withColumn(
    "age",
    F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)

# Definir os bins de idade
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()

O resultado será que na coluna age_bin aparecerá o índice do bin em que a idade se enquadra. Pode também associar esses índices a etiquetas legíveis.