2016-07-07 1 views
0

Прощай, я студент!Экспорт результатов Python в CSV

Я не могу экспортировать результаты следующего кода в CSV. Для каждого цикла (флип для монет) мне нужно экспортировать результат в CSV, называемый RESULTS.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, упомянутого в статьях, которые я читал. Большое спасибо. Это очень упростило мой код и научило меня нескольким вещам. Cheers – Tucker

+0

Также хотелось бы упомянуть, что ваша версия, кажется, намного быстрее при фактическом переводе монет. Я могу сделать 1 000 000 флипов очень быстро. Еще раз спасибо за понимание и новые инструменты для меня, чтобы учиться. – Tucker

+0

Тебе больше всего нравится :). Numpy действительно быстрый зверь на самом деле LOL. – 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