2016-07-07 95 views
0

請容易,我是學生!將Python結果導出爲CSV

我無法將以下代碼的結果導出到CSV中。對於每一個循環(硬幣翻轉),我需要將結果導出爲名爲RESULTS.CSV的CSV作爲新的ROW。

我嘗試了四種不同的方法發佈在StackOverflow上,但迄今爲止還沒有成功。我很難理解語法/邏輯。我討厭這個問題,總是試圖避免它,但是有誰會介意給我一個簡單的解決方案,以便我可以剖析邏輯? (而不是引用到文章中,我已經嘗試去理解他們,但我有麻煩)

版本:Python的3.5

import random 

flipcount=int(input("How many times should I flip a coin?\n###:")) 

samples = [ random.randint(1, 2) for i in range(flipcount) ] 
heads = samples.count(1) 
tails = samples.count(2) 

for s in samples: 
    msg = 'Heads' if s==1 else 'Tails' 
    print(msg) 

print ("Heads count=%d, Tails count=%d" % (heads, tails)) 

這是一次失敗的嘗試。我相信我已經飽和我對這個話題的研究並且讓我很困惑......

import random 
import csv 

flipcount=int(input("How many times should I flip a coin?\n###:")) 


samples = [ random.randint(1, 2) for i in range(flipcount) ] 
heads = samples.count(1) 
tails = samples.count(2) 
writer = csv.writer(w) 

for s in samples: 
    msg = 'Heads' if s==1 else 'Tails' 
    print(msg) 
    with open('some.csv', 'w', newline='') as f: 
     writer.writerows(msg) 

print ("Heads count=%d, Tails count=%d" % (heads, tails)) 
+0

我認爲這將是有益的張貼失敗的嘗試。另外,看看舊的stackoverflow問題,因爲這個問題並不新鮮。 – ishaan

+0

你應該發佈預期的輸出...我們不知道你想寫所有的嘗試和/或只是最後的消息... –

回答

0
import pandas as pd 
import numpy as np 
#get the flipcount 
flipcount=int(input("How many times should I flip a coin?\n###:")) 
samples = np.random.randint(0, 2, size = flipcount) 
#create a pandas dataframe 
data = pd.DataFrame(["heads" if i == 1 else "Tails" for i in samples]) 
#create a csv file 
data.to_csv("data.csv", index=False, header=False) 
+0

Whaaa!.. 。 很簡單。我沒有在我正在閱讀的文章中看到to_csv。非常感謝你。這極大地簡化了我的代碼並教會了我幾件事。 乾杯 – Tucker

+0

也想提一下,你的版本似乎在實際的硬幣翻轉速度更快。我可以很快完成1,000,000次翻轉。再次感謝我的洞察力和新工具,讓我學習。 – Tucker

+0

非常歡迎:)。 Numpy真的是一個事實上的快速野獸。 – hashcode55

0

這會奏效。現在,不是僅僅打印結果,而是將它們追加到列表'數據'中。 「數據」的每一行都會包含您的結果。然後,將列表'數據'寫入一個csv文件,該文件看起來像您所要求的。

import csv 

data = [] 
for s in samples: 
    msg = 'Heads' if s==1 else 'Tails' 
    data.append(msg) 

with open('flip_file.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerows(data) 
+3

請爲'csv.writer'添加一個導入語句,作者doesn'不瞭解圖書館。 – ishaan

+0

好的電話。只需導入csv – SAMO

+2

python 3 csv模塊需要文本模式,而不是字節模式文件+'newline ='''在https://docs.python.org/3/library/csv.html#csv.writer – Aprillion