Middle
Kā Spark iegūt vecumu binās pēc dzimšanas datuma noteiktā datumā?
sobes.tech AI
Atbilde no AI
Apache Spark'da, lai iegūtu vecumu binos pēc dzimšanas datuma noteiktā datumā, varat sekot šiem soļiem:
- Aprēķiniet vecumu gados, atņemot dzimšanas datumu no norādītā datuma.
- Definējiet binu robežas (piemēram, 0-10, 11-20, 21-30 utt.).
- Izmantojiet funkciju
whenvaibucketizer, lai sadalītu vecumu binās.
PySpark piemērs:
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"])
# References datums vecuma aprēķināšanai
reference_date = F.lit("2024-06-01")
# Konvertēt virknes uz datumiem
df = df.withColumn("birth_date", F.to_date("birth_date"))
# Aprēķināt vecumu
df = df.withColumn(
"age",
F.floor(F.months_between(reference_date, F.col("birth_date")) / 12)
)
# Definēt vecuma binas
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()
Rezultātā kolonnā age_bin tiks parādīts binu indekss, kurā ietilpst vecums. Šos indeksus var arī sasaistīt ar lasāmiem marķieriem.