crandas.ctypes¶
- exception crandas.ctypes.ColumnBoundDerivedWarning(colname, coltype)¶
Bases:
Warning
- class crandas.ctypes.Ctype¶
Bases:
object
Ctypes, or “crandas types”, are an extensible client-side type system that allow the user to provide additional type information beyond pandas/numpy dtypes.
Ctypes are represented as class instances, e.g. NullableInteger(). Some classes take arguments in their initialization, like Varchar(max_length=12). Each Ctype also has a string representation, like “varchar[12]”. Either of these can be specified to the ctype kwarg of cd.DataFrame, so e.g. >>> cd.DataFrame({“ints”: [1, 2, 3], “strings”: [“a”, “bb”, “ccc”]},
ctype={“ints”: NullableInteger(), “strings”: “varchar[5]”})
If a manual ctype is not specified, the appropriate ctype is automatically deduced using the pandas dtype. For details of how this is implemented, see the Ctype.for_series() classmethod.
- The JSON representation of a ctype is of the following form:
- type (str)
column type (
b
: bytes |fp
: fixed point |f
: fractional |i
: integer |s
: string |d
: date)- elements_per_value (int)
number of elements in the column
- nullable (bool)
boolean determining if the column is nullable
Additionally it may contain a
constraints
field in the form of aValidation
.
Internal workings¶
Each class (so e.g. Integer) has CtypeBase as a base class, and is decorated with @Ctype.register, which registers the Ctype’s .dtype, .ctype properties so that the Ctype class may perform automatic ctype inference on pandas.Series objects.
- classmethod for_series(series, ctype_spec=None)¶
Determine the Ctype for a pandas.Series object, based on the specified ctype_str, the series.dtype, the ctype_cls.from_series() function, or the value_type (i.e. the type of next(iter(series))), in that order.
- classmethod from_spec(ctype_spec)¶
Determine the Ctype based on a specification, that is a ctype object (i.e. an instance of a subclass of CtypeBase), a string, or a Python type.