2013-10-10 13 views
6

Histogram oluşturmak zorunda olduğum veriyi bir csv dosyasına yazmak istiyorum. 'Kutularım' listem var ve 'frekanslarım' listesine sahibim. Birisi onları kendi sütunlarında bir csv içine yazmak için biraz yardım edebilir mi? İkinci sütunda ilk sütunda ve sıklığındaİki listeden verileri bir csv'deki sütunlara nasıl yazılır?

yani kutuları

+1

Şimdiye kadar ne denediniz? –

+0

Ne için bıktı? –

+0

Kutu ve frekans listelerinde ne tür veriler vardır (sayılar, dizeler, listeler, sözlükler, sınıf örnekleri vb.)? Sorularınıza koyduğunuz daha fazla ayrıntıya daha iyi cevaplar alacaksınız. – martineau

cevap

12

. Ayrıca, uygun kaçış sağlayan Python's built in csv module'u kullanır. Ek bir bonus olarak, herhangi bir döngüyü kullanmaktan kaçınır, bu nedenle kod kısa ve özlüdür.

import csv 
from itertools import izip 

with open('some.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(izip(bins, frequencies)) 
+0

kabul etti, bu harika çalıştı. Gelecekte soruyu daha fazla ayrıntıya katmaya çalışacağım, o zaman ne kadar belirsiz olduğunu görebiliyorum. –

2

Eğer zip() gibi http://docs.python.org/2/library/functions.html#zip

şey kullanmalısınız:

f=open(my_filename,'w') 
for i,j in zip(bins,frequencies): 
    f.write(str(i)+","+str(j)) 
f.close() 
+1

Bin etiketlerinin neye benzediğine dair bir şey söylemediğinden, kesinlikle burada csv'yi kullanmak istiyorum. Aksi takdirde, "a = 0-10, b = 0-10" gibi bir kutu iki sütun olarak sonuçlanır. – abarnert

+0

@abarnert: – Pixou

3

Hm, ben bir şey eksik? Bu oldukça basit sesler: Bu örnek, yeni bir liste oluşturma ve hafızada tutmak zorunda kalmamak için (yerine zip arasında) izip kullanan

bins = [ 1,2,3,4,5 ] 
freq = [ 9,8,7,6,5 ] 

f = open("test.csv", "w") 

for i in xrange(len(bins)): 
    f.write("{} {}\n".format(bins[i], freq[i])) 

f.close()