dataframe: A fast, safe, and intuitive DataFrame library.

[ data, gpl, library, program ] [ Propose Tags ] [ Report a vulnerability ]

A fast, safe, and intuitive DataFrame library for exploratory data analysis.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.3.0.0, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.3.0.4, 0.3.1.1, 0.3.1.2, 0.3.2.0, 0.3.3.0, 0.3.3.1, 0.3.3.2, 0.3.3.3, 0.3.3.4, 0.3.3.5, 0.3.3.6, 0.3.3.7
Change log CHANGELOG.md
Dependencies array (>=0.5.4.0 && <0.6), attoparsec (>=0.12 && <0.15), base (>=4 && <5), bytestring (>=0.11 && <0.13), bytestring-lexing (>=0.5 && <0.6), containers (>=0.6.7 && <0.9), dataframe (>=0.3 && <0.4), directory (>=1.3.0.0 && <2), filepath (>=1.4 && <2), granite (>=0.3 && <0.4), hashable (>=1.2 && <2), mmap (>=0.5.8 && <=0.5.9), parallel (>=3.2.2.0 && <5), process (>=1.6 && <1.7), random (>=1 && <2), snappy-hs (>=0.1 && <0.2), template-haskell (>=2.0 && <3), text (>=2.0 && <3), time (>=1.12 && <2), vector (>=0.13 && <0.14), vector-algorithms (>=0.9 && <0.10), zstd (>=0.1.2.0 && <0.2) [details]
Tested with ghc ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2
License GPL-3.0-or-later
Copyright (c) 2024-2025 Michael Chavinda
Author Michael Chavinda
Maintainer mschavinda@gmail.com
Category Data
Bug tracker https://github.com/mchav/dataframe/issues
Source repo head: git clone https://github.com/mchav/dataframe
Uploaded by mchav at 2025-11-13T06:13:14Z
Distributions NixOS:0.3.3.4, Stackage:0.3.3.7
Reverse Dependencies 2 direct, 0 indirect [details]
Executables dataframe, dataframe-benchmark-example
Downloads 193 total (48 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2025-11-13 [all 1 reports]

Readme for dataframe-0.3.3.7

[back to package description]

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 or in our playground.

Install

Cabal

To use the CLI tool:

$ 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:

dependencies:
  - dataframe

Or manually to stack.yaml extra-deps if needed.

Example

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