Prijava
Korisničko ime:

Lozinka:

remember me

Zaboravili lozinku?

Registrirajte se!
Glavni menu
Potraga
Tko je online
8 korisnika je online (6 korisnika cita Diskusije)

članovi: 0
Gosti: 8

više...
HULK-Diskusije - Programiranje - grupiranje csv , python ili perl
Chat WIKI Kontakt
HULK Forum Index
   Programiranje
  grupiranje csv , python ili perl

Pregledavanje ovog Threada:   1 Anonimnih Korisnika

 

 Dno   Prethodna tema   Sljedeca tema
  •  Ocjena Threada
      Ocijenite ovaj Thread
      Izvrsno
      Dobro
      Prosjecno
      Loše
      Užasno
Pošiljatelj Thread
  •  bilbdonraa
      bilbdonraa
grupiranje csv , python ili perl
#1
Upravo došao
Pridružen: 06.03.2009
Od
Poruke: 10
Level : 2
HP : 0 / 25
MP : 3 / 770
EXP : 0
Grupa:
Registered Users
Offline
ehlo :)

u python-u ili perl - u

imam jedan 'problemcic' .
nikako da provirim izvan kutije , ne znam ni sto bih vise upisivao u google
imam .csv dokument tipa:
A;B;C
------
1;trt;2
1;rt;2
1;rtd;2
1;ert;2
2;xd;1
2;xd;1
2;xd;1
3;45;3
3;46;3
3;tz;3


kako grupirati sve sto u koloni A ima vrijednost '1' i zbrojiti pripadajuci C ? tako da npr za 1 dobijem krajnu vrijednost 8
1=8
2=3
3=9

rjesenje koje sada imam je -> prolazim kroz linije i na osnovi prve kolone radim textualne dokumente u koje sam onda >> upisivao vriijednost te onda tu vrijednost ocitao iz tog textualnog dokumenta i zbrojio.
mislim da je to 'malo' zbrljano rjesenje pogotovo sto moram proci kroz , pa puno linija.
kako to 'potrpati' u memoriju i onda raditi sa tim ?
unaprijed hvala
Postano : 07.09.2010 10:20:02
Izradi PDF od ove poruke Ispis
Vrh
  •  ravilov
      ravilov
Re: grupiranje csv , python ili perl
#2
Padawan
Pridružen: 31.12.2004
Od Bjelovar
Poruke: 87
Level : 8
HP : 0 / 182
MP : 29 / 7847
EXP : 29
Grupa:
Webmasters
Registered Users
Offline
Radiš... dokumente?!
Kao, baš prave fizičke datoteke na disku?
Šališ se?
A i jedan i drugi jezik imaju toliko mnogo tako divnih memorijskih struktura...

Evo otprilike kako bi to ja, u perl-u:
#! /usr/bin/perl -w
use strict;
# preskoci prva dva retka
my $dummy = <STDIN>;
$dummy = <STDIN>;
my %data = ();
while (<STDIN>) {
    s{[\r\n]+$}{}g;
    my ($a, $b, $c) = split(/;/, $_);
    $data{$a} = 0 unless defined($data{$a});
    $data{$a} += $c;
}
foreach (sort(keys(%data))) {
    print STDOUT sprintf('%d=%d', $_, $data{$_})."\n";
}


BTW, prilično mi je nevjerojatno da za nešto ovako banalno i trivijalno nema već barem 1000 tutoriala i objašnjenja na netu...
_________________
--
Robert
Postano : 07.09.2010 10:34:38
Izradi PDF od ove poruke Ispis
Vrh
Re: grupiranje csv , python ili perl
#3
Padawan
Pridružen: 03.01.2005
Od Pazin
Poruke: 90
Level : 8
HP : 0 / 186
MP : 30 / 8023
EXP : 46
Grupa:
Webmasters
Registered Users
HULK
UrednikNovosti
UrednikRecenzija
UrednikLinkova
ModeratoriForuma
UrednikSekcija
UrednikBlogova
UrednikDogadjanja
UrednikDokumenata
UrednikKomentara
Offline
Evo ti varijanta rješenja s AWK onelinerom:

awk 'BEGIN {FS=";"} {if(NR>2) t[$1]+=$3} END {for(x in t) print x "=" t[x]}' < podaci


...gdje je 'podaci' datoteka s podacima kakve si naveo.
Postano : 07.09.2010 10:53:26
Izradi PDF od ove poruke Ispis
Vrh
  •  bilbdonraa
      bilbdonraa
Re: grupiranje csv , python ili perl
#4
Upravo došao
Pridružen: 06.03.2009
Od
Poruke: 10
Level : 2
HP : 0 / 25
MP : 3 / 770
EXP : 0
Grupa:
Registered Users
Offline
hvala na odgovorima .
do sada sam dosao do tu
ali cini se da je ovo ok samo za pronalazenje duplikata :), barem nesto.
nikako ne mogu shvatiti kako ocitati broj i zbrojiti ga sa sljedećim.
kada pogledam ovu liniju u AWK-u place mi se, tako je jednostavno i djelotvorno, savrseno ,ali ne mogu to prevesti u python :(
gdje grijesim?

u ovom slucaju radi se o 'text' dokumetu tipa
1
2
3
4
5
6
7
8


#!/usr/bin/python

fh = open("text")
lista= fh.readlines()
fh.close
lines = [lines[:-1] for lines in lista]
lines2=[int(i) for i in lines]

###############################
total=0
y=''
for x in lines2:
	if x==y:
		print y
		total += x
	y=x
print total
Postano : 09.09.2010 5:04:36
Izradi PDF od ove poruke Ispis
Vrh
  •  ravilov
      ravilov
Re: grupiranje csv , python ili perl
#5
Padawan
Pridružen: 31.12.2004
Od Bjelovar
Poruke: 87
Level : 8
HP : 0 / 182
MP : 29 / 7847
EXP : 29
Grupa:
Webmasters
Registered Users
Offline
Još uvijek tvrdim da postoji čitava armada tutoriala za ovo, po cijelom internetu... Kreni odavde: http://www.google.com/

Anyway, ja ti čini mi se više ne mogu pomoći, jerbo ne govorim python baš tečno...
_________________
--
Robert
Postano : 09.09.2010 17:02:05
Izradi PDF od ove poruke Ispis
Vrh
Re: grupiranje csv , python ili perl
#6
Padawan
Pridružen: 03.01.2005
Od Pazin
Poruke: 90
Level : 8
HP : 0 / 186
MP : 30 / 8023
EXP : 46
Grupa:
Webmasters
Registered Users
HULK
UrednikNovosti
UrednikRecenzija
UrednikLinkova
ModeratoriForuma
UrednikSekcija
UrednikBlogova
UrednikDogadjanja
UrednikDokumenata
UrednikKomentara
Offline
Ni ja ne pričam Python dovoljno tečno, pa ti preporučam da probaš i na razmjena.org, tamo provjereno ima Pythonovaca.
Postano : 09.09.2010 17:20:27
Izradi PDF od ove poruke Ispis
Vrh
  •  bilbdonraa
      bilbdonraa
Re: grupiranje csv , python ili perl
#7
Upravo došao
Pridružen: 06.03.2009
Od
Poruke: 10
Level : 2
HP : 0 / 25
MP : 3 / 770
EXP : 0
Grupa:
Registered Users
Offline
a nesto sam kao uspio skrpati izgleda gore od frankenstein-a ali radi. mislim , vjerojatno postoji mnogo elegantnije rjesenje ali za pocetak ce i ovo biti ok.
hvala na usmjeravanju.
so long, and thanks for all the fish ;)

#!/usr/bin/python

fh = open("text")
lista= fh.readlines()
fh.close
lines = [lines[:-1] for lines in lista]
lines2=[int(i) for i in lines]

###############################
total=0
y=''
count=1
for x in lines2:
	if x==y:
		count+=1
		total=count*x
		
	else:
		count=1
		if total==0:
			2+2
		else:
			print total
		total=0
	y=x
if total==0:
	2+2
else:
	print total
Postano : 10.09.2010 3:24:11
Izradi PDF od ove poruke Ispis
Vrh
  •  ravilov
      ravilov
Re: grupiranje csv , python ili perl
#8
Padawan
Pridružen: 31.12.2004
Od Bjelovar
Poruke: 87
Level : 8
HP : 0 / 182
MP : 29 / 7847
EXP : 29
Grupa:
Webmasters
Registered Users
Offline
Savjet za sljedeći put: kad postaš kôd ovdje na forum, preporučljivo ga je staviti između [code] i [/code] tagova, onda se očuva formatiranje i sve skupa bolje izgleda.

Što se tiče tvoje skripte, najzanimljivi mi je ovaj dio:
if total==0:
	2+2


Čemu to? Ne znam baš dobro python, ali ovo "2+2" se čini totalno beskorisno i bespotrebno... Što nije bilo lakše reći "if total != 0:", bez "else"?
_________________
--
Robert
Postano : 10.09.2010 10:41:08
Izradi PDF od ove poruke Ispis
Vrh
  •  bilbdonraa
      bilbdonraa
Re: grupiranje csv , python ili perl
#9
Upravo došao
Pridružen: 06.03.2009
Od
Poruke: 10
Level : 2
HP : 0 / 25
MP : 3 / 770
EXP : 0
Grupa:
Registered Users
Offline
napokon nesto konkretno ,tako da zatvorim ovaj topic, no ako netko vidi 2+2 (tnx ravilov,ne znam sto mi bi)neka javi :)

#!/usr/bin/python
###########
file='lista2'
a = open(file)
b = a.readlines()
a.close
b.sort()
c = [c[:-1] for c in b]
d=len(b)
e=0
aak=0
tot=0
###########
grupsum = open('sortirano', 'w')
while d>e:
	bbkv=c[e].split(';')
	if bbkv[0]!='':
		intbbkv=int(bbkv[1])
		if aak and bbkv[0] != aak:
			grupsum.write(aak+'='+str(tot)+'\n')
			print aak+'='+str(tot)
			tot=0
		aak=bbkv[0]
		tot+=intbbkv
	e+=1
	if d==e:
		print aak+'='+str(tot)
		grupsum.write(aak+'='+str(tot)+'\n') 

grupsum.close() 


kljuc je
if aak and bbkv[0] != aak:
i stvarno net je prepun tutoriala za ovakve slucajeve ako znas sto trazis :)
jedan od linkova

hvala jos jednom
Postano : 12.09.2010 7:37:39
Izradi PDF od ove poruke Ispis
Vrh
 Vrh   Prethodna tema   Sljedeca tema

 


 Ne možete pokrenuti novu temu.
 Možete citati teme.
 Ne možete odgovarati na poruke.
 Ne možete uredivati svoje poruke.
 Ne možete brisati svoje poruke.
 Ne možete dodavati nove ankete.
 Ne možete glasati u anketama.
 Ne možete dodavati fileove porukama.
 Ne možete slati poruke bez odobrenja.
Copyright © 1995-2009 HULK web team. Sva prava pridržana. RSS. Engine: XOOPS