dataframe logo

hackage Latest Release C/I

User guide | Discord

# DataFrame A fast, safe, and intuitive DataFrame library. ## Why use this DataFrame library? * Encourages concise, declarative, and composable data pipelines. * Static typing makes code easier to reason about and catches many bugs at compile time—before your code ever runs. * Delivers high performance thanks to Haskell’s optimizing compiler and efficient memory model. * Designed for interactivity: expressive syntax, helpful error messages, and sensible defaults. * Works seamlessly in both command-line and notebook environments—great for exploration and scripting alike. ## Features - Type-safe column operations with compile-time guarantees - Familiar, approachable API designed to feel easy coming from other languages. - Interactive REPL for data exploration and plotting. ## Quick start Browse through some examples in [binder](https://mybinder.org/v2/gh/mchav/ihaskell-dataframe/HEAD) or in our [playground](https://ulwazi-exh9dbh2exbzgbc9.westus-01.azurewebsites.net/lab). ## Install ### Cabal To use the CLI tool: ```bash $ cabal update $ cabal install dataframe $ dataframe ``` As a prodject dependency add `dataframe` to your .cabal file. ### Stack (in stack.yaml add to extra-deps if needed) Add to your package.yaml dependencies: ```yaml dependencies: - dataframe ``` Or manually to stack.yaml extra-deps if needed. ## Example ```haskell dataframe> df = D.fromNamedColumns [("product_id", D.fromList [1,1,2,2,3,3]), ("sales", D.fromList [100,120,50,20,40,30])] dataframe> df ------------------ product_id | sales -----------|------ Int | Int -----------|------ 1 | 100 1 | 120 2 | 50 2 | 20 3 | 40 3 | 30 dataframe> :exposeColumns df "product_id :: Expr Int" "sales :: Expr Int" dataframe> df |> D.groupBy [F.name product_id] |> D.aggregate [F.sum sales `as` "total_sales"] ------------------------ product_id | total_sales -----------|------------ Int | Int -----------|------------ 1 | 220 2 | 70 3 | 70 ``` ## Documentation * 📚 User guide: https://dataframe.readthedocs.io/en/latest/ * 📖 API reference: https://hackage.haskell.org/package/dataframe/docs/DataFrame.html