2012-06-21 2 views
4

У меня есть файл данных, который мне нужно прочитать. Я знаю, что для чтения файлов в Python, вы должны сделать что-то вроде:Чтение данных в столбцах Python 2.7.3

file = open(fileLocaion, 'r+') 

Но я не знаю, кто делать специальный читает. Данные у меня есть в столбцах. Значения x в одном столбце и y значения в другом с заголовками в верхней части. Данные (мой текстовый файл a.txt) выглядит

Charge (1x), Ch A, Run #1 
Time (s) Charge (1x) (µC) 
0.0000 0.021 
0.1000 0.021 
0.2000 0.021 
0.3000 0.021 
0.4000 0.021 
0.5000 0.021 
0.6000 0.021 

Так первое значение времени 0.0000 и первое значение заряда 0.021. Я хочу, чтобы иметь возможность взять это в Python и использовать matplotlib, чтобы построить его. Но мне трудно понять, как читать эти данные.

+0

Стоит отметить, что вы должны попытаться использовать [ 'with' заявление] (http://preshing.com/20110920/the-python-with-statement-by-example) при открытии файлов в Python. Это и более читаемо, и удаляет возможность того, что файл остается незамкнутым (даже когда происходят исключения). –

ответ

8

Если вы собираетесь быть черчения его с Matplotlib, вероятно, самое простое, что нужно сделать, это использовать numpy.loadtxt[docs], потому что вы будете иметь NumPy установлен в любом случае:

>>> import numpy 
>>> d = numpy.loadtxt("mdat.txt", skiprows=2) 
>>> d 
array([[ 0. , 0.021], 
     [ 0.1 , 0.021], 
     [ 0.2 , 0.021], 
     [ 0.3 , 0.021], 
     [ 0.4 , 0.021], 
     [ 0.5 , 0.021], 
     [ 0.6 , 0.021]]) 

Обратите внимание, что я должен был добавить skiprows=2 здесь, чтобы пропустить заголовок. Тогда времена d[:,0] и заряды d[:,1], или вы можете получить их в явном виде с loadtxt:

>>> times, charges = numpy.loadtxt("mdat.txt", skiprows=2, unpack=True) 
>>> times 
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6]) 
>>> charges 
array([ 0.021, 0.021, 0.021, 0.021, 0.021, 0.021, 0.021]) 
4
with open('data2.txt') as f: 
    f=[x.strip() for x in f if x.strip()] 
    data=[tuple(map(float,x.split())) for x in f[2:]] 
    charges=[x[1] for x in data] 
    times=[x[0] for x in data] 
    print('times',times) 
    print('charges',charges) 

в настоящее время расходы и время содержат:

times [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6] 
charges [0.021, 0.021, 0.021, 0.021, 0.021, 0.021, 0.021] 
Смежные вопросы