2013-10-10 9 views
6

मैं डेटा लिखना चाहता हूं कि मुझे एक सीएसवी फ़ाइल में हिस्टोग्राम बनाना है। मेरे पास मेरी 'डिब्बे' सूची है और मेरे पास मेरी 'आवृत्तियों' सूची है। क्या कोई मुझे अपने संबंधित कॉलम में सीएसवी में लिखने में कुछ मदद दे सकता है?सीएसवी में दो सूचियों से डेटा को कॉलम में कैसे लिखें?

पहले कॉलम और दूसरे कॉलम में आवृत्ति में यानी डिब्बे

+1

अब तक आप क्या प्रयास कर रहे हैं? –

+0

क्या के लिए ऊपर रखा गया? –

+0

डिब्बे और आवृत्तियों सूचियों में संख्या किस प्रकार का डेटा है (संख्याएं, तार, सूचियां, शब्दकोश, कक्षाओं के उदाहरण इत्यादि)? आपके प्रश्नों में आपके द्वारा डाले गए अधिक विवरणों के बेहतर जवाब मिलेंगे। – martineau

उत्तर

12

यह उदाहरण izip (zip के बजाय) का उपयोग करता है एक नई सूची बनाने और स्मृति में रखने के लिए होने से बचने के लिए। यह Python's built in csv module का भी उपयोग करता है, जो उचित भागने को सुनिश्चित करता है। एक अतिरिक्त बोनस के रूप में यह किसी भी लूप का उपयोग करने से बचाता है, इसलिए कोड छोटा और संक्षिप्त है।

import csv 
from itertools import izip 

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

सहमत हुए, धन्यवाद, यह बहुत अच्छा काम करता है। मैं भविष्य में प्रश्न में और अधिक विस्तार करने की कोशिश करूंगा, अंत में मैं देख सकता हूं कि यह कितना अस्पष्ट है। –

2

आप ज़िप() http://docs.python.org/2/library/functions.html#zip

कुछ की तरह उपयोग करना चाहिए:

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

चूंकि उसने हमें बिन लेबल की तरह दिखने के बारे में कुछ नहीं बताया है, इसलिए मैं निश्चित रूप से यहां 'csv' का उपयोग करना चाहता हूं। अन्यथा, एक बिन जैसे "ए = 0-10, बी = 0-10" 'दो कॉलम के रूप में समाप्त हो जाएगा। – abarnert

+0

@abarnert: – Pixou

3

हम्म, मैं कुछ याद आ रही है? यह बिल्कुल स्पष्ट लगता है:

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() 
संबंधित मुद्दे