2016-07-07 3 views
0

제발 쉽게 가십시오, 저는 학생입니다!파이썬 결과를 CSV로 내보내기

다음 코드의 결과를 CSV로 내보낼 수 없습니다. 각 루프 (코인 플립)마다 결과를 RESULTS.CSV라는 새 CSV로 내 보내야합니다.

StackOverflow에 게시 된 약 네 가지 접근 방식을 시도했지만 지금까지 성공하지 못했습니다. 구문/논리를 이해하는 데 어려움을 겪고 있습니다. 나는 이것을 묻는 것을 싫어하고 항상 그것을 피하려고 노력한다. 그러나 누군가 내가 논리를 해부 할 수 있도록 간단한 해결책을 보여 주겠다.

버전 (보다는 이미 그들을 이해하려고 노력 등의 문서를 참조하지만 문제가 있어요) : 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

와아! 너무 간단합니다. 나는 내가 읽었던 기사에서 언급 된 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'에 대한 import 문을 추가하십시오. 도서관을 안다. – ishaan

+0

전화하세요. 그냥 CSV 가져 오기 – SAMO

+2

파이썬 3 csv 모듈은 바이트 모드가 아닌 텍스트 모드를 기대합니다. 파일 +'newline = '''https://docs.python.org/3/library/csv.html#csv.writer – Aprillion