У меня есть фрейм данных pyspark с 3 столбцами: Violation_Location, Violation_Code и Ticket_Frequency. Однако в столбцах Violation_Code и Violation_Location есть несколько категорий (т. Е. Более 100 в каждой).
Я хотел бы получить топ-10 как Violation_Location, так и Violation_Code на основе частот билетов.
Precint = spark.sql("SELECT Violation_Location, Violation_Code, Count(*) as Ticket_Frequency from table_view2 group by Violation_Location, Violation_Code order by Ticket_Frequency desc")
Precint.show()
Violation_Location|Violation_Code|Ticket_Frequency|
+------------------+--------------+----------------+
| null| 36| 1098296|
| null| 7| 471754|
| null| 5| 248774|
| 18| 14| 132123|
| 114| 21| 84051|
| 14| 14| 83664|
| 19| 46| 82640|
| 14| 69| 69006|
Пока что мне удается только построить топ-10 Violation_Location на основе Ticket_Frequency. Любая форма помощи приветствуется, спасибо!
# plot violation based on the states the cars were registered to
precintplot = Precint.toPandas()
plt.figure(figsize=(100,200))
#remove missing rows from Violation_Location first
precintplotnomiss = precintplot.dropna(subset=['Violation_Location'])
precintplotnomiss.head(10).plot(x='Violation_Location', y='Ticket_Frequency', kind='bar')
plt.title("Violations by Precint (top 10)")
plt.xlabel('Precint')
plt.ylabel('Ticket Frequency')
plt.show()