Esempio n. 1
0
def test_csv():
    def time_parse(value):
        return int(value)

    def value_parse(value):
        try:
            return int(value)
        except ValueError:
            return None

    filename = 'sample.csv'
    with open(filename, 'w') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(['hour', 'value'])
        writer.writerow(['10', '15'])
        writer.writerow(['11', '34'])
        writer.writerow(['12', '19'])
        writer.writerow(['13', 'nan'])
        writer.writerow(['14', '18'])
        writer.writerow(['15', 'nan'])

    ts = TimeSeries.from_csv(filename,
                             time_column=0,
                             time_transform=time_parse,
                             value_column=1,
                             value_transform=value_parse,
                             default=None)
    os.remove(filename)

    assert ts[9] is None
    assert ts[20] is None
    assert ts[13.5] is None

    histogram = ts.distribution()
    nose.tools.assert_almost_equal(histogram.mean(), (15 + 34 + 19 + 18) / 4.0)

    filename = 'sample.csv'
    with open(filename, 'w') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(['hour', 'value'])
        writer.writerow(['2000-01-01 10:00:00', '15'])
        writer.writerow(['2000-01-01 11:00:00', '34'])
        writer.writerow(['2000-01-01 12:00:00', '19'])
        writer.writerow(['2000-01-01 13:00:00', 'nan'])
        writer.writerow(['2000-01-01 14:00:00', '18'])
        writer.writerow(['2000-01-01 15:00:00', 'nan'])

    ts = TimeSeries.from_csv(filename)
    os.remove(filename)

    assert ts[datetime(2000, 1, 1, 9)] is None
    assert ts[datetime(2000, 1, 1, 10, 30)] == '15'
    assert ts[datetime(2000, 1, 1, 20)] == 'nan'
Esempio n. 2
0
    def add_annotation(self, file: os.PathLike, **kwargs):
        self.file_list.append(file)

        # setup default kwargs #
        if self.ordinal:
            kwargs.update({'value_transform': lambda cls: self.order.get(cls)})
        if not kwargs.get('time_transform', None):
            kwargs.update({'time_transform': lambda t: float(t)})
        if not kwargs.get('skip_header', None):
            kwargs.update({'skip_header': False})
        if not os.path.isfile(file):
            raise FileNotFoundError(f'File {file} not found.')
        if os.path.getsize(file):
            ts = TimeSeries.from_csv(file,
                                     **kwargs).slice(self.start_time,
                                                     self.end_time)
            meta = pd.read_csv(file, names=COLUMNS.keys())
            meta.drop(meta[meta['time'] < self.start_time].index)
            meta.drop(meta[meta['time'] > self.end_time].index)
        else:
            ts = TimeSeries()
            meta = pd.DataFrame()
        self.metadata.append(meta)
        self.series.append(ts)
        self._data = self._report()
Esempio n. 3
0
 def __init__(self, file_list):
     """
     Takes a list of csv files and spits out a behavior index
     """
     self.ts_list = list()
     self._dict = dict()
     for file in file_list:
         ts = TimeSeries.from_csv(file)
         self.ts_list.append(ts)
     self.file_list = file_list