@@ -7,6 +7,7 @@ import qualified Data.Vector.Unboxed.Mutable as VUM
77
88import Control.Monad (replicateM )
99import Criterion.Main
10+ import DataFrame ((|>) )
1011import Data.Time
1112import System.Process
1213import System.Random.Stateful
@@ -55,10 +56,31 @@ pandas = do
5556 output <- readProcess " ./benchmark/dataframe_benchmark/bin/python3" [" ./benchmark/pandas/pandas_benchmark.py" ] " "
5657 putStrLn output
5758
59+ groupByHaskell :: IO ()
60+ groupByHaskell = do
61+ df <- D. readCsv " ./data/housing.csv"
62+ print $ df |> D. groupBy [" ocean_proximity" ]
63+ |> D. aggregate [(" median_house_value" , D. Minimum ), (" median_house_value" , D. Maximum )]
64+ |> D. select [" ocean_proximity" , " Minimum_median_house_value" , " Maximum_median_house_value" ]
65+
66+ groupByPolars :: IO ()
67+ groupByPolars = do
68+ output <- readProcess " ./benchmark/dataframe_benchmark/bin/python3" [" ./benchmark/polars/group_by.py" ] " "
69+ putStrLn output
70+
71+ groupByPandas :: IO ()
72+ groupByPandas = do
73+ output <- readProcess " ./benchmark/dataframe_benchmark/bin/python3" [" ./benchmark/pandas/group_by.py" ] " "
74+ putStrLn output
75+
5876main = do
5977 defaultMain [
60- bgroup " stats" [ bench " haskell" $ nfIO haskell
61- , bench " polars" $ nfIO polars
62- , bench " pandas" $ nfIO pandas
78+ bgroup " stats" [
79+ , bench " simpleStatsHaskell" $ nfIO haskell
80+ , bench " simpleStatsPandas" $ nfIO pandas
81+ , bench " simpleStatsPolars" $ nfIO polars
82+ , bench " groupByHaskell" $ nfIO groupByHaskell
83+ , bench " groupByPolars" $ nfIO groupByPolars
84+ , bench " groupByPandas" $ nfIO groupByPandas
6385 ]
6486 ]
0 commit comments