Wpis z mikrobloga

  • 1
Mam kilka plików CSV z tabelą w formacie: nazwa produktu, ilość.
Jak zsumować ilość konkretnych produktów z tych wszystkich plików w jedno?

Haczyk jest taki, że nie w każdym pliku są wszystkie produkty, więc proste sortowanie i sumowanie odpowiadających sobie komórek nie przejdzie. Trzeba albo posortować je w ten sposób, aby wiersze sobie odpowiadały (czyli żeby były puste wiersze jeżeli w danym pliku nie ma tego produktu), albo zrobić sumowanie na podstawie nazwy. Tylko jak?

#excel #pytanie #pytaniedoeksperta i może #programowanie w jakimś #matlab czy #python
  • 10
  • Odpowiedz
@Gumaa: nie możesz zrobić po prostu zmergować tego w jeden plik i zrobić na tym tabeli przestawnej? Do Excela możesz sciagnac Power Query i zrobić tam grupowanie/tabelę zagregowaną.
  • Odpowiedz
@Gumaa: Jak ogarniasz Pytonga to tak na odwal się możesz po prostu zrobić dict, w którym klucze to nazwy danych produktów. Zaczynasz od pustego dicta, potem przechodzisz do czytania pliku. Z każdej linii z pliku czytujesz nazwę i wartość. Następnie robisz coś w ten deseń:
If name in dict.keys():
dict[name] += value
else:
dict[name] = value

gdzie name to nazwa produktu, a value to jego ilość, obie wartości wczytane z pliku.
  • Odpowiedz
@zxdrtwsdfv: Pytonga to znam na poziomie hello world, miałem nadzieję, że ktoś kiedyś już zrobił taki skrypcik ( ͡° ͜ʖ ͡°)

@madry_i_mieciutki: hmmm, wygląda jakby efekt jest taki, o jaki mi chodzi, jednak chyba wymagałoby to przerzucenia wszystkich danych do jednego pliku?
  • Odpowiedz
@Gumaa:

# Python 2.7

import csv
from collections import Counter
from itertools import Chain
filenames = ('1.csv.', '2.csv') # itd.
c = Counter(map(tuple, chain(*[csv.reader(open(filename)) for filename in filenames])))
print c
  • Odpowiedz
@Gumaa: jak zrobisz alt + d, a potem P to otworzy ci się kreator tabel przestawnych w którym możesz zrobic tabele z kilku zakresow (arkuszy, plikow). Powinna gdzies byc szczegolowa instrukcja w necie.
  • Odpowiedz