Ableitung von Perzentil der Verwendung von Spark-Daten-frame und GroupBy in python
Ich habe eine Spark-dataframe die Date
, Group
und Price
Spalten.
Ich versuche zur Ableitung der percentile(0.6)
für die Price
Spalte,
dataframe in Python. Außerdem muss ich hinzufügen, um die Ausgabe in einer neuen Spalte.
Habe ich versucht den folgenden code:
perudf = udf(lambda x: x.quantile(.6))
df1 = df.withColumn("Percentile", df.groupBy("group").agg("group"),perudf('price'))
aber es wirft die folgende Fehlermeldung:
assert all(isinstance(c, Column) for c in exprs), "all exprs should be Column"
AssertionError: all exprs should be Column
InformationsquelleAutor Somashekar Muniyappa | 2016-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie "percentile_approx" mithilfe von sql. Es ist schwierig zu erstellen UDF in pyspark.
Unter diesem link für weitere details: https://mail-archives.apache.org/mod_mbox/spark-user/201510.mbox/%3CCALte62wQV68D6J87EVq6AD5-T3D0F3fHjuzs+1C5aCHOUUQS8w@mail.gmail.com%3E
from pyspark import SparkContext, HiveContext; sc = SparkContext(); hiveContext = HiveContext(sc); hiveContext.registerDataFrameAsTable(df, "df"); hiveContext.sql("SELECT percentile(price, 0.75) FROM df");
um den Preis zu bekommen, bei der 75% - Perzentil.InformationsquelleAutor user3343061
Weiß ich eine Lösung, um die Perzentil jede Zeile mit RDDs. Zuerst konvertieren Sie Ihre RDD, um einen DataFrame:
Dann können Sie berechnen jede Zeile Perzentil:
Und schließlich wieder zurück konvertieren in ein DataFrame mit:
Um die Zeile mit dem nächsten Perzentil 0,6, könnte man etwas wie das hier tun:
InformationsquelleAutor Galen Long
Können Sie window-Funktionen, einfach definieren, eine aggregation Fenster (alle Daten in Ihrem Fall) und dann filter-Perzentil-Wert:
percent_rank
ist in pyspark.sql.FunktionenWenn Sie möchten, können Sie verwenden die SQL-Schnittstelle in diesem databricks post
InformationsquelleAutor bigonazzi