У меня есть очень шумные (астрономические) данные в формате csv.Его форма (815900,2) с 815k точками, дающими информацию о том, какова масса диска в определенный момент времени.Колебания довольно заметны, когда смотришь на них с близкого расстояния.Например, вот фрагмент данных, где первый столбец - это время в секундах, а второй - масса в килограммах:
40023700,2.40896E+028
40145700,2.44487E+028
40267700,2.44487E+028
40389700,2.44478E+028
40511600,1.535E+028
40633500,2.19067E+028
40755400,2.44496E+028
40877200,2.44489E+028
40999000,2.44489E+028
41120800,2.34767E+028
41242600,2.40936E+028
Таким образом, похоже, что уровень шума данных 1,53E + 028, а также, вероятно, 2,19E + 028 и 2,35E + 028 баллов.
Чтобы это исправить, я пытаюсь установить скрипт Python, который будет читать данные CSV, а затем наложить на него некоторое ограничение, чтобыесли масса, например, <2.35E + 028, она удалит всю строку, а затем создаст новый CSV-файл только с «хорошими» точками данных: </p>
40023700,2.40896E+028
40145700,2.44487E+028
40267700,2.44487E+028
40389700,2.44478E+028
40755400,2.44496E+028
40877200,2.44489E+028
40999000,2.44489E+028
41242600,2.40936E+028
После этого старого вопроса top answer от n8henrie, у меня пока есть:
import pandas as pd
import csv
# Here are the locations of my csv file of my original data and an EMPTY csv file that will contain my good, noiseless set of data
originaldata = '/Users/myname/anaconda2/originaldata.csv'
gooddata = '/Users/myname/anaconda2/gooddata.csv'
# I use pandas to read in the original data because then I can separate the columns of time as 'T' and mass as 'M'
originaldata = pd.read_csv('originaldata.csv',delimiter=',',header=None,names=['t','m'])
# Numerical values of the mass values
M = originaldata['m'].values
# Now to put a restriction in
for row in M:
new_row = []
for column in row:
if column > 2.35E+028:
new_row.append(column)
csv.writer(open(newfile,'a')).writerow(new_row)
print('\n\n')
print('After:')
print(open(newfile).read())
Однако, когда я запускаю это, я получаю эту ошибку:
TypeError: 'numpy.float64' object is not iterable
Я знаю первый столбец (время)это dtype int64, а второй столбец (масса) - это dtype float64 ... но, как новичок, я все еще не совсем уверен, что означает эта ошибка или где я ошибаюсь.Любая помощь вообще будет оценена.Заранее большое спасибо.