Middle
Kaip Spark gauti amžių binų pagal gimimo datą tam tikru data?
sobes.tech AI
Atsakymas iš AI
Apache Spark'e, norint gauti amžių binuose pagal gimimo datą tam tikru data, galite sekti šiuos žingsnius:
- Apskaičiuokite amžių metais, atimant gimimo datą iš nurodytos datos.
- Nustatykite binų ribas (pvz., 0-10, 11-20, 21-30 ir kt.).
- Naudokite funkciją
whenarbabucketizer, kad paskirstytumėte amžių į binus.
PySpark pavyzdys:
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"])
# Referencinė data amžiaus skaičiavimui
reference_date = F.lit("2024-06-01")
# Konvertuoti eilutes į datas
df = df.withColumn("birth_date", F.to_date("birth_date"))
# Apskaičiuoti amžių
df = df.withColumn(
"age",
F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)
# Nustatyti amžiaus binus
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()
Rezultatas bus, kad stulpelyje age_bin bus rodomas binų indeksas, į kurį patenka amžius. Šiuos indeksus taip pat galima susieti su skaitomais žymekliais.