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, 0.3.3.8, 0.3.3.9, 0.3.4.0, 0.3.4.1, 0.3.5.0, 0.4.0.0, 0.4.0.2, 0.4.0.3, 0.4.0.4, 0.4.0.5, 0.4.0.6, 0.4.0.7, 0.4.0.8
Change log CHANGELOG.md
Dependencies aeson (>=0.11.0.0 && <3), 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), cassava (>=0.1 && <1), containers (>=0.6.7 && <0.9), dataframe (>=0.4 && <0.5), directory (>=1.3.0.0 && <2), filepath (>=1.4 && <2), granite (==0.3.0.5), hashable (>=1.2 && <2), mmap (>=0.5.8 && <0.6), ollama-haskell (>=0.1 && <1), parallel (>=3.2.2.0 && <5), process (>=1.6 && <1.7), random (>=1.3 && <2), regex-tdfa (>=1.3.0 && <2), scientific (>=0.3.1 && <0.4), snappy-hs (>=0.1 && <0.2), template-haskell (>=2.0 && <3), text (>=2.0 && <3), time (>=1.12 && <2), unordered-containers (>=0.1 && <1), vector (>=0.13 && <0.14), vector-algorithms (>=0.9 && <0.10), zlib (>=0.5 && <1), 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
Uploaded by mchav at 2026-01-18T22:11:13Z
Category Data
Bug tracker https://github.com/mchav/dataframe/issues
Source repo head: git clone https://github.com/mchav/dataframe
Distributions Stackage:0.4.0.7
Reverse Dependencies 3 direct, 0 indirect [details]
Executables dataframe, synthesis, dataframe-benchmark-example
Downloads 421 total (139 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2026-01-18 [all 1 reports]

Readme for dataframe-0.4.0.8

[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

See the Quick Start guide for setup and installation instructions.

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