EDIT:Искаженные данные .csv временных рядов в Enthought Python и Matplotlib
Спасибо за быстрый ответ, Джонатан.
Как вы можете предложить ниже, я попытался использовать numpy.loadtxt
. К сожалению, появляется аналогичная ошибка. Выход data = numpy.loadtxt("MyData.csv", skiprows = 39, delimiter = ",")
является
Traceback (most recent call last):
File "/Users/aleksnavratil/Desktop/sandbox.py", line 23, in <module>
data = numpy.loadtxt("MyData.csv", skiprows = 39, delimiter = ",")
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/numpy/lib/npyio.py", line 805, in loadtxt
items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: could not convert string to float: ÒᆳóネÀëÐٟᄀB.AØME84ハモ
же ошибка возникает при произвольных SkipRows kwargs. Возможно, это оправдывает гипотезу о проблеме кодирования символов. Я все еще в недоумении для решения.
/EDIT
У меня есть .csv datafile, полученный с помощью научного инструмента (а CETR Universal Media Tester УМТ-2). Данные представляют собой временные ряды измерений. Файл ведет себя странно, когда я обращаюсь к нему с Python, но хорошо себя ведет при доступе через cat, Nano, TextEdit и т. Д. Это явление сохраняется в машинах Windows 7 и Snow Leopard, хотя оба используют дистрибутив Enthought Scientific Python.
Выход
f = codecs.open("MyData.csv",encoding="ascii")
data = f.xreadlines()
for line in data:
print line
является
****
?****************************************
?****************************************
ÿÿÿZ
Ðí0
þÿÿî
üÿÿð
éí0
óÿÿí
ôí0
и т.д ....
Это пахнет проблемой кодирования, так что я исследовал немного:
Выход file -i "MyData.csv"
является
MyData.csv: text/plain; charset=us-ascii
Использование модуля CharDet; выход chardetect.py "MyData.csv"
является
MyData.csv: ascii with confidence 1.0
Использование пакета Codecs, я попробовал несколько общих кодировок безрезультатно. Кроме того, я пробовал использовать Matplotlib's
csv2rec
. Выход
r = mlab.csv2rec(codecs.open("MyData.csv", 'rU',),skiprows=39, delimiter=",")
является
Traceback (most recent call last):
File "/Volumes/AVN2109/Raw Data/CETR_Plotter.py", line 40, in <module>
r = mlab.csv2rec(codecs.open("MyData.csv", 'rU',),skiprows=39, delimiter=",")
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site- packages/matplotlib/mlab.py", line 2181, in csv2rec
process_skiprows(reader)
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site- packages/matplotlib/mlab.py", line 2176, in process_skiprows
for i, row in enumerate(reader):
Error: line contains NULL byte
Это также верно и для произвольного SkipRows kwargs.
Кроме того, прибор имеет возможность выпускать в качестве выходного сигнала .txt (а также CSV). В обоих случаях поведение одинаково. Возможно, мне не хватает чего-то очевидного. Кто-нибудь знает, как убедить эти данные играть хорошо с Python?
Используя файл, на который вы ссылаетесь в своем вопросе, ответ @ jonathanrocher отлично работал для меня. Этот файл действительно тот же, с которым вы работаете? Он содержит только символы ascii. –
Ну, я чувствую себя глупо. Оказывается, инструмент иногда выводит плохие данные. Эта проблема не имела ничего общего с Python. Уоррен, спасибо за это. Извините за то, что тратишь время всех. – avn2109