RecordDict#

class pypillometry.RecordDict(data=None, index_names=None)[source]#

Bases: dict

A dict of records that is displayed as a table.

The keys name the rows: key -> record (one level, e.g. dataset name -> its properties) or key -> key -> record (two levels, e.g. channel -> layer -> statistics). A record is a dict of values (the columns of its row). It is used like any nested dict (stats["left_pupil"]["blink"]["n"]); only its display differs: in notebooks and with print(), it is shown as a pandas.DataFrame with one row per record (to_pandas()).

Parameters:
  • data (dict, optional) – the records

  • index_names (tuple of str, optional) – names of the key levels in the table (e.g., ("channel", "layer"))

Examples

>>> import pypillometry as pp
>>> r = pp.RecordDict({"left_pupil": {"blink": {"n": 14}, "masked": {"n": 0}}},
...                   index_names=("channel", "layer"))
>>> r["left_pupil"]["blink"]["n"]
14
>>> print(r)
                   n
channel    layer    
left_pupil blink   14
           masked   0

Methods

clear

Remove all items from the dict.

copy

Return a shallow copy of the dict.

fromkeys

Create a new dictionary with keys from iterable and values set to value.

get

Return the value for key if key is in the dictionary, else default.

items

Return a set-like object providing a view on the dict's items.

keys

Return a set-like object providing a view on the dict's keys.

pop

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem

Remove and return a (key, value) pair as a 2-tuple.

setdefault

Insert key with a value of default if key is not in the dictionary.

to_pandas

The records as a pandas.DataFrame, one row per record.

update

If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values

Return an object providing a view on the dict's values.

Details

classmethod fromkeys(iterable, value=None, /)#

Create a new dictionary with keys from iterable and values set to value.

clear(/)#

Remove all items from the dict.

copy(/)#

Return a shallow copy of the dict.

get(key, default=None, /)#

Return the value for key if key is in the dictionary, else default.

items(/)#

Return a set-like object providing a view on the dict’s items.

keys(/)#

Return a set-like object providing a view on the dict’s keys.

pop(key, default=<unrepresentable>, /)#

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem(/)#

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault(key, default=None, /)#

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

to_pandas()[source]#

The records as a pandas.DataFrame, one row per record.

Return type:

pandas.DataFrame

Returns:

indexed by the keys (a MultiIndex for two levels of keys)

update([E, ]**F) → None.  Update D from mapping/iterable E and F.#

If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values(/)#

Return an object providing a view on the dict’s values.