У меня есть набор данных (файлы CSV) в следующем формате 3 столбца:
A, B, C
3277,4733,54.1
3278,4741,51.0
3278,4750,28.4
3278,4768,36.0
3278,4776,50.1
3278,4784,51.4
3279,4792,82.6
3279,4806,78.2
3279,4814,36.4
И мне нужно получить таблицу непредвиденных обстоятельств с тремя путями, например: (извините, это не выглядитсовершенно хорошо)
A /B 4733 4741 4750 4768 4776 4784 4792 4806 4814
3277 C 54.1
3278 51 28.4 36 50.1 51.4
3279 82.6 78.2 36.4
Аналогично "сводной таблице" Excel, пилоту данных OpenOffice или R "таблице (x, y, z)"
Проблема заключается в том, что мой набор данныхОГРОМНО (более 500 000 строк, около 400 различных факторов в A и B. (Ограничения OOo, MSO и R не позволяют этого достичь)
Я уверен, что для создания такой таблицы можно использовать скрипт Pythonи A, и B являются числами (но могут рассматриваться как строки).
Кто-нибудь имел дело с этим? (псевдокод или код на C или Java также приветствуется ... но я предпочитаю python, поскольку он быстреереализовать:)
Редактировать: Почти есть, благодаря Джону Мачину. Следующий скрипт Python почти обеспечивает то, что я ищу, однако, при написанииВ выходном файле я вижу, что значения в «заголовках» я пишу (взято том первый ряд) не соответствуют другим строкам.
from collections import defaultdict as dd
d = dd(lambda: dd(float))
input = open("input.txt")
output = open("output.txt","w")
while 1:
line = input.readline()
if not line:
break
line = line.strip('\n').strip('\r')
splitLine = line.split(',')
if (len(splitLine) <3):
break
d[splitLine[0]][splitLine[1]] = splitLine[2]
output.write("\t")
for k,v in d.items()[0][1].items():
output.write(str(k)+"\t")
output.write("\n")
for k,v in d.items():
output.write(k+"\t")
for k2,v2 in v.items():
output.write(str(v2)+"\t")
output.write("\n")