# Columns and rows

`agate.MappedSequence` | A generic container for immutable data that can be accessed either by numeric index or by key.
`agate.Column` | Proxy access to column data.
`agate.Row` | A row of data.

class `agate.``MappedSequence`(values, keys=None)

  Bases: `collections.abc.Sequence`

  A generic container for immutable data that can be accessed either by numeric index or by key. This is similar to an `collections.OrderedDict` except that the keys are optional and iteration over it returns the values instead of keys.

  This is the base class for both `Column` and `Row`.

  Parameters:

  - values – A sequence of values.
  - keys – A sequence of keys.

  `dict`()

    Retrieve the contents of this sequence as an `collections.OrderedDict`.

  `get`(key, default=None)

    Equivalent to `collections.OrderedDict.get()`.

  `items`()

    Equivalent to `collections.OrderedDict.items()`.

  `keys`()

    Equivalent to `collections.OrderedDict.keys()`.

  `values`()

    Equivalent to `collections.OrderedDict.values()`.

class `agate.``Column`(index, name, data_type, rows, row_names=None)

  Bases: `agate.mapped_sequence.MappedSequence`

  Proxy access to column data. Instances of `Column` should not be constructed directly. They are created by `Table` instances and are unique to them.

  Columns are implemented as subclass of `MappedSequence`. They deviate from the underlying implementation in that loading of their data is deferred until it is needed.

  Parameters:

  - name – The name of this column.
  - data_type – An instance of `DataType`.
  - rows – A `MappedSequence` that contains the `Row` instances containing the data for this column.
  - row_names – An optional list of row names (keys) for this column.

  `data_type`

    This column’s data type.

  `index`

    This column’s index.

  `name`

    This column’s name.

  `values`()

    Get the values in this column, as a tuple.

  `values_distinct`()

    Get the distinct values in this column, as a tuple.

  `values_sorted`()

    Get the values in this column sorted.

  `values_without_nulls`()

    Get the values in this column with any null values removed.

  `values_without_nulls_sorted`()

    Get the values in this column with any null values removed and sorted.

class `agate.``Row`(values, keys=None)

  Bases: `agate.mapped_sequence.MappedSequence`

  A row of data. Values within a row can be accessed by column name or column index. Row are immutable and may be shared between `Table` instances.

  Currently row instances are a no-op subclass of `MappedSequence`. They are being maintained in this fashion in order to support future features.