analyze-0.1.0.0: making data science easy and safe with data frames

Safe HaskellNone
LanguageHaskell2010

Analyze.RFrame

Description

Core frame types and functions

Synopsis

Documentation

data RFrame k v Source #

In-memory row-oriented frame with columns named by k and values by v

Constructors

RFrame 

Fields

Instances

Functor (RFrame k) Source # 

Methods

fmap :: (a -> b) -> RFrame k a -> RFrame k b #

(<$) :: a -> RFrame k b -> RFrame k a #

(Eq v, Eq k) => Eq (RFrame k v) Source # 

Methods

(==) :: RFrame k v -> RFrame k v -> Bool #

(/=) :: RFrame k v -> RFrame k v -> Bool #

(Show v, Show k) => Show (RFrame k v) Source # 

Methods

showsPrec :: Int -> RFrame k v -> ShowS #

show :: RFrame k v -> String #

showList :: [RFrame k v] -> ShowS #

data RFrameUpdate k v Source #

A simpler RFrame for updates

Constructors

RFrameUpdate 

Fields

Instances

Functor (RFrameUpdate k) Source # 

Methods

fmap :: (a -> b) -> RFrameUpdate k a -> RFrameUpdate k b #

(<$) :: a -> RFrameUpdate k b -> RFrameUpdate k a #

(Eq v, Eq k) => Eq (RFrameUpdate k v) Source # 

Methods

(==) :: RFrameUpdate k v -> RFrameUpdate k v -> Bool #

(/=) :: RFrameUpdate k v -> RFrameUpdate k v -> Bool #

(Show v, Show k) => Show (RFrameUpdate k v) Source # 

type RFrameMap k v a = Vector k -> HashMap k Int -> Int -> Vector v -> a Source #

Alias for a function to be applied to each row

type RFrameFilter k v = RFrameMap k v Bool Source #

Alias for a row filter

empty :: RFrame k v Source #

An empty frame with no rows or columns

fromUpdate :: (Data k, MonadThrow m) => RFrameUpdate k v -> m (RFrame k v) Source #

Build an RFrame from an RFrameUpdate. Throws on duplicate keys.

toUpdate :: Data k => RFrame k v -> RFrameUpdate k v Source #

Build an RFrameUpdate from an RFrame

numCols :: RFrame k v -> Int Source #

Number of columns in an RFrame

numRows :: RFrame k v -> Int Source #

Number of rows in an RFrame

col :: (Data k, MonadThrow m) => k -> RFrame k v -> m (Vector v) Source #

Project to the given column

decode :: (Data k, MonadThrow m) => Decoder m k v a -> RFrame k v -> m (Vector (m a)) Source #

Decode by row. Each element of the returned vector may fail on decoding error so flatten manually or use flatDecode.

flatDecode :: (Data k, MonadThrow m) => Decoder m k v a -> RFrame k v -> m (Vector a) Source #

An auto-flattened version of decode.

filter :: Data k => RFrameFilter k v -> RFrame k v -> RFrame k v Source #

Filter an RFrame by row

update :: (Data k, MonadThrow m) => RFrameUpdate k v -> RFrame k v -> m (RFrame k v) Source #

Update row-wise, adding or replacing values per-column. Retains the existing column order, appending new columns. Throws on row length mismatch or duplicate columns in the update.

splitCols :: Data k => (k -> Bool) -> RFrame k v -> (RFrame k v, RFrame k v) Source #

Split columns in an RFrame by a predicate.

dropCols :: Data k => (k -> Bool) -> RFrame k v -> RFrame k v Source #

Drop columns in an RFrame by a predicate.

keepCols :: Data k => (k -> Bool) -> RFrame k v -> RFrame k v Source #

Keep columns in an RFrame by a predicate.

appendRows :: (Data k, MonadThrow m) => RFrame k v -> RFrame k v -> m (RFrame k v) Source #

Appends rows to an RFrame, retaining column order of the first. Throws on column mismatch.

extendCols :: (Data k, MonadThrow m) => RFrame k v -> RFrame k v -> m (RFrame k v) Source #

Appends columns to an RFrame, retaining column order of the first.

takeRows :: Int -> RFrame k v -> RFrame k v Source #

Takes first n rows of an RFrame.