Я работаю над проектом MapReduce и хотел улучшить вывод. Я использую файл CSV с датой на билетах, которые выдаются, и мне нужно увидеть, какие цвета машин продаются больше всего. Столбец 33 содержит информацию о цветах транспортного средства и заголовок «Цвет транспортного средства». Мой MapReduce работает, однако результат может быть лучше. Столбец 33 содержит пустые значения и множество значений, которые написаны по-разному, но означают одно и то же. Пример: WH и White, BK BLACK BLA. Мой MapReducer считает их разными цветами. Что лучше всего объединить их в один ключ.
sys_stdin = open("Parking_Violations.csv", "r")
for line in sys_stdin:
vehiclecolor = line.split(",")[33].strip()
vehiclecolor = vehiclecolor.strip("Vehicle Color")
if vehiclecolor:
issuecolor = str(vehiclecolor)
print("%s\t%s" % (issuecolor, 1))
dict_color_count = {}
for line in sys_stdin:
line = line.strip()
color, num = line.split('\t')
try:
num = int(num)
dict_color_count[color] = dict_color_count.get(color, 0) + num
except ValueError:
pass
sorted_dict_color_count = sorted(dict_color_count.items(), key=itemgetter(1), reverse=True)
for color, count in sorted_dict_color_count:
print('%s\t%s') % (color, count)
MY Result after MapReduce
BLK 35
WH 21
WHITE 20
BK 16
GRAY 14
WHT 8
BLACK 6
BLA 1