dataframe 1.1.2.1 → 1.2.0.0
raw patch · 24 files changed
+1412/−376 lines, 24 filesdep +asyncdep +temporarydep ~dataframedep ~directoryPVP ok
version bump matches the API change (PVP)
Dependencies added: async, temporary
Dependency ranges changed: dataframe, directory
API changes (from Hackage documentation)
- DataFrame: EitherRead :: SafeReadMode
- DataFrame: FULL_OUTER :: JoinType
- DataFrame: INNER :: JoinType
- DataFrame: InferFromSample :: Int -> TypeSpec
- DataFrame: LEFT :: JoinType
- DataFrame: MaybeRead :: SafeReadMode
- DataFrame: NoHeader :: HeaderSpec
- DataFrame: NoInference :: TypeSpec
- DataFrame: NoSafeRead :: SafeReadMode
- DataFrame: ParquetReadOptions :: Maybe [Text] -> Maybe (Expr Bool) -> Maybe (Int, Int) -> Bool -> ParquetReadOptions
- DataFrame: ParseOptions :: [Text] -> Int -> SafeReadMode -> [(Text, SafeReadMode)] -> DateFormat -> ParseOptions
- DataFrame: ProvideNames :: [Text] -> HeaderSpec
- DataFrame: RIGHT :: JoinType
- DataFrame: ReadOptions :: HeaderSpec -> TypeSpec -> SafeReadMode -> [(Text, SafeReadMode)] -> String -> Char -> Maybe Int -> [Text] -> RaggedRowPolicy -> UnclosedQuotePolicy -> Bool -> ReadOptions
- DataFrame: SpecifyTypes :: [(Text, SchemaType)] -> TypeSpec -> TypeSpec
- DataFrame: UseFirstRow :: HeaderSpec
- DataFrame: [Asc] :: forall a. (Columnable a, Ord a) => Expr a -> SortOrder
- DataFrame: [Desc] :: forall a. (Columnable a, Ord a) => Expr a -> SortOrder
- DataFrame: [columnSeparator] :: ReadOptions -> Char
- DataFrame: [dateFormat] :: ReadOptions -> String
- DataFrame: [fastCsvOnRaggedRow] :: ReadOptions -> RaggedRowPolicy
- DataFrame: [fastCsvOnUnclosedQuote] :: ReadOptions -> UnclosedQuotePolicy
- DataFrame: [fastCsvTrimUnquoted] :: ReadOptions -> Bool
- DataFrame: [headerSpec] :: ReadOptions -> HeaderSpec
- DataFrame: [missingIndicators] :: ReadOptions -> [Text]
- DataFrame: [missingValues] :: ParseOptions -> [Text]
- DataFrame: [numColumns] :: ReadOptions -> Maybe Int
- DataFrame: [parseDateFormat] :: ParseOptions -> DateFormat
- DataFrame: [parseSafeOverrides] :: ParseOptions -> [(Text, SafeReadMode)]
- DataFrame: [parseSafe] :: ParseOptions -> SafeReadMode
- DataFrame: [predicate] :: ParquetReadOptions -> Maybe (Expr Bool)
- DataFrame: [rowRange] :: ParquetReadOptions -> Maybe (Int, Int)
- DataFrame: [safeColumns] :: ParquetReadOptions -> Bool
- DataFrame: [safeReadOverrides] :: ReadOptions -> [(Text, SafeReadMode)]
- DataFrame: [safeRead] :: ReadOptions -> SafeReadMode
- DataFrame: [sampleSize] :: ParseOptions -> Int
- DataFrame: [selectedColumns] :: ParquetReadOptions -> Maybe [Text]
- DataFrame: [typeSpec] :: ReadOptions -> TypeSpec
- DataFrame: aggregate :: [NamedExpr] -> GroupedDataFrame -> DataFrame
- DataFrame: apply :: (Columnable b, Columnable c) => (b -> c) -> Text -> DataFrame -> DataFrame
- DataFrame: applyAtIndex :: Columnable a => Int -> (a -> a) -> Text -> DataFrame -> DataFrame
- DataFrame: applyDouble :: Columnable b => (Double -> b) -> Text -> DataFrame -> DataFrame
- DataFrame: applyInt :: Columnable b => (Int -> b) -> Text -> DataFrame -> DataFrame
- DataFrame: applyMany :: (Columnable b, Columnable c) => (b -> c) -> [Text] -> DataFrame -> DataFrame
- DataFrame: applyWhere :: (Columnable a, Columnable b) => (a -> Bool) -> Text -> (b -> b) -> Text -> DataFrame -> DataFrame
- DataFrame: byIndexRange :: (Int, Int) -> SelectionCriteria
- DataFrame: byName :: Text -> SelectionCriteria
- DataFrame: byNameProperty :: (Text -> Bool) -> SelectionCriteria
- DataFrame: byNameRange :: (Text, Text) -> SelectionCriteria
- DataFrame: byProperty :: (Column -> Bool) -> SelectionCriteria
- DataFrame: cloneColumn :: Text -> Text -> DataFrame -> DataFrame
- DataFrame: columnAsDoubleVector :: (Columnable a, Num a) => Expr a -> DataFrame -> Either DataFrameException (Vector Double)
- DataFrame: columnAsFloatVector :: (Columnable a, Num a) => Expr a -> DataFrame -> Either DataFrameException (Vector Float)
- DataFrame: columnAsIntVector :: (Columnable a, Num a) => Expr a -> DataFrame -> Either DataFrameException (Vector Int)
- DataFrame: columnAsList :: Columnable a => Expr a -> DataFrame -> [a]
- DataFrame: columnAsUnboxedVector :: (Columnable a, Unbox a) => Expr a -> DataFrame -> Either DataFrameException (Vector a)
- DataFrame: columnAsVector :: Columnable a => Expr a -> DataFrame -> Either DataFrameException (Vector a)
- DataFrame: columnNames :: DataFrame -> [Text]
- DataFrame: correlation :: Text -> Text -> DataFrame -> Maybe Double
- DataFrame: cube :: (Int, Int) -> DataFrame -> DataFrame
- DataFrame: data Any
- DataFrame: data Column
- DataFrame: data DataFrame
- DataFrame: data Expr a
- DataFrame: data GroupedDataFrame
- DataFrame: data HeaderSpec
- DataFrame: data JoinType
- DataFrame: data ParquetReadOptions
- DataFrame: data ParseOptions
- DataFrame: data ReadOptions
- DataFrame: data SafeReadMode
- DataFrame: data SelectionCriteria
- DataFrame: data SortOrder
- DataFrame: data TypeSpec
- DataFrame: defaultParquetReadOptions :: ParquetReadOptions
- DataFrame: defaultParseOptions :: ParseOptions
- DataFrame: defaultReadOptions :: ReadOptions
- DataFrame: derive :: Columnable a => Text -> Expr a -> DataFrame -> DataFrame
- DataFrame: deriveMany :: [NamedExpr] -> DataFrame -> DataFrame
- DataFrame: deriveWithExpr :: Columnable a => Text -> Expr a -> DataFrame -> (Expr a, DataFrame)
- DataFrame: describeColumns :: DataFrame -> DataFrame
- DataFrame: dimensions :: DataFrame -> (Int, Int)
- DataFrame: distinct :: DataFrame -> DataFrame
- DataFrame: drop :: Int -> DataFrame -> DataFrame
- DataFrame: dropLast :: Int -> DataFrame -> DataFrame
- DataFrame: effectiveSafeRead :: SafeReadMode -> [(Text, SafeReadMode)] -> Text -> SafeReadMode
- DataFrame: empty :: DataFrame
- DataFrame: exclude :: [Text] -> DataFrame -> DataFrame
- DataFrame: filter :: Columnable a => Expr a -> (a -> Bool) -> DataFrame -> DataFrame
- DataFrame: filterAllJust :: DataFrame -> DataFrame
- DataFrame: filterAllNothing :: DataFrame -> DataFrame
- DataFrame: filterBy :: Columnable a => (a -> Bool) -> Expr a -> DataFrame -> DataFrame
- DataFrame: filterJust :: Text -> DataFrame -> DataFrame
- DataFrame: filterNothing :: Text -> DataFrame -> DataFrame
- DataFrame: filterWhere :: Expr Bool -> DataFrame -> DataFrame
- DataFrame: fold :: (a -> DataFrame -> DataFrame) -> [a] -> DataFrame -> DataFrame
- DataFrame: frequencies :: (Columnable a, Ord a) => Expr a -> DataFrame -> DataFrame
- DataFrame: fromAny :: Columnable a => Any -> Maybe a
- DataFrame: fromCsv :: String -> IO (Either String DataFrame)
- DataFrame: fromCsvBytes :: ByteString -> IO DataFrame
- DataFrame: fromList :: (Columnable a, ColumnifyRep (KindOf a) a) => [a] -> Column
- DataFrame: fromNamedColumns :: [(Text, Column)] -> DataFrame
- DataFrame: fromRows :: [Text] -> [[Any]] -> DataFrame
- DataFrame: fromUnboxedVector :: (Columnable a, Unbox a) => Vector a -> Column
- DataFrame: fromUnnamedColumns :: [Column] -> DataFrame
- DataFrame: fromVector :: (Columnable a, ColumnifyRep (KindOf a) a) => Vector a -> Column
- DataFrame: fullOuterJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame: genericPercentile :: (Columnable a, Ord a) => Int -> Expr a -> DataFrame -> a
- DataFrame: groupBy :: [Text] -> DataFrame -> GroupedDataFrame
- DataFrame: hasElemType :: Columnable a => Column -> Bool
- DataFrame: hasMissing :: Column -> Bool
- DataFrame: impute :: ImputeOp a => Expr a -> BaseType a -> DataFrame -> DataFrame
- DataFrame: imputeWith :: (ImputeOp a, Columnable (BaseType a)) => (Expr (BaseType a) -> Expr (BaseType a)) -> Expr a -> DataFrame -> DataFrame
- DataFrame: innerJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame: insert :: (Columnable a, Foldable t) => Text -> t a -> DataFrame -> DataFrame
- DataFrame: insertColumn :: Text -> Column -> DataFrame -> DataFrame
- DataFrame: insertUnboxedVector :: (Columnable a, Unbox a) => Text -> Vector a -> DataFrame -> DataFrame
- DataFrame: insertVector :: Columnable a => Text -> Vector a -> DataFrame -> DataFrame
- DataFrame: insertVectorWithDefault :: Columnable a => a -> Text -> Vector a -> DataFrame -> DataFrame
- DataFrame: insertWithDefault :: (Columnable a, Foldable t) => a -> Text -> t a -> DataFrame -> DataFrame
- DataFrame: interQuartileRange :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame: isNumeric :: Column -> Bool
- DataFrame: join :: JoinType -> [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame: kFolds :: RandomGen g => g -> Int -> DataFrame -> [DataFrame]
- DataFrame: leftJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame: makeSchema :: [(Text, SchemaType)] -> Schema
- DataFrame: mean :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame: meanMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> DataFrame -> Double
- DataFrame: median :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame: medianMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> DataFrame -> Double
- DataFrame: mkRandom :: (RandomGen g, Columnable a, ColumnifyRep (KindOf a) a, UniformRange a) => g -> Int -> a -> a -> Column
- DataFrame: nColumns :: DataFrame -> Int
- DataFrame: nRows :: DataFrame -> Int
- DataFrame: null :: DataFrame -> Bool
- DataFrame: parseDefaults :: ParseOptions -> DataFrame -> DataFrame
- DataFrame: percentile :: (Columnable a, Real a, Unbox a) => Int -> Expr a -> DataFrame -> Double
- DataFrame: prettyPrint :: Expr a -> String
- DataFrame: randomSplit :: RandomGen g => g -> Double -> DataFrame -> (DataFrame, DataFrame)
- DataFrame: range :: (Int, Int) -> DataFrame -> DataFrame
- DataFrame: readCsv :: FilePath -> IO DataFrame
- DataFrame: readCsvWithOpts :: ReadOptions -> FilePath -> IO DataFrame
- DataFrame: readParquet :: FilePath -> IO DataFrame
- DataFrame: readParquetFiles :: FilePath -> IO DataFrame
- DataFrame: readParquetFilesWithOpts :: ParquetReadOptions -> FilePath -> IO DataFrame
- DataFrame: readParquetWithOpts :: ParquetReadOptions -> FilePath -> IO DataFrame
- DataFrame: readSeparated :: ReadOptions -> FilePath -> IO DataFrame
- DataFrame: readTsv :: FilePath -> IO DataFrame
- DataFrame: rename :: Text -> Text -> DataFrame -> DataFrame
- DataFrame: renameMany :: [(Text, Text)] -> DataFrame -> DataFrame
- DataFrame: rightJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame: rowValue :: Expr a -> [(Text, Any)] -> Maybe a
- DataFrame: safeApply :: (Columnable b, Columnable c) => (b -> c) -> Text -> DataFrame -> Either DataFrameException DataFrame
- DataFrame: sample :: RandomGen g => g -> Double -> DataFrame -> DataFrame
- DataFrame: schemaType :: (Columnable a, Read a) => SchemaType
- DataFrame: select :: [Text] -> DataFrame -> DataFrame
- DataFrame: selectBy :: [SelectionCriteria] -> DataFrame -> DataFrame
- DataFrame: showDerivedExpressions :: DataFrame -> [NamedExpr]
- DataFrame: shuffle :: RandomGen g => g -> DataFrame -> DataFrame
- DataFrame: skewness :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame: sortBy :: [SortOrder] -> DataFrame -> DataFrame
- DataFrame: standardDeviation :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame: stratifiedSample :: forall a g. (SplittableGen g, Columnable a) => g -> Double -> Expr a -> DataFrame -> DataFrame
- DataFrame: stratifiedSplit :: forall a g. (SplittableGen g, Columnable a) => g -> Double -> Expr a -> DataFrame -> (DataFrame, DataFrame)
- DataFrame: sum :: (Columnable a, Num a) => Expr a -> DataFrame -> a
- DataFrame: summarize :: DataFrame -> DataFrame
- DataFrame: take :: Int -> DataFrame -> DataFrame
- DataFrame: takeLast :: Int -> DataFrame -> DataFrame
- DataFrame: toAny :: Columnable a => a -> Any
- DataFrame: toCsv :: DataFrame -> Text
- DataFrame: toCsv' :: DataFrame -> String
- DataFrame: toDoubleMatrix :: DataFrame -> Either DataFrameException (Vector (Vector Double))
- DataFrame: toFloatMatrix :: DataFrame -> Either DataFrameException (Vector (Vector Float))
- DataFrame: toIntMatrix :: DataFrame -> Either DataFrameException (Vector (Vector Int))
- DataFrame: toList :: Columnable a => Column -> [a]
- DataFrame: toMarkdown :: DataFrame -> Text
- DataFrame: toMarkdown' :: DataFrame -> String
- DataFrame: toRowList :: DataFrame -> [[(Text, Any)]]
- DataFrame: toRowVector :: [Text] -> DataFrame -> Vector Row
- DataFrame: toSeparated :: Char -> DataFrame -> Text
- DataFrame: toVector :: forall a v. (Vector v a, Columnable a) => Column -> Either DataFrameException (v a)
- DataFrame: type Row = Vector Any
- DataFrame: valueCounts :: (Ord a, Columnable a) => Expr a -> DataFrame -> [(a, Int)]
- DataFrame: valueProportions :: (Ord a, Columnable a) => Expr a -> DataFrame -> [(a, Double)]
- DataFrame: variance :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame: writeCsv :: FilePath -> DataFrame -> IO ()
- DataFrame: writeSeparated :: Char -> FilePath -> DataFrame -> IO ()
- DataFrame.DecisionTree: Branch :: !Expr Bool -> !Tree a -> !Tree a -> Tree a
- DataFrame.DecisionTree: CarePoint :: !Int -> !Direction -> CarePoint
- DataFrame.DecisionTree: ColumnOrdering :: Map SomeTypeRep OrdDict -> ColumnOrdering
- DataFrame.DecisionTree: GoLeft :: Direction
- DataFrame.DecisionTree: GoRight :: Direction
- DataFrame.DecisionTree: Leaf :: !a -> Tree a
- DataFrame.DecisionTree: NDouble :: !Expr Double -> NumExpr
- DataFrame.DecisionTree: NMaybeDouble :: !Expr (Maybe Double) -> NumExpr
- DataFrame.DecisionTree: SynthConfig :: Int -> Int -> [(Text, Text)] -> Double -> Bool -> Bool -> Bool -> SynthConfig
- DataFrame.DecisionTree: TreeConfig :: Int -> Int -> Int -> [Int] -> Int -> SynthConfig -> Int -> Double -> ColumnOrdering -> TreeConfig
- DataFrame.DecisionTree: [OrdDict] :: forall a. (Columnable a, Ord a) => Proxy a -> OrdDict
- DataFrame.DecisionTree: [boolExpansion] :: SynthConfig -> Int
- DataFrame.DecisionTree: [columnOrdering] :: TreeConfig -> ColumnOrdering
- DataFrame.DecisionTree: [complexityPenalty] :: SynthConfig -> Double
- DataFrame.DecisionTree: [cpCorrectDir] :: CarePoint -> !Direction
- DataFrame.DecisionTree: [cpIndex] :: CarePoint -> !Int
- DataFrame.DecisionTree: [disallowedCombinations] :: SynthConfig -> [(Text, Text)]
- DataFrame.DecisionTree: [enableArithOps] :: SynthConfig -> Bool
- DataFrame.DecisionTree: [enableCrossCols] :: SynthConfig -> Bool
- DataFrame.DecisionTree: [enableStringOps] :: SynthConfig -> Bool
- DataFrame.DecisionTree: [expressionPairs] :: TreeConfig -> Int
- DataFrame.DecisionTree: [maxExprDepth] :: SynthConfig -> Int
- DataFrame.DecisionTree: [maxTreeDepth] :: TreeConfig -> Int
- DataFrame.DecisionTree: [minLeafSize] :: TreeConfig -> Int
- DataFrame.DecisionTree: [minSamplesSplit] :: TreeConfig -> Int
- DataFrame.DecisionTree: [percentiles] :: TreeConfig -> [Int]
- DataFrame.DecisionTree: [synthConfig] :: TreeConfig -> SynthConfig
- DataFrame.DecisionTree: [taoConvergenceTol] :: TreeConfig -> Double
- DataFrame.DecisionTree: [taoIterations] :: TreeConfig -> Int
- DataFrame.DecisionTree: boolExprs :: DataFrame -> [Expr Bool] -> [Expr Bool] -> Int -> Int -> [Expr Bool]
- DataFrame.DecisionTree: buildGreedyTree :: (Columnable a, Ord a) => TreeConfig -> Int -> Text -> [Expr Bool] -> DataFrame -> Tree a
- DataFrame.DecisionTree: buildProbTree :: (Columnable a, Ord a) => Tree a -> Text -> DataFrame -> Vector Int -> ProbTree a
- DataFrame.DecisionTree: buildTree :: (Columnable a, Ord a) => TreeConfig -> Int -> Text -> [Expr Bool] -> DataFrame -> Expr a
- DataFrame.DecisionTree: calculateGini :: (Columnable a, Ord a) => Text -> DataFrame -> Double
- DataFrame.DecisionTree: combineNumExprs :: NumExpr -> NumExpr -> [NumExpr]
- DataFrame.DecisionTree: computeTreeLoss :: Columnable a => Text -> DataFrame -> Vector Int -> Tree a -> Double
- DataFrame.DecisionTree: countCarePointErrors :: Expr Bool -> DataFrame -> [CarePoint] -> Int
- DataFrame.DecisionTree: data CarePoint
- DataFrame.DecisionTree: data Direction
- DataFrame.DecisionTree: data NumExpr
- DataFrame.DecisionTree: data OrdDict
- DataFrame.DecisionTree: data SynthConfig
- DataFrame.DecisionTree: data Tree a
- DataFrame.DecisionTree: data TreeConfig
- DataFrame.DecisionTree: defaultColumnOrdering :: ColumnOrdering
- DataFrame.DecisionTree: defaultSynthConfig :: SynthConfig
- DataFrame.DecisionTree: defaultTreeConfig :: TreeConfig
- DataFrame.DecisionTree: findBestGreedySplit :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Maybe (Expr Bool)
- DataFrame.DecisionTree: findBestSplit :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Maybe (Expr Bool)
- DataFrame.DecisionTree: findBestSplitTAO :: Columnable a => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Vector Int -> Tree a -> Tree a -> Expr Bool -> Expr Bool
- DataFrame.DecisionTree: fitDecisionTree :: (Columnable a, Ord a) => TreeConfig -> Expr a -> DataFrame -> Expr a
- DataFrame.DecisionTree: fitProbTree :: (Columnable a, Ord a) => TreeConfig -> Expr a -> DataFrame -> Map a (Expr Double)
- DataFrame.DecisionTree: generateConditionsOld :: TreeConfig -> DataFrame -> [Expr Bool]
- DataFrame.DecisionTree: generateNumericConds :: TreeConfig -> DataFrame -> [Expr Bool]
- DataFrame.DecisionTree: getCounts :: (Columnable a, Ord a) => Text -> DataFrame -> Map a Int
- DataFrame.DecisionTree: identifyCarePoints :: Columnable a => Text -> DataFrame -> Vector Int -> Tree a -> Tree a -> [CarePoint]
- DataFrame.DecisionTree: instance GHC.Base.Monoid DataFrame.DecisionTree.ColumnOrdering
- DataFrame.DecisionTree: instance GHC.Base.Semigroup DataFrame.DecisionTree.ColumnOrdering
- DataFrame.DecisionTree: instance GHC.Classes.Eq DataFrame.DecisionTree.CarePoint
- DataFrame.DecisionTree: instance GHC.Classes.Eq DataFrame.DecisionTree.Direction
- DataFrame.DecisionTree: instance GHC.Classes.Eq DataFrame.DecisionTree.SynthConfig
- DataFrame.DecisionTree: instance GHC.Classes.Eq a => GHC.Classes.Eq (DataFrame.DecisionTree.Tree a)
- DataFrame.DecisionTree: instance GHC.Show.Show DataFrame.DecisionTree.CarePoint
- DataFrame.DecisionTree: instance GHC.Show.Show DataFrame.DecisionTree.Direction
- DataFrame.DecisionTree: instance GHC.Show.Show DataFrame.DecisionTree.SynthConfig
- DataFrame.DecisionTree: instance GHC.Show.Show a => GHC.Show.Show (DataFrame.DecisionTree.Tree a)
- DataFrame.DecisionTree: majorityValue :: (Columnable a, Ord a) => Text -> DataFrame -> a
- DataFrame.DecisionTree: majorityValueFromIndices :: (Columnable a, Ord a) => Text -> DataFrame -> Vector Int -> a
- DataFrame.DecisionTree: newtype ColumnOrdering
- DataFrame.DecisionTree: numExprCols :: NumExpr -> [Text]
- DataFrame.DecisionTree: numExprEq :: NumExpr -> NumExpr -> Bool
- DataFrame.DecisionTree: numericCols :: DataFrame -> [NumExpr]
- DataFrame.DecisionTree: numericConditions :: TreeConfig -> DataFrame -> [Expr Bool]
- DataFrame.DecisionTree: numericExprs :: SynthConfig -> DataFrame -> [NumExpr] -> Int -> Int -> [NumExpr]
- DataFrame.DecisionTree: numericExprsWithTerms :: SynthConfig -> DataFrame -> [NumExpr]
- DataFrame.DecisionTree: optimizeAtDepth :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Vector Int -> Tree a -> Int -> Int -> Tree a
- DataFrame.DecisionTree: optimizeDepthLevel :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Vector Int -> Tree a -> Int -> Tree a
- DataFrame.DecisionTree: optimizeNode :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Vector Int -> Tree a -> Tree a
- DataFrame.DecisionTree: orderable :: (Columnable a, Ord a) => ColumnOrdering
- DataFrame.DecisionTree: partitionDataFrame :: Expr Bool -> DataFrame -> (DataFrame, DataFrame)
- DataFrame.DecisionTree: partitionIndices :: Expr Bool -> DataFrame -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.DecisionTree: percentile :: Int -> Expr Double -> DataFrame -> Double
- DataFrame.DecisionTree: predictWithTree :: Columnable a => Text -> DataFrame -> Int -> Tree a -> a
- DataFrame.DecisionTree: probExprs :: (Columnable a, Ord a) => ProbTree a -> Map a (Expr Double)
- DataFrame.DecisionTree: probsFromIndices :: (Columnable a, Ord a) => Text -> DataFrame -> Vector Int -> Map a Double
- DataFrame.DecisionTree: pruneDead :: Tree a -> Tree a
- DataFrame.DecisionTree: pruneExpr :: (Columnable a, Eq a) => Expr a -> Expr a
- DataFrame.DecisionTree: pruneTree :: (Columnable a, Eq a) => Expr a -> Expr a
- DataFrame.DecisionTree: taoIteration :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Vector Int -> Tree a -> Tree a
- DataFrame.DecisionTree: taoOptimize :: (Columnable a, Ord a) => TreeConfig -> Text -> [Expr Bool] -> DataFrame -> Vector Int -> Tree a -> Tree a
- DataFrame.DecisionTree: treeDepth :: Tree a -> Int
- DataFrame.DecisionTree: treeToExpr :: Columnable a => Tree a -> Expr a
- DataFrame.DecisionTree: type ProbTree a = Tree Map a Double
- DataFrame.DecisionTree: withOrdFrom :: Columnable a => ColumnOrdering -> (Ord a => r) -> Maybe r
- DataFrame.Display: DisplayOptions :: Int -> DisplayOptions
- DataFrame.Display: [displayRows] :: DisplayOptions -> Int
- DataFrame.Display: data DisplayOptions
- DataFrame.Display: defaultDisplayOptions :: DisplayOptions
- DataFrame.Display: display :: DisplayOptions -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Colours: brightBlue :: String -> String
- DataFrame.Display.Terminal.Colours: brightGreen :: String -> String
- DataFrame.Display.Terminal.Colours: green :: String -> String
- DataFrame.Display.Terminal.Colours: red :: String -> String
- DataFrame.Display.Terminal.Plot: Bar :: PlotType
- DataFrame.Display.Terminal.Plot: BoxPlot :: PlotType
- DataFrame.Display.Terminal.Plot: Heatmap :: PlotType
- DataFrame.Display.Terminal.Plot: Histogram :: PlotType
- DataFrame.Display.Terminal.Plot: Line :: PlotType
- DataFrame.Display.Terminal.Plot: Pie :: PlotType
- DataFrame.Display.Terminal.Plot: PlotConfig :: PlotType -> Plot -> PlotConfig
- DataFrame.Display.Terminal.Plot: Scatter :: PlotType
- DataFrame.Display.Terminal.Plot: StackedBar :: PlotType
- DataFrame.Display.Terminal.Plot: [plotSettings] :: PlotConfig -> Plot
- DataFrame.Display.Terminal.Plot: [plotType] :: PlotConfig -> PlotType
- DataFrame.Display.Terminal.Plot: data PlotConfig
- DataFrame.Display.Terminal.Plot: data PlotType
- DataFrame.Display.Terminal.Plot: defaultPlotConfig :: PlotType -> PlotConfig
- DataFrame.Display.Terminal.Plot: extractNumericColumn :: HasCallStack => Text -> DataFrame -> [Double]
- DataFrame.Display.Terminal.Plot: extractStringColumn :: HasCallStack => Text -> DataFrame -> [Text]
- DataFrame.Display.Terminal.Plot: getCategoricalCounts :: HasCallStack => Text -> DataFrame -> Maybe [(Text, Double)]
- DataFrame.Display.Terminal.Plot: groupWithOther :: Int -> [(Text, Double)] -> [(Text, Double)]
- DataFrame.Display.Terminal.Plot: groupWithOtherForPie :: Int -> [(Text, Double)] -> [(Text, Double)]
- DataFrame.Display.Terminal.Plot: instance GHC.Classes.Eq DataFrame.Display.Terminal.Plot.PlotType
- DataFrame.Display.Terminal.Plot: instance GHC.Show.Show DataFrame.Display.Terminal.Plot.PlotType
- DataFrame.Display.Terminal.Plot: isNumericColumn :: DataFrame -> Text -> Bool
- DataFrame.Display.Terminal.Plot: isNumericColumnCheck :: Text -> DataFrame -> Bool
- DataFrame.Display.Terminal.Plot: plotAllHistograms :: HasCallStack => DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBars :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBarsTopN :: HasCallStack => Int -> Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBarsTopNWith :: HasCallStack => Int -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBarsWith :: HasCallStack => Text -> Maybe Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBarsWithPercentages :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBinaryPie :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBoxPlots :: HasCallStack => [Text] -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotBoxPlotsWith :: HasCallStack => [Text] -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotCategoricalSummary :: HasCallStack => DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotCorrelationMatrix :: HasCallStack => DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotGroupedBarsWith :: HasCallStack => Text -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotGroupedBarsWithN :: HasCallStack => Int -> Text -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotHeatmap :: HasCallStack => DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotHeatmapWith :: HasCallStack => PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotHistogram :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotHistogramWith :: HasCallStack => Text -> Int -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotLines :: HasCallStack => Text -> [Text] -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotLinesWith :: HasCallStack => Text -> [Text] -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotMarketShare :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotMarketShareWith :: HasCallStack => Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPie :: HasCallStack => Text -> Maybe Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieComparison :: HasCallStack => [Text] -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieGrouped :: HasCallStack => Text -> Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieGroupedWith :: HasCallStack => Text -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieTopN :: HasCallStack => Int -> Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieTopNWith :: HasCallStack => Int -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieWith :: HasCallStack => Text -> Maybe Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieWithPercentages :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotPieWithPercentagesConfig :: HasCallStack => Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotScatter :: HasCallStack => Text -> Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotScatterBy :: HasCallStack => Text -> Text -> Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotScatterByWith :: HasCallStack => Text -> Text -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotScatterWith :: HasCallStack => Text -> Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotSingleBars :: HasCallStack => Text -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotStackedBars :: HasCallStack => Text -> [Text] -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotStackedBarsWith :: HasCallStack => Text -> [Text] -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotValueCounts :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: plotValueCountsWith :: HasCallStack => Text -> Int -> PlotConfig -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: smartPlotBars :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: smartPlotPie :: HasCallStack => Text -> DataFrame -> IO ()
- DataFrame.Display.Terminal.Plot: unboxedVectorToDoubles :: (Columnable a, Unbox a, Show a) => Vector a -> [Double]
- DataFrame.Display.Terminal.Plot: vectorToDoubles :: (Columnable a, Show a) => Vector a -> [Double]
- DataFrame.Display.Terminal.PrettyPrint: ColDesc :: Filler -> Text -> Filler -> ColDesc t
- DataFrame.Display.Terminal.PrettyPrint: [colTitleFill] :: ColDesc t -> Filler
- DataFrame.Display.Terminal.PrettyPrint: [colTitle] :: ColDesc t -> Text
- DataFrame.Display.Terminal.PrettyPrint: [colValueFill] :: ColDesc t -> Filler
- DataFrame.Display.Terminal.PrettyPrint: center :: Int -> Text -> Text
- DataFrame.Display.Terminal.PrettyPrint: data ColDesc t
- DataFrame.Display.Terminal.PrettyPrint: fillCenter :: Char -> Int -> Text -> Text
- DataFrame.Display.Terminal.PrettyPrint: fillLeft :: Char -> Int -> Text -> Text
- DataFrame.Display.Terminal.PrettyPrint: fillRight :: Char -> Int -> Text -> Text
- DataFrame.Display.Terminal.PrettyPrint: left :: Int -> Text -> Text
- DataFrame.Display.Terminal.PrettyPrint: right :: Int -> Text -> Text
- DataFrame.Display.Terminal.PrettyPrint: showTable :: Bool -> [Text] -> [Text] -> [[Text]] -> Text
- DataFrame.Display.Terminal.PrettyPrint: type Filler = Int -> Text -> Text
- DataFrame.Display.Web.Plot: Bar :: PlotType
- DataFrame.Display.Web.Plot: BoxPlot :: PlotType
- DataFrame.Display.Web.Plot: Heatmap :: PlotType
- DataFrame.Display.Web.Plot: Histogram :: PlotType
- DataFrame.Display.Web.Plot: HtmlPlot :: Text -> HtmlPlot
- DataFrame.Display.Web.Plot: Line :: PlotType
- DataFrame.Display.Web.Plot: Pie :: PlotType
- DataFrame.Display.Web.Plot: PlotConfig :: PlotType -> Text -> Int -> Int -> Maybe FilePath -> PlotConfig
- DataFrame.Display.Web.Plot: Scatter :: PlotType
- DataFrame.Display.Web.Plot: StackedBar :: PlotType
- DataFrame.Display.Web.Plot: [plotFile] :: PlotConfig -> Maybe FilePath
- DataFrame.Display.Web.Plot: [plotHeight] :: PlotConfig -> Int
- DataFrame.Display.Web.Plot: [plotTitle] :: PlotConfig -> Text
- DataFrame.Display.Web.Plot: [plotType] :: PlotConfig -> PlotType
- DataFrame.Display.Web.Plot: [plotWidth] :: PlotConfig -> Int
- DataFrame.Display.Web.Plot: calculateHistogram :: [Double] -> [Double] -> Double -> [Int]
- DataFrame.Display.Web.Plot: data PlotConfig
- DataFrame.Display.Web.Plot: data PlotType
- DataFrame.Display.Web.Plot: defaultPlotConfig :: PlotType -> PlotConfig
- DataFrame.Display.Web.Plot: extractNumericColumn :: HasCallStack => Text -> DataFrame -> [Double]
- DataFrame.Display.Web.Plot: extractStringColumn :: HasCallStack => Text -> DataFrame -> [Text]
- DataFrame.Display.Web.Plot: generateChartId :: IO Text
- DataFrame.Display.Web.Plot: getCategoricalCounts :: HasCallStack => Text -> DataFrame -> Maybe [(Text, Double)]
- DataFrame.Display.Web.Plot: groupWithOther :: Int -> [(Text, Double)] -> [(Text, Double)]
- DataFrame.Display.Web.Plot: groupWithOtherForPie :: Int -> [(Text, Double)] -> [(Text, Double)]
- DataFrame.Display.Web.Plot: instance GHC.Classes.Eq DataFrame.Display.Web.Plot.PlotType
- DataFrame.Display.Web.Plot: instance GHC.Show.Show DataFrame.Display.Web.Plot.HtmlPlot
- DataFrame.Display.Web.Plot: instance GHC.Show.Show DataFrame.Display.Web.Plot.PlotType
- DataFrame.Display.Web.Plot: isNumericColumn :: DataFrame -> Text -> Bool
- DataFrame.Display.Web.Plot: isNumericColumnCheck :: Text -> DataFrame -> Bool
- DataFrame.Display.Web.Plot: newtype HtmlPlot
- DataFrame.Display.Web.Plot: openFileSilently :: FilePath -> FilePath -> IO ()
- DataFrame.Display.Web.Plot: pieColors :: [Text]
- DataFrame.Display.Web.Plot: plotAllHistograms :: HasCallStack => DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBars :: HasCallStack => Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBarsTopN :: HasCallStack => Int -> Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBarsTopNWith :: HasCallStack => Int -> Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBarsWith :: HasCallStack => Text -> Maybe Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBarsWithPercentages :: HasCallStack => Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBoxPlots :: HasCallStack => [Text] -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotBoxPlotsWith :: HasCallStack => [Text] -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotCategoricalSummary :: HasCallStack => DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotGroupedBarsWith :: HasCallStack => Text -> Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotGroupedBarsWithN :: HasCallStack => Int -> Text -> Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotHistogram :: HasCallStack => Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotHistogramWith :: HasCallStack => Text -> Int -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotLines :: HasCallStack => Text -> [Text] -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotLinesWith :: HasCallStack => Text -> [Text] -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotPie :: HasCallStack => Text -> Maybe Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotPieWith :: HasCallStack => Text -> Maybe Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotScatter :: HasCallStack => Text -> Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotScatterBy :: HasCallStack => Text -> Text -> Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotScatterByWith :: HasCallStack => Text -> Text -> Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotScatterWith :: HasCallStack => Text -> Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotSingleBars :: HasCallStack => Text -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotStackedBars :: HasCallStack => Text -> [Text] -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotStackedBarsWith :: HasCallStack => Text -> [Text] -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotValueCounts :: HasCallStack => Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: plotValueCountsWith :: HasCallStack => Text -> Int -> PlotConfig -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: showInDefaultBrowser :: HtmlPlot -> IO ()
- DataFrame.Display.Web.Plot: smartPlotBars :: HasCallStack => Text -> DataFrame -> IO HtmlPlot
- DataFrame.Display.Web.Plot: unboxedVectorToDoubles :: (Columnable a, Unbox a, Show a) => Vector a -> [Double]
- DataFrame.Display.Web.Plot: vectorToDoubles :: (Columnable a, Show a) => Vector a -> [Double]
- DataFrame.Display.Web.Plot: wrapInHTML :: Text -> Text -> Int -> Int -> Text
- DataFrame.Errors: MkTypeErrorContext :: Either String (TypeRep a) -> Either String (TypeRep b) -> Maybe String -> Maybe String -> TypeErrorContext a b
- DataFrame.Errors: [AggregatedAndNonAggregatedException] :: Text -> Text -> DataFrameException
- DataFrame.Errors: [ColumnsNotFoundException] :: [Text] -> Text -> [Text] -> DataFrameException
- DataFrame.Errors: [EmptyDataSetException] :: Text -> DataFrameException
- DataFrame.Errors: [InternalException] :: Text -> DataFrameException
- DataFrame.Errors: [NonColumnReferenceException] :: Text -> DataFrameException
- DataFrame.Errors: [TypeMismatchException] :: forall a b. (Typeable a, Typeable b) => TypeErrorContext a b -> DataFrameException
- DataFrame.Errors: [UnaggregatedException] :: Text -> DataFrameException
- DataFrame.Errors: [WrongQuantileIndexException] :: Vector Int -> Int -> DataFrameException
- DataFrame.Errors: [WrongQuantileNumberException] :: Int -> DataFrameException
- DataFrame.Errors: [callingFunctionName] :: TypeErrorContext a b -> Maybe String
- DataFrame.Errors: [errorColumnName] :: TypeErrorContext a b -> Maybe String
- DataFrame.Errors: [expectedType] :: TypeErrorContext a b -> Either String (TypeRep b)
- DataFrame.Errors: [userType] :: TypeErrorContext a b -> Either String (TypeRep a)
- DataFrame.Errors: addCallPointInfo :: Maybe String -> Maybe String -> String -> String
- DataFrame.Errors: columnNotFound :: Text -> Text -> [Text] -> String
- DataFrame.Errors: columnsNotFound :: [Text] -> Text -> [Text] -> String
- DataFrame.Errors: data DataFrameException
- DataFrame.Errors: data TypeErrorContext a b
- DataFrame.Errors: editDistance :: Text -> Text -> Int
- DataFrame.Errors: emptyDataSetError :: Text -> String
- DataFrame.Errors: guessColumnName :: Text -> [Text] -> Text
- DataFrame.Errors: instance GHC.Exception.Type.Exception DataFrame.Errors.DataFrameException
- DataFrame.Errors: instance GHC.Show.Show DataFrame.Errors.DataFrameException
- DataFrame.Errors: typeMismatchError :: String -> String -> String
- DataFrame.Errors: wrongQuantileIndexError :: Vector Int -> Int -> String
- DataFrame.Errors: wrongQuantileNumberError :: Int -> String
- DataFrame.Functions: and :: Expr Bool -> Expr Bool -> Expr Bool
- DataFrame.Functions: bind :: forall a b m. (Columnable a, Columnable (m a), Monad m, Columnable b, Columnable (m b)) => (a -> m b) -> Expr (m a) -> Expr (m b)
- DataFrame.Functions: cast :: (Columnable a, Read a) => Text -> Expr (Maybe a)
- DataFrame.Functions: castEither :: (Columnable a, Read a) => Text -> Expr (Either Text a)
- DataFrame.Functions: castExpr :: (Columnable b, Columnable src, Read b) => Expr src -> Expr (Maybe b)
- DataFrame.Functions: castExprEither :: (Columnable b, Columnable src, Read b) => Expr src -> Expr (Either Text b)
- DataFrame.Functions: castExprWithDefault :: (Columnable b, Columnable src, Read b) => b -> Expr src -> Expr b
- DataFrame.Functions: castWithDefault :: (Columnable a, Read a) => a -> Text -> Expr a
- DataFrame.Functions: collect :: Columnable a => Expr a -> Expr [a]
- DataFrame.Functions: count :: Columnable a => Expr a -> Expr Int
- DataFrame.Functions: countAll :: Expr Int
- DataFrame.Functions: daysBetween :: Expr Day -> Expr Day -> Expr Int
- DataFrame.Functions: declareColumns :: DataFrame -> DecsQ
- DataFrame.Functions: declareColumnsFromCsvFile :: String -> DecsQ
- DataFrame.Functions: declareColumnsFromCsvWithOpts :: ReadOptions -> String -> DecsQ
- DataFrame.Functions: declareColumnsFromParquetFile :: String -> DecsQ
- DataFrame.Functions: declareColumnsWithPrefix :: Text -> DataFrame -> DecsQ
- DataFrame.Functions: declareColumnsWithPrefix' :: Maybe Text -> DataFrame -> DecsQ
- DataFrame.Functions: div :: (Integral a, Columnable a) => Expr a -> Expr a -> Expr a
- DataFrame.Functions: emptyColumnForType :: TType -> Column
- DataFrame.Functions: emptyNullableColumnForType :: TType -> Column
- DataFrame.Functions: eq :: (Columnable a, Eq a, a ~ BaseType a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Functions: firstOrNothing :: Columnable a => Expr [a] -> Expr (Maybe a)
- DataFrame.Functions: fromJust :: Columnable a => Expr (Maybe a) -> Expr a
- DataFrame.Functions: fromMaybe :: Columnable a => a -> Expr (Maybe a) -> Expr a
- DataFrame.Functions: geq :: (Columnable a, Ord a, Eq a, a ~ BaseType a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Functions: gt :: (Columnable a, Ord a, a ~ BaseType a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Functions: infix 8 `div`
- DataFrame.Functions: isHaskellIdentifier :: Text -> Bool
- DataFrame.Functions: isJust :: Columnable a => Expr (Maybe a) -> Expr Bool
- DataFrame.Functions: isNothing :: Columnable a => Expr (Maybe a) -> Expr Bool
- DataFrame.Functions: isReservedId :: Text -> Bool
- DataFrame.Functions: isVarId :: Text -> Bool
- DataFrame.Functions: lastOrNothing :: Columnable a => Expr [a] -> Expr (Maybe a)
- DataFrame.Functions: leq :: (Columnable a, Ord a, Eq a, a ~ BaseType a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Functions: lift :: (Columnable a, Columnable b) => (a -> b) -> Expr a -> Expr b
- DataFrame.Functions: lift2 :: (Columnable c, Columnable b, Columnable a) => (c -> b -> a) -> Expr c -> Expr b -> Expr a
- DataFrame.Functions: lt :: (Columnable a, Ord a, a ~ BaseType a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Functions: match :: Text -> Expr Text -> Expr (Maybe Text)
- DataFrame.Functions: matchAll :: Text -> Expr Text -> Expr [Text]
- DataFrame.Functions: max :: (Columnable a, Ord a) => Expr a -> Expr a -> Expr a
- DataFrame.Functions: maximum :: (Columnable a, Ord a) => Expr a -> Expr a
- DataFrame.Functions: mean :: (Columnable a, Real a) => Expr a -> Expr Double
- DataFrame.Functions: meanMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> Expr Double
- DataFrame.Functions: median :: (Columnable a, Real a, Unbox a) => Expr a -> Expr Double
- DataFrame.Functions: medianMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> Expr Double
- DataFrame.Functions: min :: (Columnable a, Ord a) => Expr a -> Expr a -> Expr a
- DataFrame.Functions: minimum :: (Columnable a, Ord a) => Expr a -> Expr a
- DataFrame.Functions: mod :: (Integral a, Columnable a) => Expr a -> Expr a -> Expr a
- DataFrame.Functions: mode :: (Ord a, Columnable a, Eq a) => Expr a -> Expr a
- DataFrame.Functions: normalize :: String -> String
- DataFrame.Functions: not :: Expr Bool -> Expr Bool
- DataFrame.Functions: nullLift :: (NullLift1Op a r (NullLift1Result a r), Columnable (NullLift1Result a r)) => (BaseType a -> r) -> Expr a -> Expr (NullLift1Result a r)
- DataFrame.Functions: nullLift2 :: (NullLift2Op a b r (NullLift2Result a b r), Columnable (NullLift2Result a b r)) => (BaseType a -> BaseType b -> r) -> Expr a -> Expr b -> Expr (NullLift2Result a b r)
- DataFrame.Functions: optionalToDoubleVector :: Real a => Vector (Maybe a) -> Vector Double
- DataFrame.Functions: or :: Expr Bool -> Expr Bool -> Expr Bool
- DataFrame.Functions: over :: Columnable a => [Text] -> Expr a -> Expr a
- DataFrame.Functions: parseDate :: (ParseTime t, Columnable t) => Text -> Expr Text -> Expr (Maybe t)
- DataFrame.Functions: percentile :: Int -> Expr Double -> Expr Double
- DataFrame.Functions: pow :: (Columnable a, Num a) => Expr a -> Int -> Expr a
- DataFrame.Functions: recode :: (Columnable a, Columnable b, Show (a, b)) => [(a, b)] -> Expr a -> Expr (Maybe b)
- DataFrame.Functions: recodeWithCondition :: (Columnable a, Columnable b) => Expr b -> [(Expr a -> Expr Bool, b)] -> Expr a -> Expr b
- DataFrame.Functions: recodeWithDefault :: (Columnable a, Columnable b, Show (a, b)) => b -> [(a, b)] -> Expr a -> Expr b
- DataFrame.Functions: reduce :: (Columnable a, Columnable b) => Expr b -> a -> (a -> b -> a) -> Expr a
- DataFrame.Functions: relu :: (Columnable a, Num a, Ord a) => Expr a -> Expr a
- DataFrame.Functions: sanitize :: Text -> Text
- DataFrame.Functions: schemaElemToColumn :: Set Text -> SchemaElement -> (Text, Column)
- DataFrame.Functions: schemaToEmptyDataFrame :: Set Text -> [SchemaElement] -> DataFrame
- DataFrame.Functions: splitOn :: Text -> Expr Text -> Expr [Text]
- DataFrame.Functions: stddev :: (Columnable a, Real a, Unbox a) => Expr a -> Expr Double
- DataFrame.Functions: stddevMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> Expr Double
- DataFrame.Functions: stripBrackets :: String -> Maybe String
- DataFrame.Functions: sum :: (Columnable a, Num a) => Expr a -> Expr a
- DataFrame.Functions: sumMaybe :: (Columnable a, Num a) => Expr (Maybe a) -> Expr a
- DataFrame.Functions: toDouble :: (Columnable a, Real a) => Expr a -> Expr Double
- DataFrame.Functions: toMaybe :: Columnable a => Expr a -> Expr (Maybe a)
- DataFrame.Functions: typeFromString :: [String] -> Q Type
- DataFrame.Functions: unsafeCast :: (Columnable a, Read a) => Text -> Expr a
- DataFrame.Functions: unsafeCastExpr :: (Columnable b, Columnable src, Read b) => Expr src -> Expr b
- DataFrame.Functions: variance :: (Columnable a, Real a, Unbox a) => Expr a -> Expr Double
- DataFrame.Functions: whenBothPresent :: (Columnable a, Columnable b, Columnable c) => (a -> b -> c) -> Expr (Maybe a) -> Expr (Maybe b) -> Expr (Maybe c)
- DataFrame.Functions: whenPresent :: (Columnable a, Columnable b) => (a -> b) -> Expr (Maybe a) -> Expr (Maybe b)
- DataFrame.Functions: zScore :: Expr Double -> Expr Double
- DataFrame.IO.CSV: BestEffort :: UnclosedQuotePolicy
- DataFrame.IO.CSV: BuilderBS :: !PagedVector ByteString -> !PagedUnboxedVector Word8 -> BuilderColumn
- DataFrame.IO.CSV: BuilderDouble :: !PagedUnboxedVector Double -> !PagedUnboxedVector Word8 -> BuilderColumn
- DataFrame.IO.CSV: BuilderInt :: !PagedUnboxedVector Int -> !PagedUnboxedVector Word8 -> BuilderColumn
- DataFrame.IO.CSV: BuilderText :: !PagedVector Text -> !PagedUnboxedVector Word8 -> BuilderColumn
- DataFrame.IO.CSV: InferFromSample :: Int -> TypeSpec
- DataFrame.IO.CSV: NoHeader :: HeaderSpec
- DataFrame.IO.CSV: NoInference :: TypeSpec
- DataFrame.IO.CSV: PadWithNull :: RaggedRowPolicy
- DataFrame.IO.CSV: PagedUnboxedVector :: !IORef [Vector a] -> !IORef (IOVector a) -> !IORef Int -> PagedUnboxedVector a
- DataFrame.IO.CSV: PagedVector :: !IORef [Vector a] -> !IORef (IOVector a) -> !IORef Int -> PagedVector a
- DataFrame.IO.CSV: ProvideNames :: [Text] -> HeaderSpec
- DataFrame.IO.CSV: RaiseOnRagged :: RaggedRowPolicy
- DataFrame.IO.CSV: RaiseOnUnclosedQuote :: UnclosedQuotePolicy
- DataFrame.IO.CSV: ReadOptions :: HeaderSpec -> TypeSpec -> SafeReadMode -> [(Text, SafeReadMode)] -> String -> Char -> Maybe Int -> [Text] -> RaggedRowPolicy -> UnclosedQuotePolicy -> Bool -> ReadOptions
- DataFrame.IO.CSV: SpecifyTypes :: [(Text, SchemaType)] -> TypeSpec -> TypeSpec
- DataFrame.IO.CSV: Truncate :: RaggedRowPolicy
- DataFrame.IO.CSV: UseFirstRow :: HeaderSpec
- DataFrame.IO.CSV: [columnSeparator] :: ReadOptions -> Char
- DataFrame.IO.CSV: [dateFormat] :: ReadOptions -> String
- DataFrame.IO.CSV: [fastCsvOnRaggedRow] :: ReadOptions -> RaggedRowPolicy
- DataFrame.IO.CSV: [fastCsvOnUnclosedQuote] :: ReadOptions -> UnclosedQuotePolicy
- DataFrame.IO.CSV: [fastCsvTrimUnquoted] :: ReadOptions -> Bool
- DataFrame.IO.CSV: [headerSpec] :: ReadOptions -> HeaderSpec
- DataFrame.IO.CSV: [missingIndicators] :: ReadOptions -> [Text]
- DataFrame.IO.CSV: [numColumns] :: ReadOptions -> Maybe Int
- DataFrame.IO.CSV: [puvActive] :: PagedUnboxedVector a -> !IORef (IOVector a)
- DataFrame.IO.CSV: [puvChunks] :: PagedUnboxedVector a -> !IORef [Vector a]
- DataFrame.IO.CSV: [puvCount] :: PagedUnboxedVector a -> !IORef Int
- DataFrame.IO.CSV: [pvActive] :: PagedVector a -> !IORef (IOVector a)
- DataFrame.IO.CSV: [pvChunks] :: PagedVector a -> !IORef [Vector a]
- DataFrame.IO.CSV: [pvCount] :: PagedVector a -> !IORef Int
- DataFrame.IO.CSV: [safeReadOverrides] :: ReadOptions -> [(Text, SafeReadMode)]
- DataFrame.IO.CSV: [safeRead] :: ReadOptions -> SafeReadMode
- DataFrame.IO.CSV: [typeSpec] :: ReadOptions -> TypeSpec
- DataFrame.IO.CSV: appendPagedUnboxedVector :: Unbox a => PagedUnboxedVector a -> a -> IO ()
- DataFrame.IO.CSV: appendPagedVector :: PagedVector a -> a -> IO ()
- DataFrame.IO.CSV: chunkSize :: Int
- DataFrame.IO.CSV: constructOptional :: (Unbox a, Columnable a) => Vector a -> Vector Word8 -> IO Column
- DataFrame.IO.CSV: constructOptionalBoxed :: Vector Text -> Vector Word8 -> IO Column
- DataFrame.IO.CSV: data BuilderColumn
- DataFrame.IO.CSV: data HeaderSpec
- DataFrame.IO.CSV: data PagedUnboxedVector a
- DataFrame.IO.CSV: data PagedVector a
- DataFrame.IO.CSV: data RaggedRowPolicy
- DataFrame.IO.CSV: data ReadOptions
- DataFrame.IO.CSV: data TypeSpec
- DataFrame.IO.CSV: data UnclosedQuotePolicy
- DataFrame.IO.CSV: decodeSeparated :: ReadOptions -> ByteString -> IO DataFrame
- DataFrame.IO.CSV: defaultReadOptions :: ReadOptions
- DataFrame.IO.CSV: finalizeBuilderColumn :: SafeReadMode -> ReadOptions -> BuilderColumn -> IO Column
- DataFrame.IO.CSV: freezeBuilderColumn :: BuilderColumn -> IO Column
- DataFrame.IO.CSV: freezePagedUnboxedVector :: Unbox a => PagedUnboxedVector a -> IO (Vector a)
- DataFrame.IO.CSV: freezePagedVector :: PagedVector a -> IO (Vector a)
- DataFrame.IO.CSV: fromCsv :: String -> IO (Either String DataFrame)
- DataFrame.IO.CSV: fromCsvBytes :: ByteString -> IO DataFrame
- DataFrame.IO.CSV: handleBSBool :: Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: handleBSDate :: String -> Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: handleBSDouble :: Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: handleBSEither :: String -> ParsingAssumption -> Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: handleBSInt :: String -> Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: handleBSNo :: String -> Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: handleBSText :: Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: inferColumnFromBS :: SafeReadMode -> ReadOptions -> Vector ByteString -> Vector Word8 -> Column
- DataFrame.IO.CSV: initializeColumns :: [Text] -> [ByteString] -> ReadOptions -> IO [BuilderColumn]
- DataFrame.IO.CSV: instance GHC.Classes.Eq DataFrame.IO.CSV.HeaderSpec
- DataFrame.IO.CSV: instance GHC.Classes.Eq DataFrame.IO.CSV.RaggedRowPolicy
- DataFrame.IO.CSV: instance GHC.Classes.Eq DataFrame.IO.CSV.UnclosedQuotePolicy
- DataFrame.IO.CSV: instance GHC.Show.Show DataFrame.IO.CSV.HeaderSpec
- DataFrame.IO.CSV: instance GHC.Show.Show DataFrame.IO.CSV.RaggedRowPolicy
- DataFrame.IO.CSV: instance GHC.Show.Show DataFrame.IO.CSV.UnclosedQuotePolicy
- DataFrame.IO.CSV: makeParsingAssumptionBS :: String -> Vector (Maybe ByteString) -> ParsingAssumption
- DataFrame.IO.CSV: newPagedUnboxedVector :: Unbox a => IO (PagedUnboxedVector a)
- DataFrame.IO.CSV: newPagedVector :: IO (PagedVector a)
- DataFrame.IO.CSV: parseBoxedMaybeBSColumn :: Vector Word8 -> (ByteString -> Maybe a) -> Vector ByteString -> Maybe (Bool, Vector (Maybe a))
- DataFrame.IO.CSV: parseUnboxedColumnWithValid :: forall src a. Unbox a => a -> (src -> Maybe a) -> Vector src -> Vector Word8 -> Maybe (Maybe Bitmap, Vector a)
- DataFrame.IO.CSV: processRow :: [Text] -> Vector ByteString -> Vector BuilderColumn -> IO ()
- DataFrame.IO.CSV: processStream :: [Text] -> Records (Vector ByteString) -> Vector BuilderColumn -> Maybe Int -> IO ()
- DataFrame.IO.CSV: readCsv :: FilePath -> IO DataFrame
- DataFrame.IO.CSV: readCsvWithOpts :: ReadOptions -> FilePath -> IO DataFrame
- DataFrame.IO.CSV: readSeparated :: ReadOptions -> FilePath -> IO DataFrame
- DataFrame.IO.CSV: readTsv :: FilePath -> IO DataFrame
- DataFrame.IO.CSV: schemaTypeMap :: TypeSpec -> Map Text SchemaType
- DataFrame.IO.CSV: shouldInferFromSample :: TypeSpec -> Bool
- DataFrame.IO.CSV: stripQuotes :: Text -> Text
- DataFrame.IO.CSV: typeInferenceSampleSize :: TypeSpec -> Int
- DataFrame.IO.CSV: writeCsv :: FilePath -> DataFrame -> IO ()
- DataFrame.IO.CSV: writeSeparated :: Char -> FilePath -> DataFrame -> IO ()
- DataFrame.IO.CSV: writeTsv :: FilePath -> DataFrame -> IO ()
- DataFrame.IO.JSON: readJSON :: FilePath -> IO DataFrame
- DataFrame.IO.JSON: readJSONEither :: ByteString -> Either String DataFrame
- DataFrame.IO.Parquet: HFParquetFile :: Text -> Text -> Text -> Text -> HFParquetFile
- DataFrame.IO.Parquet: HFParquetResponse :: [HFParquetFile] -> HFParquetResponse
- DataFrame.IO.Parquet: HFRef :: Text -> Text -> Text -> HFRef
- DataFrame.IO.Parquet: ParquetReadOptions :: Maybe [Text] -> Maybe (Expr Bool) -> Maybe (Int, Int) -> Bool -> ParquetReadOptions
- DataFrame.IO.Parquet: [hfDataset] :: HFRef -> Text
- DataFrame.IO.Parquet: [hfGlob] :: HFRef -> Text
- DataFrame.IO.Parquet: [hfOwner] :: HFRef -> Text
- DataFrame.IO.Parquet: [hfParquetFiles] :: HFParquetResponse -> [HFParquetFile]
- DataFrame.IO.Parquet: [hfpConfig] :: HFParquetFile -> Text
- DataFrame.IO.Parquet: [hfpFilename] :: HFParquetFile -> Text
- DataFrame.IO.Parquet: [hfpSplit] :: HFParquetFile -> Text
- DataFrame.IO.Parquet: [hfpUrl] :: HFParquetFile -> Text
- DataFrame.IO.Parquet: [predicate] :: ParquetReadOptions -> Maybe (Expr Bool)
- DataFrame.IO.Parquet: [rowRange] :: ParquetReadOptions -> Maybe (Int, Int)
- DataFrame.IO.Parquet: [safeColumns] :: ParquetReadOptions -> Bool
- DataFrame.IO.Parquet: [selectedColumns] :: ParquetReadOptions -> Maybe [Text]
- DataFrame.IO.Parquet: _readParquetWithOpts :: ForceNonSeekable -> ParquetReadOptions -> FilePath -> IO DataFrame
- DataFrame.IO.Parquet: applyLogicalType :: LogicalType -> Column -> Column
- DataFrame.IO.Parquet: applyPredicate :: ParquetReadOptions -> DataFrame -> DataFrame
- DataFrame.IO.Parquet: applyReadOptions :: ParquetReadOptions -> DataFrame -> DataFrame
- DataFrame.IO.Parquet: applyRowRange :: ParquetReadOptions -> DataFrame -> DataFrame
- DataFrame.IO.Parquet: applySafeRead :: ParquetReadOptions -> DataFrame -> DataFrame
- DataFrame.IO.Parquet: applyScale :: Int32 -> Int32 -> Double
- DataFrame.IO.Parquet: applySelectedColumns :: ParquetReadOptions -> DataFrame -> DataFrame
- DataFrame.IO.Parquet: cleanColPath :: [SNode] -> [String] -> [String]
- DataFrame.IO.Parquet: data HFParquetFile
- DataFrame.IO.Parquet: data HFRef
- DataFrame.IO.Parquet: data ParquetReadOptions
- DataFrame.IO.Parquet: decodePageData :: Maybe DictVals -> (Int, Int) -> ParquetType -> Maybe Int32 -> ParquetEncoding -> [Int] -> [Int] -> Int -> ByteString -> String -> IO Column
- DataFrame.IO.Parquet: defaultParquetReadOptions :: ParquetReadOptions
- DataFrame.IO.Parquet: directHFUrl :: HFRef -> Text
- DataFrame.IO.Parquet: downloadHFFiles :: Maybe ByteString -> [HFParquetFile] -> IO [FilePath]
- DataFrame.IO.Parquet: fetchHFParquetFiles :: FilePath -> IO [FilePath]
- DataFrame.IO.Parquet: findLeafSchema :: [SchemaElement] -> [String] -> Maybe SchemaElement
- DataFrame.IO.Parquet: getColumnPaths :: [SchemaElement] -> [(Text, Int)]
- DataFrame.IO.Parquet: getHFToken :: IO (Maybe ByteString)
- DataFrame.IO.Parquet: hasGlob :: Text -> Bool
- DataFrame.IO.Parquet: hfUrlRepoPath :: HFParquetFile -> String
- DataFrame.IO.Parquet: instance Data.Aeson.Types.FromJSON.FromJSON DataFrame.IO.Parquet.HFParquetFile
- DataFrame.IO.Parquet: instance Data.Aeson.Types.FromJSON.FromJSON DataFrame.IO.Parquet.HFParquetResponse
- DataFrame.IO.Parquet: instance GHC.Classes.Eq DataFrame.IO.Parquet.ParquetReadOptions
- DataFrame.IO.Parquet: instance GHC.Show.Show DataFrame.IO.Parquet.HFParquetFile
- DataFrame.IO.Parquet: instance GHC.Show.Show DataFrame.IO.Parquet.ParquetReadOptions
- DataFrame.IO.Parquet: isHFUri :: FilePath -> Bool
- DataFrame.IO.Parquet: matchesGlob :: Text -> HFParquetFile -> Bool
- DataFrame.IO.Parquet: microsecondsToUTCTime :: Int64 -> UTCTime
- DataFrame.IO.Parquet: newtype HFParquetResponse
- DataFrame.IO.Parquet: parseHFUri :: FilePath -> Either String HFRef
- DataFrame.IO.Parquet: processColumnPages :: (Int, Int) -> [Page] -> ParquetType -> ParquetEncoding -> Maybe Int32 -> LogicalType -> IO Column
- DataFrame.IO.Parquet: readMetadataFromHandle :: FileBufferedOrSeekable -> IO FileMetadata
- DataFrame.IO.Parquet: readMetadataFromPath :: FilePath -> IO (FileMetadata, ByteString)
- DataFrame.IO.Parquet: readMetadataSizeFromFooter :: ByteString -> (Int, ByteString)
- DataFrame.IO.Parquet: readMetadataSizeFromFooterSlice :: ByteString -> (Int, ByteString)
- DataFrame.IO.Parquet: readParquet :: FilePath -> IO DataFrame
- DataFrame.IO.Parquet: readParquetFiles :: FilePath -> IO DataFrame
- DataFrame.IO.Parquet: readParquetFilesWithOpts :: ParquetReadOptions -> FilePath -> IO DataFrame
- DataFrame.IO.Parquet: readParquetWithOpts :: ParquetReadOptions -> FilePath -> IO DataFrame
- DataFrame.IO.Parquet: resolveHFUrls :: Maybe ByteString -> HFRef -> IO [HFParquetFile]
- DataFrame.IO.Parquet: unitDivisor :: TimeUnit -> Int64
- DataFrame.IO.Parquet.Binary: fillByteStringByWord8 :: Int -> (Int -> IO Word8) -> IO ByteString
- DataFrame.IO.Parquet.Binary: readAndAdvance :: IORef Int -> ByteString -> IO Word8
- DataFrame.IO.Parquet.Binary: readByteString :: ByteString -> IORef Int -> IO ByteString
- DataFrame.IO.Parquet.Binary: readByteString' :: ByteString -> Int64 -> IO ByteString
- DataFrame.IO.Parquet.Binary: readByteStringFromBytes :: ByteString -> (ByteString, ByteString)
- DataFrame.IO.Parquet.Binary: readInt32FromBuffer :: ByteString -> IORef Int -> IO Int32
- DataFrame.IO.Parquet.Binary: readInt32FromBytes :: ByteString -> (Int32, ByteString)
- DataFrame.IO.Parquet.Binary: readIntFromBuffer :: Integral a => ByteString -> IORef Int -> IO a
- DataFrame.IO.Parquet.Binary: readIntFromBytes :: Integral a => ByteString -> (a, ByteString)
- DataFrame.IO.Parquet.Binary: readNoAdvance :: IORef Int -> ByteString -> IO Word8
- DataFrame.IO.Parquet.Binary: readSingleByte :: Int64 -> ByteString -> IO Word8
- DataFrame.IO.Parquet.Binary: readString :: ByteString -> IORef Int -> IO String
- DataFrame.IO.Parquet.Binary: readUVarInt :: ByteString -> (Word64, ByteString)
- DataFrame.IO.Parquet.Binary: readVarIntFromBuffer :: Integral a => ByteString -> IORef Int -> IO a
- DataFrame.IO.Parquet.Binary: readVarIntFromBytes :: Integral a => ByteString -> (a, ByteString)
- DataFrame.IO.Parquet.ColumnStatistics: ColumnStatistics :: ByteString -> ByteString -> Int64 -> Int64 -> ByteString -> ByteString -> Bool -> Bool -> ColumnStatistics
- DataFrame.IO.Parquet.ColumnStatistics: [columnDistictCount] :: ColumnStatistics -> Int64
- DataFrame.IO.Parquet.ColumnStatistics: [columnMaxValue] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.ColumnStatistics: [columnMax] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.ColumnStatistics: [columnMinValue] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.ColumnStatistics: [columnMin] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.ColumnStatistics: [columnNullCount] :: ColumnStatistics -> Int64
- DataFrame.IO.Parquet.ColumnStatistics: [isColumnMaxValueExact] :: ColumnStatistics -> Bool
- DataFrame.IO.Parquet.ColumnStatistics: [isColumnMinValueExact] :: ColumnStatistics -> Bool
- DataFrame.IO.Parquet.ColumnStatistics: data ColumnStatistics
- DataFrame.IO.Parquet.ColumnStatistics: emptyColumnStatistics :: ColumnStatistics
- DataFrame.IO.Parquet.ColumnStatistics: instance GHC.Classes.Eq DataFrame.IO.Parquet.ColumnStatistics.ColumnStatistics
- DataFrame.IO.Parquet.ColumnStatistics: instance GHC.Show.Show DataFrame.IO.Parquet.ColumnStatistics.ColumnStatistics
- DataFrame.IO.Parquet.Compression: BROTLI :: CompressionCodec
- DataFrame.IO.Parquet.Compression: COMPRESSION_CODEC_UNKNOWN :: CompressionCodec
- DataFrame.IO.Parquet.Compression: GZIP :: CompressionCodec
- DataFrame.IO.Parquet.Compression: LZ4 :: CompressionCodec
- DataFrame.IO.Parquet.Compression: LZ4_RAW :: CompressionCodec
- DataFrame.IO.Parquet.Compression: LZO :: CompressionCodec
- DataFrame.IO.Parquet.Compression: SNAPPY :: CompressionCodec
- DataFrame.IO.Parquet.Compression: UNCOMPRESSED :: CompressionCodec
- DataFrame.IO.Parquet.Compression: ZSTD :: CompressionCodec
- DataFrame.IO.Parquet.Compression: compressionCodecFromInt :: Int32 -> CompressionCodec
- DataFrame.IO.Parquet.Compression: data CompressionCodec
- DataFrame.IO.Parquet.Compression: instance GHC.Classes.Eq DataFrame.IO.Parquet.Compression.CompressionCodec
- DataFrame.IO.Parquet.Compression: instance GHC.Show.Show DataFrame.IO.Parquet.Compression.CompressionCodec
- DataFrame.IO.Parquet.Dictionary: applyDictToColumn :: (Columnable a, Columnable (Maybe a)) => Vector a -> Vector Int -> Int -> [Int] -> IO Column
- DataFrame.IO.Parquet.Dictionary: decodeDictV1 :: Maybe DictVals -> Int -> Int -> [Int] -> [Int] -> Int -> ByteString -> IO Column
- DataFrame.IO.Parquet.Dictionary: dictCardinality :: DictVals -> Int
- DataFrame.IO.Parquet.Dictionary: readDictVals :: ParquetType -> ByteString -> Maybe Int32 -> DictVals
- DataFrame.IO.Parquet.Dictionary: readNInt96Times :: Int -> ByteString -> ([UTCTime], ByteString)
- DataFrame.IO.Parquet.Dictionary: readPageBool :: ByteString -> [Bool]
- DataFrame.IO.Parquet.Dictionary: readPageBytes :: ByteString -> [Text]
- DataFrame.IO.Parquet.Dictionary: readPageFixedBytes :: ByteString -> Int -> [Text]
- DataFrame.IO.Parquet.Dictionary: readPageFloat :: ByteString -> [Float]
- DataFrame.IO.Parquet.Dictionary: readPageInt32 :: ByteString -> [Int32]
- DataFrame.IO.Parquet.Dictionary: readPageInt64 :: ByteString -> [Int64]
- DataFrame.IO.Parquet.Dictionary: readPageInt96Times :: ByteString -> [UTCTime]
- DataFrame.IO.Parquet.Dictionary: readPageWord64 :: ByteString -> [Double]
- DataFrame.IO.Parquet.Dictionary: stitchForRepBool :: Int -> Int -> [Int] -> [Int] -> [Bool] -> Column
- DataFrame.IO.Parquet.Dictionary: stitchForRepDouble :: Int -> Int -> [Int] -> [Int] -> [Double] -> Column
- DataFrame.IO.Parquet.Dictionary: stitchForRepFloat :: Int -> Int -> [Int] -> [Int] -> [Float] -> Column
- DataFrame.IO.Parquet.Dictionary: stitchForRepInt32 :: Int -> Int -> [Int] -> [Int] -> [Int32] -> Column
- DataFrame.IO.Parquet.Dictionary: stitchForRepInt64 :: Int -> Int -> [Int] -> [Int] -> [Int64] -> Column
- DataFrame.IO.Parquet.Dictionary: stitchForRepText :: Int -> Int -> [Int] -> [Int] -> [Text] -> Column
- DataFrame.IO.Parquet.Dictionary: stitchForRepUTCTime :: Int -> Int -> [Int] -> [Int] -> [UTCTime] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeBool :: Int -> [Int] -> [Bool] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeDouble :: Int -> [Int] -> [Double] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeFloat :: Int -> [Int] -> [Float] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeInt32 :: Int -> [Int] -> [Int32] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeInt64 :: Int -> [Int] -> [Int64] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeText :: Int -> [Int] -> [Text] -> Column
- DataFrame.IO.Parquet.Dictionary: toMaybeUTCTime :: Int -> [Int] -> [UTCTime] -> Column
- DataFrame.IO.Parquet.Encoding: bitWidthForMaxLevel :: Int -> Int
- DataFrame.IO.Parquet.Encoding: bytesForBW :: Int -> Int
- DataFrame.IO.Parquet.Encoding: ceilLog2 :: Int -> Int
- DataFrame.IO.Parquet.Encoding: decodeDictIndicesV1 :: Int -> Int -> ByteString -> (Vector Int, ByteString)
- DataFrame.IO.Parquet.Encoding: decodeRLEBitPackedHybrid :: Int -> Int -> ByteString -> ([Word32], ByteString)
- DataFrame.IO.Parquet.Encoding: extractBits :: Int -> Int -> ByteString -> [Word32]
- DataFrame.IO.Parquet.Encoding: unpackBitPacked :: Int -> Int -> ByteString -> ([Word32], ByteString)
- DataFrame.IO.Parquet.Levels: SNode :: String -> RepetitionType -> [SNode] -> SNode
- DataFrame.IO.Parquet.Levels: [sChildren] :: SNode -> [SNode]
- DataFrame.IO.Parquet.Levels: [sName] :: SNode -> String
- DataFrame.IO.Parquet.Levels: [sRep] :: SNode -> RepetitionType
- DataFrame.IO.Parquet.Levels: data SNode
- DataFrame.IO.Parquet.Levels: instance GHC.Classes.Eq DataFrame.IO.Parquet.Levels.SNode
- DataFrame.IO.Parquet.Levels: instance GHC.Show.Show DataFrame.IO.Parquet.Levels.SNode
- DataFrame.IO.Parquet.Levels: levelsForPath :: [SchemaElement] -> [String] -> (Int, Int)
- DataFrame.IO.Parquet.Levels: pairWithVals :: Int -> [(Int, Int)] -> [a] -> [(Int, Int, Maybe a)]
- DataFrame.IO.Parquet.Levels: parseAll :: [SchemaElement] -> [SNode]
- DataFrame.IO.Parquet.Levels: parseMany :: Int -> [SchemaElement] -> ([SNode], [SchemaElement])
- DataFrame.IO.Parquet.Levels: parseOne :: [SchemaElement] -> (SNode, [SchemaElement])
- DataFrame.IO.Parquet.Levels: readLevelsV1 :: Int -> Int -> Int -> ByteString -> ([Int], [Int], ByteString)
- DataFrame.IO.Parquet.Levels: readLevelsV2 :: Int -> Int -> Int -> Int32 -> Int32 -> ByteString -> ([Int], [Int], ByteString)
- DataFrame.IO.Parquet.Levels: splitAtRepBound :: Int -> [(Int, Int, Maybe a)] -> [[(Int, Int, Maybe a)]]
- DataFrame.IO.Parquet.Levels: stitchList :: Int -> [Int] -> [Int] -> [a] -> [Maybe [Maybe a]]
- DataFrame.IO.Parquet.Levels: stitchList2 :: Int -> Int -> [Int] -> [Int] -> [a] -> [Maybe [Maybe [Maybe a]]]
- DataFrame.IO.Parquet.Levels: stitchList3 :: Int -> Int -> Int -> [Int] -> [Int] -> [a] -> [Maybe [Maybe [Maybe [Maybe a]]]]
- DataFrame.IO.Parquet.Levels: stitchNullable :: Int -> [Int] -> [a] -> [Maybe a]
- DataFrame.IO.Parquet.Page: isDataPage :: Page -> Bool
- DataFrame.IO.Parquet.Page: isDictionaryPage :: Page -> Bool
- DataFrame.IO.Parquet.Page: readAllPages :: CompressionCodec -> ByteString -> IO [Page]
- DataFrame.IO.Parquet.Page: readField' :: ByteString -> Int16 -> Maybe (ByteString, TType, Int16)
- DataFrame.IO.Parquet.Page: readNBool :: Int -> ByteString -> ([Bool], ByteString)
- DataFrame.IO.Parquet.Page: readNByteArrays :: Int -> ByteString -> ([ByteString], ByteString)
- DataFrame.IO.Parquet.Page: readNDouble :: Int -> ByteString -> ([Double], ByteString)
- DataFrame.IO.Parquet.Page: readNDoubleVec :: Int -> ByteString -> Vector Double
- DataFrame.IO.Parquet.Page: readNFloat :: Int -> ByteString -> ([Float], ByteString)
- DataFrame.IO.Parquet.Page: readNFloatVec :: Int -> ByteString -> Vector Float
- DataFrame.IO.Parquet.Page: readNInt32 :: Int -> ByteString -> ([Int32], ByteString)
- DataFrame.IO.Parquet.Page: readNInt32Vec :: Int -> ByteString -> Vector Int32
- DataFrame.IO.Parquet.Page: readNInt64 :: Int -> ByteString -> ([Int64], ByteString)
- DataFrame.IO.Parquet.Page: readNInt64Vec :: Int -> ByteString -> Vector Int64
- DataFrame.IO.Parquet.Page: readPage :: CompressionCodec -> ByteString -> IO (Maybe Page, ByteString)
- DataFrame.IO.Parquet.Page: readPageHeader :: PageHeader -> ByteString -> Int16 -> (PageHeader, ByteString)
- DataFrame.IO.Parquet.Page: readPageTypeHeader :: PageTypeHeader -> ByteString -> Int16 -> (PageTypeHeader, ByteString)
- DataFrame.IO.Parquet.Page: readStatisticsFromBytes :: ColumnStatistics -> ByteString -> Int16 -> (ColumnStatistics, ByteString)
- DataFrame.IO.Parquet.Page: splitFixed :: Int -> Int -> ByteString -> ([ByteString], ByteString)
- DataFrame.IO.Parquet.Seeking: AbsoluteSeek :: SeekMode
- DataFrame.IO.Parquet.Seeking: FileBuffered :: !IORef Int64 -> !ByteString -> FileBufferedOrSeekable
- DataFrame.IO.Parquet.Seeking: FileSeekable :: !SeekableHandle -> FileBufferedOrSeekable
- DataFrame.IO.Parquet.Seeking: RelativeSeek :: SeekMode
- DataFrame.IO.Parquet.Seeking: SeekFromEnd :: SeekMode
- DataFrame.IO.Parquet.Seeking: advanceBytes :: Int -> FileBufferedOrSeekable -> IO ByteString
- DataFrame.IO.Parquet.Seeking: data FileBufferedOrSeekable
- DataFrame.IO.Parquet.Seeking: data SeekMode
- DataFrame.IO.Parquet.Seeking: data SeekableHandle
- DataFrame.IO.Parquet.Seeking: mkFileBufferedOrSeekable :: ForceNonSeekable -> Handle -> IO FileBufferedOrSeekable
- DataFrame.IO.Parquet.Seeking: mkSeekableHandle :: Handle -> IO (Maybe SeekableHandle)
- DataFrame.IO.Parquet.Seeking: readLastBytes :: Integer -> FileBufferedOrSeekable -> IO ByteString
- DataFrame.IO.Parquet.Seeking: seekAndReadBytes :: Maybe (SeekMode, Integer) -> Int -> FileBufferedOrSeekable -> IO ByteString
- DataFrame.IO.Parquet.Seeking: seekAndStreamBytes :: MonadIO m => Maybe (SeekMode, Integer) -> Int -> FileBufferedOrSeekable -> m (Stream m Word8)
- DataFrame.IO.Parquet.Seeking: type ForceNonSeekable = Maybe Bool
- DataFrame.IO.Parquet.Seeking: withFileBufferedOrSeekable :: ForceNonSeekable -> FilePath -> IOMode -> (FileBufferedOrSeekable -> IO a) -> IO a
- DataFrame.IO.Parquet.Thrift: BOOL :: TType
- DataFrame.IO.Parquet.Thrift: BYTE :: TType
- DataFrame.IO.Parquet.Thrift: ColumnChunk :: String -> Int64 -> ColumnMetaData -> Int64 -> Int32 -> Int64 -> Int32 -> ColumnCryptoMetadata -> ByteString -> ColumnChunk
- DataFrame.IO.Parquet.Thrift: ColumnMetaData :: ParquetType -> [ParquetEncoding] -> [String] -> CompressionCodec -> Int64 -> Int64 -> Int64 -> [KeyValue] -> Int64 -> Int64 -> Int64 -> ColumnStatistics -> [PageEncodingStats] -> Int64 -> Int32 -> SizeStatistics -> GeospatialStatistics -> ColumnMetaData
- DataFrame.IO.Parquet.Thrift: DOUBLE :: TType
- DataFrame.IO.Parquet.Thrift: FLOAT :: TType
- DataFrame.IO.Parquet.Thrift: FileMetaData :: Int32 -> [SchemaElement] -> Integer -> [RowGroup] -> [KeyValue] -> Maybe String -> [ColumnOrder] -> EncryptionAlgorithm -> ByteString -> FileMetadata
- DataFrame.IO.Parquet.Thrift: I16 :: TType
- DataFrame.IO.Parquet.Thrift: I32 :: TType
- DataFrame.IO.Parquet.Thrift: I64 :: TType
- DataFrame.IO.Parquet.Thrift: I96 :: TType
- DataFrame.IO.Parquet.Thrift: KeyValue :: String -> String -> KeyValue
- DataFrame.IO.Parquet.Thrift: LIST :: TType
- DataFrame.IO.Parquet.Thrift: MAP :: TType
- DataFrame.IO.Parquet.Thrift: RowGroup :: [ColumnChunk] -> Int64 -> Int64 -> [SortingColumn] -> Int64 -> Int64 -> Int16 -> RowGroup
- DataFrame.IO.Parquet.Thrift: SET :: TType
- DataFrame.IO.Parquet.Thrift: STOP :: TType
- DataFrame.IO.Parquet.Thrift: STRING :: TType
- DataFrame.IO.Parquet.Thrift: STRUCT :: TType
- DataFrame.IO.Parquet.Thrift: SchemaElement :: Text -> TType -> Int32 -> Int32 -> Int32 -> RepetitionType -> Int32 -> Int32 -> Int32 -> LogicalType -> SchemaElement
- DataFrame.IO.Parquet.Thrift: UUID :: TType
- DataFrame.IO.Parquet.Thrift: [bloomFilterLength] :: ColumnMetaData -> Int32
- DataFrame.IO.Parquet.Thrift: [bloomFilterOffset] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnChunkColumnIndexLength] :: ColumnChunk -> Int32
- DataFrame.IO.Parquet.Thrift: [columnChunkColumnIndexOffset] :: ColumnChunk -> Int64
- DataFrame.IO.Parquet.Thrift: [columnChunkFilePath] :: ColumnChunk -> String
- DataFrame.IO.Parquet.Thrift: [columnChunkMetadataFileOffset] :: ColumnChunk -> Int64
- DataFrame.IO.Parquet.Thrift: [columnChunkOffsetIndexLength] :: ColumnChunk -> Int32
- DataFrame.IO.Parquet.Thrift: [columnChunkOffsetIndexOffset] :: ColumnChunk -> Int64
- DataFrame.IO.Parquet.Thrift: [columnCodec] :: ColumnMetaData -> CompressionCodec
- DataFrame.IO.Parquet.Thrift: [columnDataPageOffset] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnDictionaryPageOffset] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnEncodingStats] :: ColumnMetaData -> [PageEncodingStats]
- DataFrame.IO.Parquet.Thrift: [columnEncodings] :: ColumnMetaData -> [ParquetEncoding]
- DataFrame.IO.Parquet.Thrift: [columnGeospatialStatistics] :: ColumnMetaData -> GeospatialStatistics
- DataFrame.IO.Parquet.Thrift: [columnIndexPageOffset] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnKeyValueMetadata] :: ColumnMetaData -> [KeyValue]
- DataFrame.IO.Parquet.Thrift: [columnMetaData] :: ColumnChunk -> ColumnMetaData
- DataFrame.IO.Parquet.Thrift: [columnNumValues] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnOrders] :: FileMetadata -> [ColumnOrder]
- DataFrame.IO.Parquet.Thrift: [columnPathInSchema] :: ColumnMetaData -> [String]
- DataFrame.IO.Parquet.Thrift: [columnSizeStatistics] :: ColumnMetaData -> SizeStatistics
- DataFrame.IO.Parquet.Thrift: [columnStatistics] :: ColumnMetaData -> ColumnStatistics
- DataFrame.IO.Parquet.Thrift: [columnTotalCompressedSize] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnTotalUncompressedSize] :: ColumnMetaData -> Int64
- DataFrame.IO.Parquet.Thrift: [columnType] :: ColumnMetaData -> ParquetType
- DataFrame.IO.Parquet.Thrift: [convertedType] :: SchemaElement -> Int32
- DataFrame.IO.Parquet.Thrift: [createdBy] :: FileMetadata -> Maybe String
- DataFrame.IO.Parquet.Thrift: [cryptoMetadata] :: ColumnChunk -> ColumnCryptoMetadata
- DataFrame.IO.Parquet.Thrift: [elementName] :: SchemaElement -> Text
- DataFrame.IO.Parquet.Thrift: [elementType] :: SchemaElement -> TType
- DataFrame.IO.Parquet.Thrift: [encryptedColumnMetadata] :: ColumnChunk -> ByteString
- DataFrame.IO.Parquet.Thrift: [encryptionAlgorithm] :: FileMetadata -> EncryptionAlgorithm
- DataFrame.IO.Parquet.Thrift: [fieldId] :: SchemaElement -> Int32
- DataFrame.IO.Parquet.Thrift: [fileOffset] :: RowGroup -> Int64
- DataFrame.IO.Parquet.Thrift: [footerSigningKeyMetadata] :: FileMetadata -> ByteString
- DataFrame.IO.Parquet.Thrift: [keyValueMetadata] :: FileMetadata -> [KeyValue]
- DataFrame.IO.Parquet.Thrift: [key] :: KeyValue -> String
- DataFrame.IO.Parquet.Thrift: [logicalType] :: SchemaElement -> LogicalType
- DataFrame.IO.Parquet.Thrift: [numChildren] :: SchemaElement -> Int32
- DataFrame.IO.Parquet.Thrift: [numRows] :: FileMetadata -> Integer
- DataFrame.IO.Parquet.Thrift: [ordinal] :: RowGroup -> Int16
- DataFrame.IO.Parquet.Thrift: [precision] :: SchemaElement -> Int32
- DataFrame.IO.Parquet.Thrift: [repetitionType] :: SchemaElement -> RepetitionType
- DataFrame.IO.Parquet.Thrift: [rowGroupColumns] :: RowGroup -> [ColumnChunk]
- DataFrame.IO.Parquet.Thrift: [rowGroupNumRows] :: RowGroup -> Int64
- DataFrame.IO.Parquet.Thrift: [rowGroupSortingColumns] :: RowGroup -> [SortingColumn]
- DataFrame.IO.Parquet.Thrift: [rowGroups] :: FileMetadata -> [RowGroup]
- DataFrame.IO.Parquet.Thrift: [scale] :: SchemaElement -> Int32
- DataFrame.IO.Parquet.Thrift: [schema] :: FileMetadata -> [SchemaElement]
- DataFrame.IO.Parquet.Thrift: [totalByteSize] :: RowGroup -> Int64
- DataFrame.IO.Parquet.Thrift: [totalCompressedSize] :: RowGroup -> Int64
- DataFrame.IO.Parquet.Thrift: [typeLength] :: SchemaElement -> Int32
- DataFrame.IO.Parquet.Thrift: [value] :: KeyValue -> String
- DataFrame.IO.Parquet.Thrift: [version] :: FileMetadata -> Int32
- DataFrame.IO.Parquet.Thrift: compactBinary :: Word8
- DataFrame.IO.Parquet.Thrift: compactBooleanTrue :: Word8
- DataFrame.IO.Parquet.Thrift: compactDouble :: Word8
- DataFrame.IO.Parquet.Thrift: compactI32 :: Word8
- DataFrame.IO.Parquet.Thrift: compactI64 :: Word8
- DataFrame.IO.Parquet.Thrift: compactList :: Word8
- DataFrame.IO.Parquet.Thrift: compactStruct :: Word8
- DataFrame.IO.Parquet.Thrift: createParquetSchema :: DataFrame -> [SchemaElement]
- DataFrame.IO.Parquet.Thrift: data ColumnChunk
- DataFrame.IO.Parquet.Thrift: data ColumnMetaData
- DataFrame.IO.Parquet.Thrift: data FileMetadata
- DataFrame.IO.Parquet.Thrift: data KeyValue
- DataFrame.IO.Parquet.Thrift: data RowGroup
- DataFrame.IO.Parquet.Thrift: data SchemaElement
- DataFrame.IO.Parquet.Thrift: data TType
- DataFrame.IO.Parquet.Thrift: defaultMetadata :: FileMetadata
- DataFrame.IO.Parquet.Thrift: defaultSchemaElement :: SchemaElement
- DataFrame.IO.Parquet.Thrift: emptyColumnChunk :: ColumnChunk
- DataFrame.IO.Parquet.Thrift: emptyColumnMetadata :: ColumnMetaData
- DataFrame.IO.Parquet.Thrift: emptyKeyValue :: KeyValue
- DataFrame.IO.Parquet.Thrift: emptyRowGroup :: RowGroup
- DataFrame.IO.Parquet.Thrift: footerSize :: Int
- DataFrame.IO.Parquet.Thrift: haskellToTType :: Typeable a => TType
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.ColumnChunk
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.ColumnMetaData
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.FileMetadata
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.KeyValue
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.RowGroup
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.SchemaElement
- DataFrame.IO.Parquet.Thrift: instance GHC.Classes.Eq DataFrame.IO.Parquet.Thrift.TType
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.ColumnChunk
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.ColumnMetaData
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.FileMetadata
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.KeyValue
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.RowGroup
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.SchemaElement
- DataFrame.IO.Parquet.Thrift: instance GHC.Show.Show DataFrame.IO.Parquet.Thrift.TType
- DataFrame.IO.Parquet.Thrift: readAesGcmCtrV1 :: EncryptionAlgorithm -> ByteString -> IORef Int -> Int16 -> IO EncryptionAlgorithm
- DataFrame.IO.Parquet.Thrift: readAesGcmV1 :: EncryptionAlgorithm -> ByteString -> IORef Int -> Int16 -> IO EncryptionAlgorithm
- DataFrame.IO.Parquet.Thrift: readColumnChunk :: ColumnChunk -> ByteString -> IORef Int -> Int16 -> IO ColumnChunk
- DataFrame.IO.Parquet.Thrift: readColumnMetadata :: ColumnMetaData -> ByteString -> IORef Int -> Int16 -> IO ColumnMetaData
- DataFrame.IO.Parquet.Thrift: readColumnOrder :: ByteString -> IORef Int -> Int16 -> IO ColumnOrder
- DataFrame.IO.Parquet.Thrift: readDecimalType :: Int32 -> Int32 -> ByteString -> IORef Int -> Int16 -> IO LogicalType
- DataFrame.IO.Parquet.Thrift: readEncryptionAlgorithm :: ByteString -> IORef Int -> Int16 -> IO EncryptionAlgorithm
- DataFrame.IO.Parquet.Thrift: readField :: ByteString -> IORef Int -> Int16 -> IO (Maybe (TType, Int16))
- DataFrame.IO.Parquet.Thrift: readFileMetaData :: FileMetadata -> ByteString -> IORef Int -> Int16 -> IO FileMetadata
- DataFrame.IO.Parquet.Thrift: readIntType :: Int8 -> Bool -> ByteString -> IORef Int -> Int16 -> IO LogicalType
- DataFrame.IO.Parquet.Thrift: readKeyValue :: KeyValue -> ByteString -> IORef Int -> Int16 -> IO KeyValue
- DataFrame.IO.Parquet.Thrift: readLogicalType :: LogicalType -> ByteString -> IORef Int -> Int16 -> IO LogicalType
- DataFrame.IO.Parquet.Thrift: readMetadata :: ByteString -> Int -> IO FileMetadata
- DataFrame.IO.Parquet.Thrift: readMetadataByHandleMetaSize :: FileBufferedOrSeekable -> Int -> IO FileMetadata
- DataFrame.IO.Parquet.Thrift: readPageEncodingStats :: PageEncodingStats -> ByteString -> IORef Int -> Int16 -> IO PageEncodingStats
- DataFrame.IO.Parquet.Thrift: readParquetEncoding :: ByteString -> IORef Int -> Int16 -> IO ParquetEncoding
- DataFrame.IO.Parquet.Thrift: readRowGroup :: RowGroup -> ByteString -> IORef Int -> Int16 -> IO RowGroup
- DataFrame.IO.Parquet.Thrift: readSchemaElement :: SchemaElement -> ByteString -> IORef Int -> Int16 -> IO SchemaElement
- DataFrame.IO.Parquet.Thrift: readSizeStatistics :: SizeStatistics -> ByteString -> IORef Int -> Int16 -> IO SizeStatistics
- DataFrame.IO.Parquet.Thrift: readStatistics :: ColumnStatistics -> ByteString -> IORef Int -> Int16 -> IO ColumnStatistics
- DataFrame.IO.Parquet.Thrift: readTimeType :: Bool -> TimeUnit -> ByteString -> IORef Int -> Int16 -> IO LogicalType
- DataFrame.IO.Parquet.Thrift: readTimestampType :: Bool -> TimeUnit -> ByteString -> IORef Int -> Int16 -> IO LogicalType
- DataFrame.IO.Parquet.Thrift: readTypeOrder :: ByteString -> IORef Int -> Int16 -> IO ColumnOrder
- DataFrame.IO.Parquet.Thrift: readUnit :: TimeUnit -> ByteString -> IORef Int -> Int16 -> IO TimeUnit
- DataFrame.IO.Parquet.Thrift: skipFieldData :: TType -> ByteString -> IORef Int -> IO ()
- DataFrame.IO.Parquet.Thrift: skipList :: ByteString -> IORef Int -> IO ()
- DataFrame.IO.Parquet.Thrift: skipToStructEnd :: ByteString -> IORef Int -> IO ()
- DataFrame.IO.Parquet.Thrift: toIntegralType :: Int32 -> TType
- DataFrame.IO.Parquet.Thrift: toTType :: Word8 -> TType
- DataFrame.IO.Parquet.Time: dayToJulianDay :: Day -> Integer
- DataFrame.IO.Parquet.Time: int96ToUTCTime :: ByteString -> UTCTime
- DataFrame.IO.Parquet.Time: julianDayAndNanosToUTCTime :: Integer -> Word64 -> UTCTime
- DataFrame.IO.Parquet.Time: julianDayToDay :: Integer -> Day
- DataFrame.IO.Parquet.Time: utcTimeToInt96 :: UTCTime -> ByteString
- DataFrame.IO.Parquet.Types: ANDOYER :: EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: AesGcmCtrV1 :: ByteString -> ByteString -> Bool -> EncryptionAlgorithm
- DataFrame.IO.Parquet.Types: AesGcmV1 :: ByteString -> ByteString -> Bool -> EncryptionAlgorithm
- DataFrame.IO.Parquet.Types: BROTLI :: CompressionCodec
- DataFrame.IO.Parquet.Types: BSON_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: BoundingBox :: Double -> Double -> Double -> Double -> Double -> Double -> Double -> Double -> BoundingBox
- DataFrame.IO.Parquet.Types: COLUMN_CRYPTO_METADATA_UNKNOWN :: ColumnCryptoMetadata
- DataFrame.IO.Parquet.Types: COLUMN_ORDER_UNKNOWN :: ColumnOrder
- DataFrame.IO.Parquet.Types: COMPRESSION_CODEC_UNKNOWN :: CompressionCodec
- DataFrame.IO.Parquet.Types: ColumnStatistics :: ByteString -> ByteString -> Int64 -> Int64 -> ByteString -> ByteString -> Bool -> Bool -> ColumnStatistics
- DataFrame.IO.Parquet.Types: DATA_PAGE :: PageType
- DataFrame.IO.Parquet.Types: DATA_PAGE_V2 :: PageType
- DataFrame.IO.Parquet.Types: DATE_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: DBool :: Vector Bool -> DictVals
- DataFrame.IO.Parquet.Types: DDouble :: Vector Double -> DictVals
- DataFrame.IO.Parquet.Types: DECIMAL_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: DFloat :: Vector Float -> DictVals
- DataFrame.IO.Parquet.Types: DICTIONARY_PAGE :: PageType
- DataFrame.IO.Parquet.Types: DInt32 :: Vector Int32 -> DictVals
- DataFrame.IO.Parquet.Types: DInt64 :: Vector Int64 -> DictVals
- DataFrame.IO.Parquet.Types: DInt96 :: Vector UTCTime -> DictVals
- DataFrame.IO.Parquet.Types: DText :: Vector Text -> DictVals
- DataFrame.IO.Parquet.Types: DataPageHeader :: Int32 -> ParquetEncoding -> ParquetEncoding -> ParquetEncoding -> ColumnStatistics -> PageTypeHeader
- DataFrame.IO.Parquet.Types: DataPageHeaderV2 :: Int32 -> Int32 -> Int32 -> ParquetEncoding -> Int32 -> Int32 -> Bool -> ColumnStatistics -> PageTypeHeader
- DataFrame.IO.Parquet.Types: DecimalType :: Int32 -> Int32 -> LogicalType
- DataFrame.IO.Parquet.Types: DictionaryPageHeader :: Int32 -> ParquetEncoding -> Bool -> PageTypeHeader
- DataFrame.IO.Parquet.Types: EBIT_PACKED :: ParquetEncoding
- DataFrame.IO.Parquet.Types: EBYTE_STREAM_SPLIT :: ParquetEncoding
- DataFrame.IO.Parquet.Types: EDELTA_BINARY_PACKED :: ParquetEncoding
- DataFrame.IO.Parquet.Types: EDELTA_BYTE_ARRAY :: ParquetEncoding
- DataFrame.IO.Parquet.Types: EDELTA_LENGTH_BYTE_ARRAY :: ParquetEncoding
- DataFrame.IO.Parquet.Types: ENCRYPTION_ALGORITHM_UNKNOWN :: EncryptionAlgorithm
- DataFrame.IO.Parquet.Types: ENCRYPTION_WITH_FOOTER_KEY :: ColumnCryptoMetadata
- DataFrame.IO.Parquet.Types: ENUM_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: EPLAIN :: ParquetEncoding
- DataFrame.IO.Parquet.Types: EPLAIN_DICTIONARY :: ParquetEncoding
- DataFrame.IO.Parquet.Types: ERLE :: ParquetEncoding
- DataFrame.IO.Parquet.Types: ERLE_DICTIONARY :: ParquetEncoding
- DataFrame.IO.Parquet.Types: EncryptionWithColumnKey :: [String] -> ByteString -> ColumnCryptoMetadata
- DataFrame.IO.Parquet.Types: FLOAT16_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: GZIP :: CompressionCodec
- DataFrame.IO.Parquet.Types: GeographyType :: Text -> EdgeInterpolationAlgorithm -> LogicalType
- DataFrame.IO.Parquet.Types: GeometryType :: Text -> LogicalType
- DataFrame.IO.Parquet.Types: GeospatialStatistics :: BoundingBox -> [Int32] -> GeospatialStatistics
- DataFrame.IO.Parquet.Types: INDEX_PAGE :: PageType
- DataFrame.IO.Parquet.Types: INDEX_PAGE_HEADER :: PageTypeHeader
- DataFrame.IO.Parquet.Types: IntType :: Int8 -> Bool -> LogicalType
- DataFrame.IO.Parquet.Types: JSON_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: KARNEY :: EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: LIST_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: LOGICAL_TYPE_UNKNOWN :: LogicalType
- DataFrame.IO.Parquet.Types: LZ4 :: CompressionCodec
- DataFrame.IO.Parquet.Types: LZ4_RAW :: CompressionCodec
- DataFrame.IO.Parquet.Types: LZO :: CompressionCodec
- DataFrame.IO.Parquet.Types: MAP_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: MICROSECONDS :: TimeUnit
- DataFrame.IO.Parquet.Types: MILLISECONDS :: TimeUnit
- DataFrame.IO.Parquet.Types: NANOSECONDS :: TimeUnit
- DataFrame.IO.Parquet.Types: OPTIONAL :: RepetitionType
- DataFrame.IO.Parquet.Types: PAGE_TYPE_HEADER_UNKNOWN :: PageTypeHeader
- DataFrame.IO.Parquet.Types: PAGE_TYPE_UNKNOWN :: PageType
- DataFrame.IO.Parquet.Types: PARQUET_ENCODING_UNKNOWN :: ParquetEncoding
- DataFrame.IO.Parquet.Types: PARQUET_TYPE_UNKNOWN :: ParquetType
- DataFrame.IO.Parquet.Types: PBOOLEAN :: ParquetType
- DataFrame.IO.Parquet.Types: PBYTE_ARRAY :: ParquetType
- DataFrame.IO.Parquet.Types: PDOUBLE :: ParquetType
- DataFrame.IO.Parquet.Types: PFIXED_LEN_BYTE_ARRAY :: ParquetType
- DataFrame.IO.Parquet.Types: PFLOAT :: ParquetType
- DataFrame.IO.Parquet.Types: PINT32 :: ParquetType
- DataFrame.IO.Parquet.Types: PINT64 :: ParquetType
- DataFrame.IO.Parquet.Types: PINT96 :: ParquetType
- DataFrame.IO.Parquet.Types: Page :: PageHeader -> ByteString -> Page
- DataFrame.IO.Parquet.Types: PageEncodingStats :: PageType -> ParquetEncoding -> Int32 -> PageEncodingStats
- DataFrame.IO.Parquet.Types: PageHeader :: PageType -> Int32 -> Int32 -> Int32 -> PageTypeHeader -> PageHeader
- DataFrame.IO.Parquet.Types: REPEATED :: RepetitionType
- DataFrame.IO.Parquet.Types: REQUIRED :: RepetitionType
- DataFrame.IO.Parquet.Types: SNAPPY :: CompressionCodec
- DataFrame.IO.Parquet.Types: SPHERICAL :: EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: STRING_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: SizeStatisics :: Int64 -> [Int64] -> [Int64] -> SizeStatistics
- DataFrame.IO.Parquet.Types: SortingColumn :: Int32 -> Bool -> Bool -> SortingColumn
- DataFrame.IO.Parquet.Types: THOMAS :: EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: TIME_UNIT_UNKNOWN :: TimeUnit
- DataFrame.IO.Parquet.Types: TYPE_ORDER :: ColumnOrder
- DataFrame.IO.Parquet.Types: TimeType :: Bool -> TimeUnit -> LogicalType
- DataFrame.IO.Parquet.Types: TimestampType :: Bool -> TimeUnit -> LogicalType
- DataFrame.IO.Parquet.Types: UNCOMPRESSED :: CompressionCodec
- DataFrame.IO.Parquet.Types: UNKNOWN_REPETITION_TYPE :: RepetitionType
- DataFrame.IO.Parquet.Types: UUID_TYPE :: LogicalType
- DataFrame.IO.Parquet.Types: VINCENTY :: EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: VariantType :: Int8 -> LogicalType
- DataFrame.IO.Parquet.Types: ZSTD :: CompressionCodec
- DataFrame.IO.Parquet.Types: [aadFileUnique] :: EncryptionAlgorithm -> ByteString
- DataFrame.IO.Parquet.Types: [aadPrefix] :: EncryptionAlgorithm -> ByteString
- DataFrame.IO.Parquet.Types: [algorithm] :: LogicalType -> EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: [bbox] :: GeospatialStatistics -> BoundingBox
- DataFrame.IO.Parquet.Types: [bitWidth] :: LogicalType -> Int8
- DataFrame.IO.Parquet.Types: [columnCryptPathInSchema] :: ColumnCryptoMetadata -> [String]
- DataFrame.IO.Parquet.Types: [columnDistictCount] :: ColumnStatistics -> Int64
- DataFrame.IO.Parquet.Types: [columnIndex] :: SortingColumn -> Int32
- DataFrame.IO.Parquet.Types: [columnKeyMetadata] :: ColumnCryptoMetadata -> ByteString
- DataFrame.IO.Parquet.Types: [columnMaxValue] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.Types: [columnMax] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.Types: [columnMinValue] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.Types: [columnMin] :: ColumnStatistics -> ByteString
- DataFrame.IO.Parquet.Types: [columnNullCount] :: ColumnStatistics -> Int64
- DataFrame.IO.Parquet.Types: [columnOrderDescending] :: SortingColumn -> Bool
- DataFrame.IO.Parquet.Types: [compressedPageSize] :: PageHeader -> Int32
- DataFrame.IO.Parquet.Types: [crs] :: LogicalType -> Text
- DataFrame.IO.Parquet.Types: [dataPageHeaderEncoding] :: PageTypeHeader -> ParquetEncoding
- DataFrame.IO.Parquet.Types: [dataPageHeaderNumValues] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [dataPageHeaderStatistics] :: PageTypeHeader -> ColumnStatistics
- DataFrame.IO.Parquet.Types: [dataPageHeaderV2Encoding] :: PageTypeHeader -> ParquetEncoding
- DataFrame.IO.Parquet.Types: [dataPageHeaderV2IsCompressed] :: PageTypeHeader -> Bool
- DataFrame.IO.Parquet.Types: [dataPageHeaderV2NumNulls] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [dataPageHeaderV2NumRows] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [dataPageHeaderV2NumValues] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [dataPageHeaderV2Statistics] :: PageTypeHeader -> ColumnStatistics
- DataFrame.IO.Parquet.Types: [decimalTypePrecision] :: LogicalType -> Int32
- DataFrame.IO.Parquet.Types: [decimalTypeScale] :: LogicalType -> Int32
- DataFrame.IO.Parquet.Types: [definitionLevelByteLength] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [definitionLevelEncoding] :: PageTypeHeader -> ParquetEncoding
- DataFrame.IO.Parquet.Types: [definitionLevelHistogram] :: SizeStatistics -> [Int64]
- DataFrame.IO.Parquet.Types: [dictionaryPageHeaderEncoding] :: PageTypeHeader -> ParquetEncoding
- DataFrame.IO.Parquet.Types: [dictionaryPageHeaderNumValues] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [dictionaryPageIsSorted] :: PageTypeHeader -> Bool
- DataFrame.IO.Parquet.Types: [geospatialTypes] :: GeospatialStatistics -> [Int32]
- DataFrame.IO.Parquet.Types: [intIsSigned] :: LogicalType -> Bool
- DataFrame.IO.Parquet.Types: [isAdjustedToUTC] :: LogicalType -> Bool
- DataFrame.IO.Parquet.Types: [isColumnMaxValueExact] :: ColumnStatistics -> Bool
- DataFrame.IO.Parquet.Types: [isColumnMinValueExact] :: ColumnStatistics -> Bool
- DataFrame.IO.Parquet.Types: [mmax] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [mmin] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [nullFirst] :: SortingColumn -> Bool
- DataFrame.IO.Parquet.Types: [pageBytes] :: Page -> ByteString
- DataFrame.IO.Parquet.Types: [pageEncodingPageType] :: PageEncodingStats -> PageType
- DataFrame.IO.Parquet.Types: [pageEncoding] :: PageEncodingStats -> ParquetEncoding
- DataFrame.IO.Parquet.Types: [pageHeaderCrcChecksum] :: PageHeader -> Int32
- DataFrame.IO.Parquet.Types: [pageHeaderPageType] :: PageHeader -> PageType
- DataFrame.IO.Parquet.Types: [pageHeader] :: Page -> PageHeader
- DataFrame.IO.Parquet.Types: [pageTypeHeader] :: PageHeader -> PageTypeHeader
- DataFrame.IO.Parquet.Types: [pagesWithEncoding] :: PageEncodingStats -> Int32
- DataFrame.IO.Parquet.Types: [repetitionLevelByteLength] :: PageTypeHeader -> Int32
- DataFrame.IO.Parquet.Types: [repetitionLevelEncoding] :: PageTypeHeader -> ParquetEncoding
- DataFrame.IO.Parquet.Types: [repetitionLevelHistogram] :: SizeStatistics -> [Int64]
- DataFrame.IO.Parquet.Types: [specificationVersion] :: LogicalType -> Int8
- DataFrame.IO.Parquet.Types: [supplyAadPrefix] :: EncryptionAlgorithm -> Bool
- DataFrame.IO.Parquet.Types: [uncompressedPageSize] :: PageHeader -> Int32
- DataFrame.IO.Parquet.Types: [unencodedByteArrayDataTypes] :: SizeStatistics -> Int64
- DataFrame.IO.Parquet.Types: [unit] :: LogicalType -> TimeUnit
- DataFrame.IO.Parquet.Types: [xmax] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [xmin] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [ymax] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [ymin] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [zmax] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: [zmin] :: BoundingBox -> Double
- DataFrame.IO.Parquet.Types: compressionCodecFromInt :: Int32 -> CompressionCodec
- DataFrame.IO.Parquet.Types: data BoundingBox
- DataFrame.IO.Parquet.Types: data ColumnCryptoMetadata
- DataFrame.IO.Parquet.Types: data ColumnOrder
- DataFrame.IO.Parquet.Types: data ColumnStatistics
- DataFrame.IO.Parquet.Types: data CompressionCodec
- DataFrame.IO.Parquet.Types: data DictVals
- DataFrame.IO.Parquet.Types: data EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: data EncryptionAlgorithm
- DataFrame.IO.Parquet.Types: data GeospatialStatistics
- DataFrame.IO.Parquet.Types: data LogicalType
- DataFrame.IO.Parquet.Types: data Page
- DataFrame.IO.Parquet.Types: data PageEncodingStats
- DataFrame.IO.Parquet.Types: data PageHeader
- DataFrame.IO.Parquet.Types: data PageType
- DataFrame.IO.Parquet.Types: data PageTypeHeader
- DataFrame.IO.Parquet.Types: data ParquetEncoding
- DataFrame.IO.Parquet.Types: data ParquetType
- DataFrame.IO.Parquet.Types: data RepetitionType
- DataFrame.IO.Parquet.Types: data SizeStatistics
- DataFrame.IO.Parquet.Types: data SortingColumn
- DataFrame.IO.Parquet.Types: data TimeUnit
- DataFrame.IO.Parquet.Types: emptyBoundingBox :: BoundingBox
- DataFrame.IO.Parquet.Types: emptyColumnStatistics :: ColumnStatistics
- DataFrame.IO.Parquet.Types: emptyDataPageHeader :: PageTypeHeader
- DataFrame.IO.Parquet.Types: emptyDataPageHeaderV2 :: PageTypeHeader
- DataFrame.IO.Parquet.Types: emptyDictionaryPageHeader :: PageTypeHeader
- DataFrame.IO.Parquet.Types: emptyGeospatialStatistics :: GeospatialStatistics
- DataFrame.IO.Parquet.Types: emptyPageEncodingStats :: PageEncodingStats
- DataFrame.IO.Parquet.Types: emptyPageHeader :: PageHeader
- DataFrame.IO.Parquet.Types: emptySizeStatistics :: SizeStatistics
- DataFrame.IO.Parquet.Types: emptySortingColumn :: SortingColumn
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.BoundingBox
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.ColumnCryptoMetadata
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.ColumnOrder
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.ColumnStatistics
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.CompressionCodec
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.DictVals
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.EncryptionAlgorithm
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.GeospatialStatistics
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.LogicalType
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.Page
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.PageEncodingStats
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.PageHeader
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.PageType
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.PageTypeHeader
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.ParquetEncoding
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.ParquetType
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.RepetitionType
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.SizeStatistics
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.SortingColumn
- DataFrame.IO.Parquet.Types: instance GHC.Classes.Eq DataFrame.IO.Parquet.Types.TimeUnit
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.BoundingBox
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.ColumnCryptoMetadata
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.ColumnOrder
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.ColumnStatistics
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.CompressionCodec
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.DictVals
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.EdgeInterpolationAlgorithm
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.EncryptionAlgorithm
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.GeospatialStatistics
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.LogicalType
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.Page
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.PageEncodingStats
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.PageHeader
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.PageType
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.PageTypeHeader
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.ParquetEncoding
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.ParquetType
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.RepetitionType
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.SizeStatistics
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.SortingColumn
- DataFrame.IO.Parquet.Types: instance GHC.Show.Show DataFrame.IO.Parquet.Types.TimeUnit
- DataFrame.IO.Parquet.Types: pageTypeFromInt :: Int32 -> PageType
- DataFrame.IO.Parquet.Types: parquetEncodingFromInt :: Int32 -> ParquetEncoding
- DataFrame.IO.Parquet.Types: parquetTypeFromInt :: Int32 -> ParquetType
- DataFrame.IO.Parquet.Types: repetitionTypeFromInt :: Int32 -> RepetitionType
- DataFrame.Internal.Binary: assembleWord32 :: Word8 -> Word8 -> Word8 -> Word8 -> Word32
- DataFrame.Internal.Binary: assembleWord64 :: Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word64
- DataFrame.Internal.Binary: byteAtOrZero :: Int -> ByteString -> Int -> Word8
- DataFrame.Internal.Binary: littleEndianInt32 :: ByteString -> Int32
- DataFrame.Internal.Binary: littleEndianWord32 :: ByteString -> Word32
- DataFrame.Internal.Binary: littleEndianWord64 :: ByteString -> Word64
- DataFrame.Internal.Binary: word32ToLittleEndian :: Word32 -> ByteString
- DataFrame.Internal.Binary: word64ToLittleEndian :: Word64 -> ByteString
- DataFrame.Internal.Column: [BoxedColumn] :: forall a. Columnable a => Maybe Bitmap -> Vector a -> Column
- DataFrame.Internal.Column: [MBoxedColumn] :: forall a. Columnable a => IOVector a -> MutableColumn
- DataFrame.Internal.Column: [MUnboxedColumn] :: forall a. (Columnable a, Unbox a) => IOVector a -> MutableColumn
- DataFrame.Internal.Column: [TColumn] :: forall a. Columnable a => Column -> TypedColumn a
- DataFrame.Internal.Column: [UnboxedColumn] :: forall a. (Columnable a, Unbox a) => Maybe Bitmap -> Vector a -> Column
- DataFrame.Internal.Column: allMissing :: Column -> Bool
- DataFrame.Internal.Column: allValidBitmap :: Int -> Bitmap
- DataFrame.Internal.Column: atIndicesStable :: Vector Int -> Column -> Column
- DataFrame.Internal.Column: bitmapConcat :: Int -> Bitmap -> Int -> Bitmap -> Bitmap
- DataFrame.Internal.Column: bitmapSlice :: Int -> Int -> Bitmap -> Bitmap
- DataFrame.Internal.Column: bitmapTestBit :: Bitmap -> Int -> Bool
- DataFrame.Internal.Column: buildBitmapFromNulls :: Int -> [Int] -> Bitmap
- DataFrame.Internal.Column: buildBitmapFromValid :: Vector Word8 -> Bitmap
- DataFrame.Internal.Column: class ColumnifyRep (r :: Rep) a
- DataFrame.Internal.Column: columnBitmap :: Column -> Maybe Bitmap
- DataFrame.Internal.Column: columnElemIsNull :: Column -> Int -> Bool
- DataFrame.Internal.Column: columnLength :: Column -> Int
- DataFrame.Internal.Column: columnTypeString :: Column -> String
- DataFrame.Internal.Column: columnVersionString :: Column -> String
- DataFrame.Internal.Column: concatColumns :: Column -> Column -> Either DataFrameException Column
- DataFrame.Internal.Column: concatColumnsEither :: Column -> Column -> Column
- DataFrame.Internal.Column: concatManyColumns :: [Column] -> Column
- DataFrame.Internal.Column: copyIntoMutableColumn :: MutableColumn -> Int -> Column -> IO ()
- DataFrame.Internal.Column: data Column
- DataFrame.Internal.Column: data MutableColumn
- DataFrame.Internal.Column: data TypedColumn a
- DataFrame.Internal.Column: ensureOptional :: Column -> Column
- DataFrame.Internal.Column: eqBoxedCols :: Eq a => Maybe Bitmap -> Vector a -> Maybe Bitmap -> Vector a -> Bool
- DataFrame.Internal.Column: expandColumn :: Int -> Column -> Column
- DataFrame.Internal.Column: finalizeParseResult :: Unbox a => STVector s a -> STVector s Word8 -> Bool -> ST s (Maybe (Maybe Bitmap, Vector a))
- DataFrame.Internal.Column: findIndices :: Columnable a => (a -> Bool) -> Column -> Either DataFrameException (Vector Int)
- DataFrame.Internal.Column: foldLinearGroups :: (Columnable b, Columnable acc) => (acc -> b -> acc) -> acc -> Column -> Vector Int -> Int -> Either DataFrameException Column
- DataFrame.Internal.Column: foldl1Column :: Columnable a => (a -> a -> a) -> Column -> Either DataFrameException a
- DataFrame.Internal.Column: foldl1DirectGroups :: Columnable a => (a -> a -> a) -> Column -> Vector Int -> Vector Int -> Either DataFrameException Column
- DataFrame.Internal.Column: foldlColumn :: (Columnable a, Columnable b) => (b -> a -> b) -> b -> Column -> Either DataFrameException b
- DataFrame.Internal.Column: freezeColumn' :: [(Int, Text)] -> MutableColumn -> IO Column
- DataFrame.Internal.Column: freezeColumnEither :: [(Int, Text)] -> MutableColumn -> IO Column
- DataFrame.Internal.Column: freezeMutableColumn :: MutableColumn -> IO Column
- DataFrame.Internal.Column: fromList :: (Columnable a, ColumnifyRep (KindOf a) a) => [a] -> Column
- DataFrame.Internal.Column: fromMaybeVec :: Columnable a => Vector (Maybe a) -> Column
- DataFrame.Internal.Column: fromMaybeVecUnboxed :: (Columnable a, Unbox a) => Vector (Maybe a) -> Column
- DataFrame.Internal.Column: fromUnboxedVector :: (Columnable a, Unbox a) => Vector a -> Column
- DataFrame.Internal.Column: fromVector :: (Columnable a, ColumnifyRep (KindOf a) a) => Vector a -> Column
- DataFrame.Internal.Column: gatherWithSentinel :: Vector Int -> Column -> Column
- DataFrame.Internal.Column: getIndices :: Vector Int -> Vector a -> Vector a
- DataFrame.Internal.Column: getIndicesUnboxed :: Unbox a => Vector Int -> Vector a -> Vector a
- DataFrame.Internal.Column: hasElemType :: Columnable a => Column -> Bool
- DataFrame.Internal.Column: hasMissing :: Column -> Bool
- DataFrame.Internal.Column: headColumn :: Columnable a => Column -> Either DataFrameException a
- DataFrame.Internal.Column: ifoldrColumn :: (Columnable a, Columnable b) => (Int -> a -> b -> b) -> b -> Column -> Either DataFrameException b
- DataFrame.Internal.Column: imapColumn :: (Columnable b, Columnable c) => (Int -> b -> c) -> Column -> Either DataFrameException Column
- DataFrame.Internal.Column: instance (DataFrame.Internal.Column.Columnable a, Data.Vector.Unboxed.Base.Unbox a) => DataFrame.Internal.Column.ColumnifyRep 'DataFrame.Internal.Types.RUnboxed a
- DataFrame.Internal.Column: instance Control.DeepSeq.NFData DataFrame.Internal.Column.Column
- DataFrame.Internal.Column: instance DataFrame.Internal.Column.Columnable a => DataFrame.Internal.Column.ColumnifyRep 'DataFrame.Internal.Types.RBoxed a
- DataFrame.Internal.Column: instance DataFrame.Internal.Column.Columnable a => DataFrame.Internal.Column.ColumnifyRep 'DataFrame.Internal.Types.RNullableBoxed (GHC.Maybe.Maybe a)
- DataFrame.Internal.Column: instance GHC.Classes.Eq DataFrame.Internal.Column.Column
- DataFrame.Internal.Column: instance GHC.Classes.Eq a => GHC.Classes.Eq (DataFrame.Internal.Column.TypedColumn a)
- DataFrame.Internal.Column: instance GHC.Show.Show DataFrame.Internal.Column.Column
- DataFrame.Internal.Column: instance GHC.Show.Show a => GHC.Show.Show (DataFrame.Internal.Column.TypedColumn a)
- DataFrame.Internal.Column: isNumeric :: Column -> Bool
- DataFrame.Internal.Column: leftExpandColumn :: Int -> Column -> Column
- DataFrame.Internal.Column: mapColumn :: (Columnable b, Columnable c) => (b -> c) -> Column -> Either DataFrameException Column
- DataFrame.Internal.Column: mergeBitmaps :: Bitmap -> Bitmap -> Bitmap
- DataFrame.Internal.Column: mergeColumns :: Column -> Column -> Column
- DataFrame.Internal.Column: mkRandom :: (RandomGen g, Columnable a, ColumnifyRep (KindOf a) a, UniformRange a) => g -> Int -> a -> a -> Column
- DataFrame.Internal.Column: newMutableColumn :: Int -> Column -> IO MutableColumn
- DataFrame.Internal.Column: numElements :: Column -> Int
- DataFrame.Internal.Column: sliceColumn :: Int -> Int -> Column -> Column
- DataFrame.Internal.Column: takeColumn :: Int -> Column -> Column
- DataFrame.Internal.Column: takeLastColumn :: Int -> Column -> Column
- DataFrame.Internal.Column: throwTypeMismatch :: (Typeable a, Typeable b) => Either DataFrameException Column
- DataFrame.Internal.Column: toColumnRep :: ColumnifyRep r a => Vector a -> Column
- DataFrame.Internal.Column: toDoubleVector :: Column -> Either DataFrameException (Vector Double)
- DataFrame.Internal.Column: toFloatVector :: Column -> Either DataFrameException (Vector Float)
- DataFrame.Internal.Column: toIntVector :: Column -> Either DataFrameException (Vector Int)
- DataFrame.Internal.Column: toList :: Columnable a => Column -> [a]
- DataFrame.Internal.Column: toUnboxedVector :: (Columnable a, Unbox a) => Column -> Either DataFrameException (Vector a)
- DataFrame.Internal.Column: toVector :: forall a v. (Vector v a, Columnable a) => Column -> Either DataFrameException (v a)
- DataFrame.Internal.Column: type Bitmap = Vector Word8
- DataFrame.Internal.Column: type Columnable a = (Columnable' a, ColumnifyRep KindOf a a, UnboxIf a, IntegralIf a, FloatingIf a, SBoolI Unboxable a, SBoolI Numeric a, SBoolI IntegralTypes a, SBoolI FloatingTypes a)
- DataFrame.Internal.Column: unwrapTypedColumn :: TypedColumn a -> Column
- DataFrame.Internal.Column: vectorFromTypedColumn :: TypedColumn a -> Vector a
- DataFrame.Internal.Column: writeColumn :: Int -> Text -> MutableColumn -> IO (Either Text Bool)
- DataFrame.Internal.Column: zipColumns :: Column -> Column -> Column
- DataFrame.Internal.Column: zipWithColumns :: (Columnable a, Columnable b, Columnable c) => (a -> b -> c) -> Column -> Column -> Either DataFrameException Column
- DataFrame.Internal.Column: zipWithColumnsGeneral :: (Columnable a, Columnable b, Columnable c) => (a -> b -> c) -> Column -> Column -> Either DataFrameException Column
- DataFrame.Internal.DataFrame: DataFrame :: Vector Column -> Map Text Int -> (Int, Int) -> Map Text UExpr -> DataFrame
- DataFrame.Internal.DataFrame: Grouped :: DataFrame -> [Text] -> Vector Int -> Vector Int -> Vector Int -> GroupedDataFrame
- DataFrame.Internal.DataFrame: [columnIndices] :: DataFrame -> Map Text Int
- DataFrame.Internal.DataFrame: [columns] :: DataFrame -> Vector Column
- DataFrame.Internal.DataFrame: [dataframeDimensions] :: DataFrame -> (Int, Int)
- DataFrame.Internal.DataFrame: [derivingExpressions] :: DataFrame -> Map Text UExpr
- DataFrame.Internal.DataFrame: [fullDataframe] :: GroupedDataFrame -> DataFrame
- DataFrame.Internal.DataFrame: [groupedColumns] :: GroupedDataFrame -> [Text]
- DataFrame.Internal.DataFrame: [offsets] :: GroupedDataFrame -> Vector Int
- DataFrame.Internal.DataFrame: [rowToGroup] :: GroupedDataFrame -> Vector Int
- DataFrame.Internal.DataFrame: [valueIndices] :: GroupedDataFrame -> Vector Int
- DataFrame.Internal.DataFrame: asText :: DataFrame -> Bool -> Text
- DataFrame.Internal.DataFrame: data DataFrame
- DataFrame.Internal.DataFrame: data GroupedDataFrame
- DataFrame.Internal.DataFrame: empty :: DataFrame
- DataFrame.Internal.DataFrame: getColumn :: Text -> DataFrame -> Maybe Column
- DataFrame.Internal.DataFrame: getRowAsText :: DataFrame -> Int -> [Text]
- DataFrame.Internal.DataFrame: instance Control.DeepSeq.NFData DataFrame.Internal.DataFrame.DataFrame
- DataFrame.Internal.DataFrame: instance GHC.Classes.Eq DataFrame.Internal.DataFrame.DataFrame
- DataFrame.Internal.DataFrame: instance GHC.Classes.Eq DataFrame.Internal.DataFrame.GroupedDataFrame
- DataFrame.Internal.DataFrame: instance GHC.Show.Show DataFrame.Internal.DataFrame.DataFrame
- DataFrame.Internal.DataFrame: instance GHC.Show.Show DataFrame.Internal.DataFrame.GroupedDataFrame
- DataFrame.Internal.DataFrame: null :: DataFrame -> Bool
- DataFrame.Internal.DataFrame: showElement :: Column -> Int -> Text
- DataFrame.Internal.DataFrame: stripJust :: Text -> Text
- DataFrame.Internal.DataFrame: toCsv :: DataFrame -> Text
- DataFrame.Internal.DataFrame: toCsv' :: DataFrame -> String
- DataFrame.Internal.DataFrame: toMarkdown :: DataFrame -> Text
- DataFrame.Internal.DataFrame: toMarkdown' :: DataFrame -> String
- DataFrame.Internal.DataFrame: toSeparated :: Char -> DataFrame -> Text
- DataFrame.Internal.DataFrame: unsafeGetColumn :: Text -> DataFrame -> Column
- DataFrame.Internal.Expression: MeanAcc :: {-# UNPACK #-} !Double -> {-# UNPACK #-} !Int -> MeanAcc
- DataFrame.Internal.Expression: MkBinaryOp :: (a -> b -> c) -> Text -> Maybe Text -> Bool -> Int -> BinaryOp a b c
- DataFrame.Internal.Expression: MkUnaryOp :: (a -> b) -> Text -> Maybe Text -> UnaryOp a b
- DataFrame.Internal.Expression: [Agg] :: forall a b. (Columnable a, Columnable b) => AggStrategy a b -> Expr b -> Expr a
- DataFrame.Internal.Expression: [Binary] :: forall c b a. (Columnable c, Columnable b, Columnable a) => BinaryOp c b a -> Expr c -> Expr b -> Expr a
- DataFrame.Internal.Expression: [CastExprWith] :: forall a1 a src. (Columnable a1, Columnable a, Columnable src, Read a1) => Text -> (Either String a1 -> a) -> Expr src -> Expr a
- DataFrame.Internal.Expression: [CastWith] :: forall a1 a. (Columnable a1, Columnable a, Read a1) => Text -> Text -> (Either String a1 -> a) -> Expr a
- DataFrame.Internal.Expression: [Col] :: forall a. Columnable a => Text -> Expr a
- DataFrame.Internal.Expression: [CollectAgg] :: forall (v :: Type -> Type) b a. (Vector v b, Typeable v) => Text -> (v b -> a) -> AggStrategy a b
- DataFrame.Internal.Expression: [FoldAgg] :: forall a b. Text -> Maybe a -> (a -> b -> a) -> AggStrategy a b
- DataFrame.Internal.Expression: [If] :: forall a. Columnable a => Expr Bool -> Expr a -> Expr a -> Expr a
- DataFrame.Internal.Expression: [Lit] :: forall a. Columnable a => a -> Expr a
- DataFrame.Internal.Expression: [MergeAgg] :: forall acc b a. Columnable acc => Text -> acc -> (acc -> b -> acc) -> (acc -> acc -> acc) -> (acc -> a) -> AggStrategy a b
- DataFrame.Internal.Expression: [Over] :: forall a. Columnable a => [Text] -> Expr a -> Expr a
- DataFrame.Internal.Expression: [UExpr] :: forall a. Columnable a => Expr a -> UExpr
- DataFrame.Internal.Expression: [Unary] :: forall a b. (Columnable a, Columnable b) => UnaryOp b a -> Expr b -> Expr a
- DataFrame.Internal.Expression: [binaryCommutative] :: BinaryOp a b c -> Bool
- DataFrame.Internal.Expression: [binaryFn] :: BinaryOp a b c -> a -> b -> c
- DataFrame.Internal.Expression: [binaryName] :: BinaryOp a b c -> Text
- DataFrame.Internal.Expression: [binaryPrecedence] :: BinaryOp a b c -> Int
- DataFrame.Internal.Expression: [binarySymbol] :: BinaryOp a b c -> Maybe Text
- DataFrame.Internal.Expression: [unaryFn] :: UnaryOp a b -> a -> b
- DataFrame.Internal.Expression: [unaryName] :: UnaryOp a b -> Text
- DataFrame.Internal.Expression: [unarySymbol] :: UnaryOp a b -> Maybe Text
- DataFrame.Internal.Expression: add :: (Num a, Columnable a) => Expr a -> Expr a -> Expr a
- DataFrame.Internal.Expression: compareExpr :: Expr a -> Expr a -> Ordering
- DataFrame.Internal.Expression: data AggStrategy a b
- DataFrame.Internal.Expression: data BinaryOp a b c
- DataFrame.Internal.Expression: data Expr a
- DataFrame.Internal.Expression: data MeanAcc
- DataFrame.Internal.Expression: data UExpr
- DataFrame.Internal.Expression: data UnaryOp a b
- DataFrame.Internal.Expression: divide :: (Fractional a, Columnable a) => Expr a -> Expr a -> Expr a
- DataFrame.Internal.Expression: eSize :: Expr a -> Int
- DataFrame.Internal.Expression: getColumns :: Expr a -> [Text]
- DataFrame.Internal.Expression: instance (Data.String.IsString a, DataFrame.Internal.Column.Columnable a) => Data.String.IsString (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: instance (GHC.Classes.Eq a, DataFrame.Internal.Column.Columnable a) => GHC.Classes.Eq (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: instance (GHC.Classes.Ord a, DataFrame.Internal.Column.Columnable a) => GHC.Classes.Ord (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: instance (GHC.Float.Floating a, DataFrame.Internal.Column.Columnable a) => GHC.Float.Floating (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: instance (GHC.Num.Num a, DataFrame.Internal.Column.Columnable a) => GHC.Num.Num (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: instance (GHC.Real.Fractional a, DataFrame.Internal.Column.Columnable a) => GHC.Real.Fractional (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: instance GHC.Classes.Eq DataFrame.Internal.Expression.MeanAcc
- DataFrame.Internal.Expression: instance GHC.Classes.Ord DataFrame.Internal.Expression.MeanAcc
- DataFrame.Internal.Expression: instance GHC.Read.Read DataFrame.Internal.Expression.MeanAcc
- DataFrame.Internal.Expression: instance GHC.Show.Show DataFrame.Internal.Expression.MeanAcc
- DataFrame.Internal.Expression: instance GHC.Show.Show DataFrame.Internal.Expression.UExpr
- DataFrame.Internal.Expression: instance GHC.Show.Show a => GHC.Show.Show (DataFrame.Internal.Expression.Expr a)
- DataFrame.Internal.Expression: mult :: (Num a, Columnable a) => Expr a -> Expr a -> Expr a
- DataFrame.Internal.Expression: normalize :: (Show a, Typeable a) => Expr a -> Expr a
- DataFrame.Internal.Expression: prettyPrint :: Expr a -> String
- DataFrame.Internal.Expression: replaceExpr :: (Columnable a, Columnable b, Columnable c) => Expr a -> Expr b -> Expr c -> Expr c
- DataFrame.Internal.Expression: sub :: (Num a, Columnable a) => Expr a -> Expr a -> Expr a
- DataFrame.Internal.Expression: type NamedExpr = (Text, UExpr)
- DataFrame.Internal.Grouping: buildRowToGroup :: Int -> Vector Int -> Vector Int -> Vector Int
- DataFrame.Internal.Grouping: changingPoints :: Vector (Int, Int) -> Vector Int
- DataFrame.Internal.Grouping: groupBy :: [Text] -> DataFrame -> GroupedDataFrame
- DataFrame.Internal.Interpreter: Aggregated :: TypedColumn a -> AggregationResult a
- DataFrame.Internal.Interpreter: FlatCtx :: DataFrame -> Ctx
- DataFrame.Internal.Interpreter: GroupCtx :: GroupedDataFrame -> Ctx
- DataFrame.Internal.Interpreter: UnAggregated :: Column -> AggregationResult a
- DataFrame.Internal.Interpreter: [Flat] :: forall a. Columnable a => Column -> Value a
- DataFrame.Internal.Interpreter: [Group] :: forall a. Columnable a => Vector Column -> Value a
- DataFrame.Internal.Interpreter: [Scalar] :: forall a. Columnable a => a -> Value a
- DataFrame.Internal.Interpreter: data AggregationResult a
- DataFrame.Internal.Interpreter: data Ctx
- DataFrame.Internal.Interpreter: data Value a
- DataFrame.Internal.Interpreter: eval :: Columnable a => Ctx -> Expr a -> Either DataFrameException (Value a)
- DataFrame.Internal.Interpreter: instance GHC.Show.Show a => GHC.Show.Show (DataFrame.Internal.Interpreter.Value a)
- DataFrame.Internal.Interpreter: interpret :: Columnable a => DataFrame -> Expr a -> Either DataFrameException (TypedColumn a)
- DataFrame.Internal.Interpreter: interpretAggregation :: Columnable a => GroupedDataFrame -> Expr a -> Either DataFrameException (AggregationResult a)
- DataFrame.Internal.Interpreter: materialize :: Columnable a => Int -> Value a -> Column
- DataFrame.Internal.Nullable: applyNull1 :: NullLift1Op a r c => (BaseType a -> r) -> a -> c
- DataFrame.Internal.Nullable: applyNull2 :: NullLift2Op a b r c => (BaseType a -> BaseType b -> r) -> a -> b -> c
- DataFrame.Internal.Nullable: class Columnable PromoteDiv a b => DivWidenOp a b
- DataFrame.Internal.Nullable: class (Columnable a, Columnable r, Columnable c) => NullLift1Op a r c
- DataFrame.Internal.Nullable: class (Columnable a, Columnable b, Columnable r, Columnable c) => NullLift2Op a b r c
- DataFrame.Internal.Nullable: class (Columnable a, Columnable b, Columnable c) => NullableArithOp a b c | a b -> c
- DataFrame.Internal.Nullable: class (Columnable a, Columnable b, Columnable e) => NullableCmpOp a b e
- DataFrame.Internal.Nullable: class Columnable Promote a b => NumericWidenOp a b
- DataFrame.Internal.Nullable: divArithOp :: DivWidenOp a b => (PromoteDiv a b -> PromoteDiv a b -> PromoteDiv a b) -> a -> b -> PromoteDiv a b
- DataFrame.Internal.Nullable: divWiden1 :: DivWidenOp a b => a -> PromoteDiv a b
- DataFrame.Internal.Nullable: divWiden2 :: DivWidenOp a b => b -> PromoteDiv a b
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe a)) => DataFrame.Internal.Nullable.NullableArithOp (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe a)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe a)) => DataFrame.Internal.Nullable.NullableArithOp (GHC.Maybe.Maybe a) a (GHC.Maybe.Maybe a)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe a), DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe GHC.Types.Bool)) => DataFrame.Internal.Nullable.NullableCmpOp (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe GHC.Types.Bool)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe a), DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe GHC.Types.Bool)) => DataFrame.Internal.Nullable.NullableCmpOp (GHC.Maybe.Maybe a) a (GHC.Maybe.Maybe GHC.Types.Bool)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe a), DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe GHC.Types.Bool), a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a) => DataFrame.Internal.Nullable.NullableCmpOp a (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe GHC.Types.Bool)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe a), a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a) => DataFrame.Internal.Nullable.NullableArithOp a (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe a)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable GHC.Types.Bool, a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a) => DataFrame.Internal.Nullable.NullableCmpOp a a GHC.Types.Bool
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable b, DataFrame.Internal.Column.Columnable r, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe r)) => DataFrame.Internal.Nullable.NullLift2Op (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe b) r (GHC.Maybe.Maybe r)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable b, DataFrame.Internal.Column.Columnable r, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe r), a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a) => DataFrame.Internal.Nullable.NullLift2Op a (GHC.Maybe.Maybe b) r (GHC.Maybe.Maybe r)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable b, DataFrame.Internal.Column.Columnable r, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe r), b GHC.Types.~ DataFrame.Internal.Nullable.BaseType b) => DataFrame.Internal.Nullable.NullLift2Op (GHC.Maybe.Maybe a) b r (GHC.Maybe.Maybe r)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable b, DataFrame.Internal.Column.Columnable r, a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a, b GHC.Types.~ DataFrame.Internal.Nullable.BaseType b) => DataFrame.Internal.Nullable.NullLift2Op a b r r
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable r, DataFrame.Internal.Column.Columnable (GHC.Maybe.Maybe r)) => DataFrame.Internal.Nullable.NullLift1Op (GHC.Maybe.Maybe a) r (GHC.Maybe.Maybe r)
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, DataFrame.Internal.Column.Columnable r, a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a) => DataFrame.Internal.Nullable.NullLift1Op a r r
- DataFrame.Internal.Nullable: instance (DataFrame.Internal.Column.Columnable a, a GHC.Types.~ DataFrame.Internal.Nullable.BaseType a) => DataFrame.Internal.Nullable.NullableArithOp a a a
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Column.Columnable a => DataFrame.Internal.Nullable.NumericWidenOp a a
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int32 GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int32 GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int32 GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int32 GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int32 GHC.Types.Int
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int64 GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int64 GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int64 GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int64 GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Int.Int64 GHC.Types.Int
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Double GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Double GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Double GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Double GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Double GHC.Types.Int
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Float GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Float GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Float GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Float GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Float GHC.Types.Int
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Int GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Int GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Int GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Int GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.DivWidenOp GHC.Types.Int GHC.Types.Int
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Int.Int32 GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Int.Int32 GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Int.Int64 GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Int.Int64 GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Double GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Double GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Double GHC.Types.Float
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Double GHC.Types.Int
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Float GHC.Int.Int32
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Float GHC.Int.Int64
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Float GHC.Types.Double
- DataFrame.Internal.Nullable: instance DataFrame.Internal.Nullable.NumericWidenOp GHC.Types.Int GHC.Types.Double
- DataFrame.Internal.Nullable: nullArithOp :: NullableArithOp a b c => (BaseType a -> BaseType a -> BaseType a) -> a -> b -> c
- DataFrame.Internal.Nullable: nullCmpOp :: NullableCmpOp a b e => (BaseType a -> BaseType a -> Bool) -> a -> b -> e
- DataFrame.Internal.Nullable: type WidenResult a b = NullLift2Result a b Promote BaseType a BaseType b
- DataFrame.Internal.Nullable: type WidenResultDiv a b = NullLift2Result a b PromoteDiv BaseType a BaseType b
- DataFrame.Internal.Nullable: type family NullCmpResult a b
- DataFrame.Internal.Nullable: widen1 :: NumericWidenOp a b => a -> Promote a b
- DataFrame.Internal.Nullable: widen2 :: NumericWidenOp a b => b -> Promote a b
- DataFrame.Internal.Nullable: widenArithOp :: NumericWidenOp a b => (Promote a b -> Promote a b -> Promote a b) -> a -> b -> Promote a b
- DataFrame.Internal.Parsing: countRows :: Char -> FilePath -> IO Int
- DataFrame.Internal.Parsing: field :: Char -> Parser Text
- DataFrame.Internal.Parsing: inferValueType :: Text -> Text
- DataFrame.Internal.Parsing: isFalseish :: Text -> Bool
- DataFrame.Internal.Parsing: isNullish :: Text -> Bool
- DataFrame.Internal.Parsing: isNullishBS :: ByteString -> Bool
- DataFrame.Internal.Parsing: isTrueish :: Text -> Bool
- DataFrame.Internal.Parsing: lineEnd :: Parser ()
- DataFrame.Internal.Parsing: parseRow :: Char -> Parser [Text]
- DataFrame.Internal.Parsing: parseSep :: Char -> Text -> [Text]
- DataFrame.Internal.Parsing: quotedField :: Parser Text
- DataFrame.Internal.Parsing: readBool :: HasCallStack => Text -> Maybe Bool
- DataFrame.Internal.Parsing: readByteStringBool :: ByteString -> Maybe Bool
- DataFrame.Internal.Parsing: readByteStringDate :: String -> ByteString -> Maybe Day
- DataFrame.Internal.Parsing: readByteStringDouble :: HasCallStack => ByteString -> Maybe Double
- DataFrame.Internal.Parsing: readByteStringInt :: HasCallStack => ByteString -> Maybe Int
- DataFrame.Internal.Parsing: readDouble :: HasCallStack => Text -> Maybe Double
- DataFrame.Internal.Parsing: readDoubleEither :: HasCallStack => Text -> Either Text Double
- DataFrame.Internal.Parsing: readInt :: HasCallStack => Text -> Maybe Int
- DataFrame.Internal.Parsing: readIntEither :: HasCallStack => Text -> Either Text Int
- DataFrame.Internal.Parsing: readInteger :: HasCallStack => Text -> Maybe Integer
- DataFrame.Internal.Parsing: readIntegerEither :: HasCallStack => Text -> Either Text Integer
- DataFrame.Internal.Parsing: readSingleLine :: Char -> Text -> Handle -> IO ([Text], Text)
- DataFrame.Internal.Parsing: record :: Char -> Parser [Text]
- DataFrame.Internal.Parsing: unquotedField :: Char -> Parser Text
- DataFrame.Internal.Parsing: unquotedTerminators :: Char -> Set Char
- DataFrame.Internal.Row: (!?) :: [a] -> Int -> Maybe a
- DataFrame.Internal.Row: [Value] :: forall a. Columnable a => a -> Any
- DataFrame.Internal.Row: data Any
- DataFrame.Internal.Row: fromAny :: Columnable a => Any -> Maybe a
- DataFrame.Internal.Row: instance GHC.Classes.Eq DataFrame.Internal.Row.Any
- DataFrame.Internal.Row: instance GHC.Show.Show DataFrame.Internal.Row.Any
- DataFrame.Internal.Row: mkColumnFromRow :: Int -> [[Any]] -> Column
- DataFrame.Internal.Row: mkRowFromArgs :: [Text] -> DataFrame -> Int -> Row
- DataFrame.Internal.Row: mkRowRep :: DataFrame -> [Text] -> Int -> Row
- DataFrame.Internal.Row: rowValue :: Expr a -> [(Text, Any)] -> Maybe a
- DataFrame.Internal.Row: showValue :: Columnable a => a -> Text
- DataFrame.Internal.Row: toAny :: Columnable a => a -> Any
- DataFrame.Internal.Row: toRowList :: DataFrame -> [[(Text, Any)]]
- DataFrame.Internal.Row: toRowVector :: [Text] -> DataFrame -> Vector Row
- DataFrame.Internal.Row: type Row = Vector Any
- DataFrame.Internal.Schema: Schema :: Map Text SchemaType -> Schema
- DataFrame.Internal.Schema: [SType] :: forall a. (Columnable a, Read a) => Proxy a -> SchemaType
- DataFrame.Internal.Schema: [elements] :: Schema -> Map Text SchemaType
- DataFrame.Internal.Schema: data SchemaType
- DataFrame.Internal.Schema: instance GHC.Classes.Eq DataFrame.Internal.Schema.Schema
- DataFrame.Internal.Schema: instance GHC.Classes.Eq DataFrame.Internal.Schema.SchemaType
- DataFrame.Internal.Schema: instance GHC.Show.Show DataFrame.Internal.Schema.Schema
- DataFrame.Internal.Schema: instance GHC.Show.Show DataFrame.Internal.Schema.SchemaType
- DataFrame.Internal.Schema: makeSchema :: [(Text, SchemaType)] -> Schema
- DataFrame.Internal.Schema: newtype Schema
- DataFrame.Internal.Schema: schemaType :: (Columnable a, Read a) => SchemaType
- DataFrame.Internal.Statistics: CorrelationStats :: {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> CorrelationStats
- DataFrame.Internal.Statistics: SkewAcc :: !Int -> !Double -> !Double -> !Double -> SkewAcc
- DataFrame.Internal.Statistics: VarAcc :: {-# UNPACK #-} !Int -> {-# UNPACK #-} !Double -> {-# UNPACK #-} !Double -> VarAcc
- DataFrame.Internal.Statistics: binIndex :: Double -> Double -> Int -> Double -> Int
- DataFrame.Internal.Statistics: bincount :: Int -> Vector Int -> Vector Int
- DataFrame.Internal.Statistics: computeSkewness :: SkewAcc -> Double
- DataFrame.Internal.Statistics: computeVariance :: VarAcc -> Double
- DataFrame.Internal.Statistics: correlation' :: Vector Double -> Vector Double -> Maybe Double
- DataFrame.Internal.Statistics: data CorrelationStats
- DataFrame.Internal.Statistics: data SkewAcc
- DataFrame.Internal.Statistics: data VarAcc
- DataFrame.Internal.Statistics: instance GHC.Show.Show DataFrame.Internal.Statistics.SkewAcc
- DataFrame.Internal.Statistics: instance GHC.Show.Show DataFrame.Internal.Statistics.VarAcc
- DataFrame.Internal.Statistics: interQuartileRange' :: (Unbox a, Num a, Real a) => Vector a -> Double
- DataFrame.Internal.Statistics: jointBincount :: Int -> Vector Int -> Vector Int -> Vector Int
- DataFrame.Internal.Statistics: mean' :: (Real a, Unbox a) => Vector a -> Double
- DataFrame.Internal.Statistics: meanDouble' :: Vector Double -> Double
- DataFrame.Internal.Statistics: meanInt' :: Vector Int -> Double
- DataFrame.Internal.Statistics: meanSquaredError :: Vector Double -> Vector Double -> Maybe Double
- DataFrame.Internal.Statistics: median' :: (Real a, Unbox a) => Vector a -> Double
- DataFrame.Internal.Statistics: mutualInformationBinned :: Int -> Vector Double -> Vector Double -> Maybe Double
- DataFrame.Internal.Statistics: percentile' :: (Unbox a, Num a, Real a) => Int -> Vector a -> Double
- DataFrame.Internal.Statistics: percentileOrd' :: (Ord a, Eq a) => Int -> Vector a -> a
- DataFrame.Internal.Statistics: quantiles' :: (Unbox a, Num a, Real a) => Vector Int -> Int -> Vector a -> Vector Double
- DataFrame.Internal.Statistics: quantilesOrd' :: (Ord a, Eq a) => Vector Int -> Int -> Vector a -> Vector a
- DataFrame.Internal.Statistics: rtf :: Real a => a -> Double
- DataFrame.Internal.Statistics: skewness' :: (Unbox a, Real a, Num a) => Vector a -> Double
- DataFrame.Internal.Statistics: skewnessStep :: (Unbox a, Num a, Real a) => SkewAcc -> a -> SkewAcc
- DataFrame.Internal.Statistics: variance' :: (Real a, Unbox a) => Vector a -> Double
- DataFrame.Internal.Statistics: varianceDouble' :: Vector Double -> Double
- DataFrame.Internal.Statistics: varianceStep :: VarAcc -> Double -> VarAcc
- DataFrame.Internal.Types: RBoxed :: Rep
- DataFrame.Internal.Types: RNullableBoxed :: Rep
- DataFrame.Internal.Types: RUnboxed :: Rep
- DataFrame.Internal.Types: [SFalse] :: SBool 'False
- DataFrame.Internal.Types: [STrue] :: SBool 'True
- DataFrame.Internal.Types: class SBoolI (b :: Bool)
- DataFrame.Internal.Types: data Rep
- DataFrame.Internal.Types: data SBool (b :: Bool)
- DataFrame.Internal.Types: instance DataFrame.Internal.Types.SBoolI 'GHC.Types.False
- DataFrame.Internal.Types: instance DataFrame.Internal.Types.SBoolI 'GHC.Types.True
- DataFrame.Internal.Types: sFloating :: SBoolI (FloatingTypes a) => SBool (FloatingTypes a)
- DataFrame.Internal.Types: sIntegral :: SBoolI (IntegralTypes a) => SBool (IntegralTypes a)
- DataFrame.Internal.Types: sNumeric :: SBoolI (Numeric a) => SBool (Numeric a)
- DataFrame.Internal.Types: sUnbox :: SBoolI (Unboxable a) => SBool (Unboxable a)
- DataFrame.Internal.Types: sbool :: SBoolI b => SBool b
- DataFrame.Internal.Types: type Columnable' a = (Typeable a, Show a, Eq a)
- DataFrame.Internal.Types: type FloatingIf a = When FloatingTypes a (Real a, Fractional a)
- DataFrame.Internal.Types: type IntegralIf a = When IntegralTypes a Integral a
- DataFrame.Internal.Types: type UnboxIf a = When Unboxable a Unbox a
- DataFrame.Internal.Types: type family PromoteDiv a b
- DataFrame.Lazy.IO.Binary: readSpilled :: FilePath -> IO DataFrame
- DataFrame.Lazy.IO.Binary: spillToDisk :: FilePath -> DataFrame -> IO ()
- DataFrame.Lazy.IO.Binary: withSpilled :: DataFrame -> (FilePath -> IO a) -> IO a
- DataFrame.Lazy.IO.CSV: ReadOptions :: Bool -> Bool -> SafeReadMode -> [(Text, SafeReadMode)] -> !Maybe (Int, Int) -> !Maybe Integer -> !Maybe Int -> !Text -> !Int -> ReadOptions
- DataFrame.Lazy.IO.CSV: [hasHeader] :: ReadOptions -> Bool
- DataFrame.Lazy.IO.CSV: [inferTypes] :: ReadOptions -> Bool
- DataFrame.Lazy.IO.CSV: [leftOver] :: ReadOptions -> !Text
- DataFrame.Lazy.IO.CSV: [rowRange] :: ReadOptions -> !Maybe (Int, Int)
- DataFrame.Lazy.IO.CSV: [rowsRead] :: ReadOptions -> !Int
- DataFrame.Lazy.IO.CSV: [safeReadOverrides] :: ReadOptions -> [(Text, SafeReadMode)]
- DataFrame.Lazy.IO.CSV: [safeRead] :: ReadOptions -> SafeReadMode
- DataFrame.Lazy.IO.CSV: [seekPos] :: ReadOptions -> !Maybe Integer
- DataFrame.Lazy.IO.CSV: [totalRows] :: ReadOptions -> !Maybe Int
- DataFrame.Lazy.IO.CSV: data ReadOptions
- DataFrame.Lazy.IO.CSV: defaultOptions :: ReadOptions
- DataFrame.Lazy.IO.CSV: fillColumns :: Int -> Char -> IOVector MutableColumn -> IOVector [(Int, Text)] -> Text -> Handle -> IO (Text, Int)
- DataFrame.Lazy.IO.CSV: findUnquotedNewline :: ByteString -> Maybe Int
- DataFrame.Lazy.IO.CSV: freezeColumn :: Vector Text -> IOVector MutableColumn -> Vector [(Int, Text)] -> ReadOptions -> Int -> IO Column
- DataFrame.Lazy.IO.CSV: getInitialDataVectors :: Int -> IOVector MutableColumn -> [Text] -> IO ()
- DataFrame.Lazy.IO.CSV: getNthFieldBs :: Word8 -> Int -> ByteString -> ByteString
- DataFrame.Lazy.IO.CSV: makeCol :: Int -> SchemaType -> IO MutableColumn
- DataFrame.Lazy.IO.CSV: openCsvStream :: Char -> Schema -> FilePath -> IO (Handle, [(Int, Text, SchemaType)])
- DataFrame.Lazy.IO.CSV: readBatch :: Char -> [(Int, Text, SchemaType)] -> Int -> ByteString -> Handle -> IO (Maybe (DataFrame, ByteString))
- DataFrame.Lazy.IO.CSV: readCsv :: FilePath -> IO DataFrame
- DataFrame.Lazy.IO.CSV: readSeparated :: Char -> ReadOptions -> FilePath -> IO (DataFrame, (Integer, Text, Int))
- DataFrame.Lazy.IO.CSV: readTsv :: FilePath -> IO DataFrame
- DataFrame.Lazy.IO.CSV: sliceCol :: Int -> MutableColumn -> MutableColumn
- DataFrame.Lazy.IO.CSV: writeColumnBs :: Int -> ByteString -> MutableColumn -> IO (Either Text Bool)
- DataFrame.Lazy.IO.CSV: writeValue :: IOVector MutableColumn -> IOVector [(Int, Text)] -> Int -> Int -> Text -> IO ()
- DataFrame.Lazy.Internal.DataFrame: LazyDataFrame :: LogicalPlan -> Int -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: [batchSize] :: LazyDataFrame -> Int
- DataFrame.Lazy.Internal.DataFrame: [plan] :: LazyDataFrame -> LogicalPlan
- DataFrame.Lazy.Internal.DataFrame: data LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: derive :: Columnable a => Text -> Expr a -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: filter :: Expr Bool -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: fromDataFrame :: DataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: groupBy :: [Text] -> [(Text, UExpr)] -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: instance GHC.Show.Show DataFrame.Lazy.Internal.DataFrame.LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: join :: JoinType -> Text -> Text -> LazyDataFrame -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: runDataFrame :: LazyDataFrame -> IO DataFrame
- DataFrame.Lazy.Internal.DataFrame: scanCsv :: Schema -> Text -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: scanParquet :: Schema -> Text -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: scanSeparated :: Char -> Schema -> Text -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: select :: [Text] -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: sortBy :: [(Text, SortOrder)] -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.DataFrame: take :: Int -> LazyDataFrame -> LazyDataFrame
- DataFrame.Lazy.Internal.Executor: ExecutorConfig :: !Int -> FilePath -> !Int -> ExecutorConfig
- DataFrame.Lazy.Internal.Executor: [defaultBatchSize] :: ExecutorConfig -> !Int
- DataFrame.Lazy.Internal.Executor: [memoryBudgetBytes] :: ExecutorConfig -> !Int
- DataFrame.Lazy.Internal.Executor: [spillDirectory] :: ExecutorConfig -> FilePath
- DataFrame.Lazy.Internal.Executor: data ExecutorConfig
- DataFrame.Lazy.Internal.Executor: defaultExecutorConfig :: ExecutorConfig
- DataFrame.Lazy.Internal.Executor: execute :: PhysicalPlan -> ExecutorConfig -> IO DataFrame
- DataFrame.Lazy.Internal.Executor: foldBatches :: (b -> DataFrame -> IO b) -> b -> PhysicalPlan -> ExecutorConfig -> IO b
- DataFrame.Lazy.Internal.LogicalPlan: Aggregate :: [Text] -> [(Text, UExpr)] -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: Ascending :: SortOrder
- DataFrame.Lazy.Internal.LogicalPlan: CsvSource :: FilePath -> Char -> DataSource
- DataFrame.Lazy.Internal.LogicalPlan: Derive :: Text -> UExpr -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: Descending :: SortOrder
- DataFrame.Lazy.Internal.LogicalPlan: Filter :: Expr Bool -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: Join :: JoinType -> Text -> Text -> LogicalPlan -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: Limit :: Int -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: ParquetSource :: FilePath -> DataSource
- DataFrame.Lazy.Internal.LogicalPlan: Project :: [Text] -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: Scan :: DataSource -> Schema -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: Sort :: [(Text, SortOrder)] -> LogicalPlan -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: SourceDF :: DataFrame -> LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: data DataSource
- DataFrame.Lazy.Internal.LogicalPlan: data LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: data SortOrder
- DataFrame.Lazy.Internal.LogicalPlan: instance GHC.Classes.Eq DataFrame.Lazy.Internal.LogicalPlan.SortOrder
- DataFrame.Lazy.Internal.LogicalPlan: instance GHC.Classes.Ord DataFrame.Lazy.Internal.LogicalPlan.SortOrder
- DataFrame.Lazy.Internal.LogicalPlan: instance GHC.Show.Show DataFrame.Lazy.Internal.LogicalPlan.DataSource
- DataFrame.Lazy.Internal.LogicalPlan: instance GHC.Show.Show DataFrame.Lazy.Internal.LogicalPlan.LogicalPlan
- DataFrame.Lazy.Internal.LogicalPlan: instance GHC.Show.Show DataFrame.Lazy.Internal.LogicalPlan.SortOrder
- DataFrame.Lazy.Internal.Optimizer: optimize :: Int -> LogicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalDerive :: Text -> UExpr -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalFilter :: Expr Bool -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalHashAggregate :: [Text] -> [(Text, UExpr)] -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalHashJoin :: JoinType -> Text -> Text -> PhysicalPlan -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalLimit :: Int -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalProject :: [Text] -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalScan :: DataSource -> ScanConfig -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalSort :: [(Text, SortOrder)] -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalSortMergeJoin :: JoinType -> Text -> Text -> PhysicalPlan -> PhysicalPlan -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalSourceDF :: DataFrame -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: PhysicalSpill :: PhysicalPlan -> FilePath -> PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: ScanConfig :: !Int -> !Char -> !Schema -> !Maybe (Expr Bool) -> ScanConfig
- DataFrame.Lazy.Internal.PhysicalPlan: [scanBatchSize] :: ScanConfig -> !Int
- DataFrame.Lazy.Internal.PhysicalPlan: [scanPushdownPredicate] :: ScanConfig -> !Maybe (Expr Bool)
- DataFrame.Lazy.Internal.PhysicalPlan: [scanSchema] :: ScanConfig -> !Schema
- DataFrame.Lazy.Internal.PhysicalPlan: [scanSeparator] :: ScanConfig -> !Char
- DataFrame.Lazy.Internal.PhysicalPlan: data PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: data ScanConfig
- DataFrame.Lazy.Internal.PhysicalPlan: instance GHC.Show.Show DataFrame.Lazy.Internal.PhysicalPlan.PhysicalPlan
- DataFrame.Lazy.Internal.PhysicalPlan: instance GHC.Show.Show DataFrame.Lazy.Internal.PhysicalPlan.ScanConfig
- DataFrame.Monad: FrameM :: (DataFrame -> (DataFrame, a)) -> FrameM a
- DataFrame.Monad: [runFrameM_] :: FrameM a -> DataFrame -> (DataFrame, a)
- DataFrame.Monad: deriveM :: Columnable a => Text -> Expr a -> FrameM (Expr a)
- DataFrame.Monad: evalFrameM :: DataFrame -> FrameM a -> a
- DataFrame.Monad: execFrameM :: DataFrame -> FrameM a -> DataFrame
- DataFrame.Monad: filterJustM :: Columnable a => Expr (Maybe a) -> FrameM (Expr a)
- DataFrame.Monad: filterWhereM :: Expr Bool -> FrameM ()
- DataFrame.Monad: imputeM :: (ImputeOp a, Columnable (BaseType a)) => Expr a -> BaseType a -> FrameM (Expr (BaseType a))
- DataFrame.Monad: inspectM :: (DataFrame -> b) -> FrameM b
- DataFrame.Monad: instance GHC.Base.Applicative DataFrame.Monad.FrameM
- DataFrame.Monad: instance GHC.Base.Functor DataFrame.Monad.FrameM
- DataFrame.Monad: instance GHC.Base.Monad DataFrame.Monad.FrameM
- DataFrame.Monad: modifyM :: (DataFrame -> DataFrame) -> FrameM ()
- DataFrame.Monad: newtype FrameM a
- DataFrame.Monad: renameM :: Columnable a => Expr a -> Text -> FrameM (Expr a)
- DataFrame.Monad: runFrameM :: DataFrame -> FrameM a -> (a, DataFrame)
- DataFrame.Monad: sampleM :: RandomGen g => g -> Double -> FrameM ()
- DataFrame.Monad: takeM :: Int -> FrameM ()
- DataFrame.Operations.Aggregation: aggregate :: [NamedExpr] -> GroupedDataFrame -> DataFrame
- DataFrame.Operations.Aggregation: buildRowToGroup :: Int -> Vector Int -> Vector Int -> Vector Int
- DataFrame.Operations.Aggregation: changingPoints :: Vector (Int, Int) -> Vector Int
- DataFrame.Operations.Aggregation: computeRowHashes :: [Int] -> DataFrame -> Vector Int
- DataFrame.Operations.Aggregation: distinct :: DataFrame -> DataFrame
- DataFrame.Operations.Aggregation: groupBy :: [Text] -> DataFrame -> GroupedDataFrame
- DataFrame.Operations.Aggregation: selectIndices :: Vector Int -> DataFrame -> DataFrame
- DataFrame.Operations.Core: ColumnInfo :: !Text -> !Int -> !Int -> !Text -> ColumnInfo
- DataFrame.Operations.Core: [nameOfColumn] :: ColumnInfo -> !Text
- DataFrame.Operations.Core: [nonNullValues] :: ColumnInfo -> !Int
- DataFrame.Operations.Core: [nullValues] :: ColumnInfo -> !Int
- DataFrame.Operations.Core: [typeOfColumn] :: ColumnInfo -> !Text
- DataFrame.Operations.Core: cloneColumn :: Text -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Core: columnAsDoubleVector :: (Columnable a, Num a) => Expr a -> DataFrame -> Either DataFrameException (Vector Double)
- DataFrame.Operations.Core: columnAsFloatVector :: (Columnable a, Num a) => Expr a -> DataFrame -> Either DataFrameException (Vector Float)
- DataFrame.Operations.Core: columnAsIntVector :: (Columnable a, Num a) => Expr a -> DataFrame -> Either DataFrameException (Vector Int)
- DataFrame.Operations.Core: columnAsList :: Columnable a => Expr a -> DataFrame -> [a]
- DataFrame.Operations.Core: columnAsUnboxedVector :: (Columnable a, Unbox a) => Expr a -> DataFrame -> Either DataFrameException (Vector a)
- DataFrame.Operations.Core: columnAsVector :: Columnable a => Expr a -> DataFrame -> Either DataFrameException (Vector a)
- DataFrame.Operations.Core: columnNames :: DataFrame -> [Text]
- DataFrame.Operations.Core: data ColumnInfo
- DataFrame.Operations.Core: describeColumns :: DataFrame -> DataFrame
- DataFrame.Operations.Core: dimensions :: DataFrame -> (Int, Int)
- DataFrame.Operations.Core: fold :: (a -> DataFrame -> DataFrame) -> [a] -> DataFrame -> DataFrame
- DataFrame.Operations.Core: fromNamedColumns :: [(Text, Column)] -> DataFrame
- DataFrame.Operations.Core: fromRows :: [Text] -> [[Any]] -> DataFrame
- DataFrame.Operations.Core: fromUnnamedColumns :: [Column] -> DataFrame
- DataFrame.Operations.Core: insert :: (Columnable a, Foldable t) => Text -> t a -> DataFrame -> DataFrame
- DataFrame.Operations.Core: insertColumn :: Text -> Column -> DataFrame -> DataFrame
- DataFrame.Operations.Core: insertUnboxedVector :: (Columnable a, Unbox a) => Text -> Vector a -> DataFrame -> DataFrame
- DataFrame.Operations.Core: insertVector :: Columnable a => Text -> Vector a -> DataFrame -> DataFrame
- DataFrame.Operations.Core: insertVectorWithDefault :: Columnable a => a -> Text -> Vector a -> DataFrame -> DataFrame
- DataFrame.Operations.Core: insertWithDefault :: (Columnable a, Foldable t) => a -> Text -> t a -> DataFrame -> DataFrame
- DataFrame.Operations.Core: nColumns :: DataFrame -> Int
- DataFrame.Operations.Core: nRows :: DataFrame -> Int
- DataFrame.Operations.Core: nulls :: Column -> Int
- DataFrame.Operations.Core: rename :: Text -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Core: renameMany :: [(Text, Text)] -> DataFrame -> DataFrame
- DataFrame.Operations.Core: renameSafe :: Text -> Text -> DataFrame -> Either DataFrameException DataFrame
- DataFrame.Operations.Core: showDerivedExpressions :: DataFrame -> [NamedExpr]
- DataFrame.Operations.Core: toDoubleMatrix :: DataFrame -> Either DataFrameException (Vector (Vector Double))
- DataFrame.Operations.Core: toFloatMatrix :: DataFrame -> Either DataFrameException (Vector (Vector Float))
- DataFrame.Operations.Core: toIntMatrix :: DataFrame -> Either DataFrameException (Vector (Vector Int))
- DataFrame.Operations.Core: valueCounts :: (Ord a, Columnable a) => Expr a -> DataFrame -> [(a, Int)]
- DataFrame.Operations.Core: valueProportions :: (Ord a, Columnable a) => Expr a -> DataFrame -> [(a, Double)]
- DataFrame.Operations.Join: CompactIndex :: {-# UNPACK #-} !Vector Int -> !HashMap Int (Int, Int) -> CompactIndex
- DataFrame.Operations.Join: FULL_OUTER :: JoinType
- DataFrame.Operations.Join: INNER :: JoinType
- DataFrame.Operations.Join: LEFT :: JoinType
- DataFrame.Operations.Join: RIGHT :: JoinType
- DataFrame.Operations.Join: [ciOffsets] :: CompactIndex -> !HashMap Int (Int, Int)
- DataFrame.Operations.Join: [ciSortedIndices] :: CompactIndex -> {-# UNPACK #-} !Vector Int
- DataFrame.Operations.Join: assembleFullOuter :: Set Text -> DataFrame -> DataFrame -> Vector Int -> Vector Int -> DataFrame
- DataFrame.Operations.Join: assembleInner :: Set Text -> DataFrame -> DataFrame -> Vector Int -> Vector Int -> DataFrame
- DataFrame.Operations.Join: assembleLeft :: Set Text -> DataFrame -> DataFrame -> Vector Int -> Vector Int -> DataFrame
- DataFrame.Operations.Join: buildCompactIndex :: Vector Int -> CompactIndex
- DataFrame.Operations.Join: buildHashColumn :: [Text] -> DataFrame -> Vector Int
- DataFrame.Operations.Join: data CompactIndex
- DataFrame.Operations.Join: data JoinType
- DataFrame.Operations.Join: fillCrossProduct :: Vector Int -> Vector Int -> Int -> Int -> Int -> Int -> MVector s Int -> MVector s Int -> Int -> ST s ()
- DataFrame.Operations.Join: findGroupEnd :: Vector Int -> Int -> Int -> Int -> Int
- DataFrame.Operations.Join: fullOuterJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: fullOuterJoinNonEmpty :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: hashFullOuterKernel :: Vector Int -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: hashInnerKernel :: Vector Int -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: hashLeftKernel :: Vector Int -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: hashProbeKernel :: CompactIndex -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: innerJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: innerJoinNonEmpty :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: instance GHC.Show.Show DataFrame.Operations.Join.JoinType
- DataFrame.Operations.Join: join :: JoinType -> [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: joinStrategyThreshold :: Int
- DataFrame.Operations.Join: keyColIndices :: Set Text -> DataFrame -> [Int]
- DataFrame.Operations.Join: leftJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: leftJoinNonEmpty :: Text -> [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: leftJoinWithCallPoint :: Text -> [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: maxJoinOutputRows :: Int
- DataFrame.Operations.Join: rightJoin :: [Text] -> DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Join: sortMergeFullOuterKernel :: Vector Int -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: sortMergeInnerKernel :: Vector Int -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: sortMergeLeftKernel :: Vector Int -> Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: sortWithIndices :: Vector Int -> (Vector Int, Vector Int)
- DataFrame.Operations.Join: validatedKeyColIndices :: Text -> Set Text -> DataFrame -> [Int]
- DataFrame.Operations.Merge: (|||) :: DataFrame -> DataFrame -> DataFrame
- DataFrame.Operations.Merge: instance GHC.Base.Monoid DataFrame.Internal.DataFrame.DataFrame
- DataFrame.Operations.Merge: instance GHC.Base.Semigroup DataFrame.Internal.DataFrame.DataFrame
- DataFrame.Operations.Permutation: [Asc] :: forall a. (Columnable a, Ord a) => Expr a -> SortOrder
- DataFrame.Operations.Permutation: [Desc] :: forall a. (Columnable a, Ord a) => Expr a -> SortOrder
- DataFrame.Operations.Permutation: data SortOrder
- DataFrame.Operations.Permutation: getSortColumnName :: SortOrder -> Text
- DataFrame.Operations.Permutation: instance GHC.Classes.Eq DataFrame.Operations.Permutation.SortOrder
- DataFrame.Operations.Permutation: mustFlipCompare :: SortOrder -> Bool
- DataFrame.Operations.Permutation: shuffle :: RandomGen g => g -> DataFrame -> DataFrame
- DataFrame.Operations.Permutation: shuffledIndices :: (HasCallStack, RandomGen g) => g -> Int -> Vector Int
- DataFrame.Operations.Permutation: sortBy :: [SortOrder] -> DataFrame -> DataFrame
- DataFrame.Operations.Permutation: sortIndices :: (Int -> Int -> Ordering) -> Int -> Vector Int
- DataFrame.Operations.Permutation: sortOrderComparator :: SortOrder -> DataFrame -> Int -> Int -> Ordering
- DataFrame.Operations.Statistics: _getColumnAsDouble :: Text -> DataFrame -> Maybe (Vector Double)
- DataFrame.Operations.Statistics: applyStatistic :: (Vector Double -> Double) -> Text -> DataFrame -> Maybe Double
- DataFrame.Operations.Statistics: applyStatistics :: (Vector Double -> Vector Double) -> Text -> DataFrame -> Maybe (Vector Double)
- DataFrame.Operations.Statistics: correlation :: Text -> Text -> DataFrame -> Maybe Double
- DataFrame.Operations.Statistics: frequencies :: (Columnable a, Ord a) => Expr a -> DataFrame -> DataFrame
- DataFrame.Operations.Statistics: genericPercentile :: (Columnable a, Ord a) => Int -> Expr a -> DataFrame -> a
- DataFrame.Operations.Statistics: imputeWith :: (ImputeOp a, Columnable (BaseType a)) => (Expr (BaseType a) -> Expr (BaseType a)) -> Expr a -> DataFrame -> DataFrame
- DataFrame.Operations.Statistics: instance DataFrame.Internal.Column.Columnable b => DataFrame.Operations.Transformations.ImputeOp (GHC.Maybe.Maybe b)
- DataFrame.Operations.Statistics: interQuartileRange :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame.Operations.Statistics: mean :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame.Operations.Statistics: meanMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> DataFrame -> Double
- DataFrame.Operations.Statistics: median :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame.Operations.Statistics: medianMaybe :: (Columnable a, Real a) => Expr (Maybe a) -> DataFrame -> Double
- DataFrame.Operations.Statistics: optionalToDoubleVector :: Real a => Vector (Maybe a) -> Vector Double
- DataFrame.Operations.Statistics: percentile :: (Columnable a, Real a, Unbox a) => Int -> Expr a -> DataFrame -> Double
- DataFrame.Operations.Statistics: roundTo :: Int -> Double -> Double
- DataFrame.Operations.Statistics: skewness :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame.Operations.Statistics: standardDeviation :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame.Operations.Statistics: sum :: (Columnable a, Num a) => Expr a -> DataFrame -> a
- DataFrame.Operations.Statistics: summarize :: DataFrame -> DataFrame
- DataFrame.Operations.Statistics: toPct2dp :: Double -> String
- DataFrame.Operations.Statistics: variance :: (Columnable a, Real a, Unbox a) => Expr a -> DataFrame -> Double
- DataFrame.Operations.Subset: ColumnIndexRange :: (Int, Int) -> SelectionCriteria
- DataFrame.Operations.Subset: ColumnName :: Text -> SelectionCriteria
- DataFrame.Operations.Subset: ColumnNameProperty :: (Text -> Bool) -> SelectionCriteria
- DataFrame.Operations.Subset: ColumnProperty :: (Column -> Bool) -> SelectionCriteria
- DataFrame.Operations.Subset: ColumnTextRange :: (Text, Text) -> SelectionCriteria
- DataFrame.Operations.Subset: byIndexRange :: (Int, Int) -> SelectionCriteria
- DataFrame.Operations.Subset: byName :: Text -> SelectionCriteria
- DataFrame.Operations.Subset: byNameProperty :: (Text -> Bool) -> SelectionCriteria
- DataFrame.Operations.Subset: byNameRange :: (Text, Text) -> SelectionCriteria
- DataFrame.Operations.Subset: byProperty :: (Column -> Bool) -> SelectionCriteria
- DataFrame.Operations.Subset: clip :: Int -> Int -> Int -> Int
- DataFrame.Operations.Subset: columnToTextVec :: Column -> Vector Text
- DataFrame.Operations.Subset: cube :: (Int, Int) -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: data SelectionCriteria
- DataFrame.Operations.Subset: drop :: Int -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: dropLast :: Int -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: exclude :: [Text] -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: filter :: Columnable a => Expr a -> (a -> Bool) -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterAllJust :: DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterAllNothing :: DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterBy :: Columnable a => (a -> Bool) -> Expr a -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterByVector :: forall a b v. (Vector v b, Vector v Int, Columnable a, Columnable b) => Text -> v b -> (a -> Bool) -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterJust :: Text -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterNothing :: Text -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: filterWhere :: Expr Bool -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: groupByIndices :: Column -> Map Text (Vector Int)
- DataFrame.Operations.Subset: kFolds :: RandomGen g => g -> Int -> DataFrame -> [DataFrame]
- DataFrame.Operations.Subset: randomSplit :: RandomGen g => g -> Double -> DataFrame -> (DataFrame, DataFrame)
- DataFrame.Operations.Subset: range :: (Int, Int) -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: rowsAtIndices :: Vector Int -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: sample :: RandomGen g => g -> Double -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: select :: [Text] -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: selectBy :: [SelectionCriteria] -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: splitForStratified :: SplittableGen g => g -> (g, g)
- DataFrame.Operations.Subset: stratifiedSample :: forall a g. (SplittableGen g, Columnable a) => g -> Double -> Expr a -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: stratifiedSplit :: forall a g. (SplittableGen g, Columnable a) => g -> Double -> Expr a -> DataFrame -> (DataFrame, DataFrame)
- DataFrame.Operations.Subset: take :: Int -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: takeLast :: Int -> DataFrame -> DataFrame
- DataFrame.Operations.Subset: type SplittableGen g = (SplitGen g, RandomGen g)
- DataFrame.Operations.Transformations: apply :: (Columnable b, Columnable c) => (b -> c) -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: applyAtIndex :: Columnable a => Int -> (a -> a) -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: applyDouble :: Columnable b => (Double -> b) -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: applyInt :: Columnable b => (Int -> b) -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: applyMany :: (Columnable b, Columnable c) => (b -> c) -> [Text] -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: applyWhere :: (Columnable a, Columnable b) => (a -> Bool) -> Text -> (b -> b) -> Text -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: class Columnable a => ImputeOp a
- DataFrame.Operations.Transformations: derive :: Columnable a => Text -> Expr a -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: deriveMany :: [NamedExpr] -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: deriveWithExpr :: Columnable a => Text -> Expr a -> DataFrame -> (Expr a, DataFrame)
- DataFrame.Operations.Transformations: impute :: ImputeOp a => Expr a -> BaseType a -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: imputeCore :: Columnable b => Expr (Maybe b) -> b -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: instance DataFrame.Internal.Column.Columnable a => DataFrame.Operations.Transformations.ImputeOp a
- DataFrame.Operations.Transformations: runImpute :: ImputeOp a => Expr a -> BaseType a -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: runImputeWith :: ImputeOp a => (Expr (BaseType a) -> Expr (BaseType a)) -> Expr a -> DataFrame -> DataFrame
- DataFrame.Operations.Transformations: safeApply :: (Columnable b, Columnable c) => (b -> c) -> Text -> DataFrame -> Either DataFrameException DataFrame
- DataFrame.Operations.Typing: BoolAssumption :: ParsingAssumption
- DataFrame.Operations.Typing: DateAssumption :: ParsingAssumption
- DataFrame.Operations.Typing: DoubleAssumption :: ParsingAssumption
- DataFrame.Operations.Typing: EitherRead :: SafeReadMode
- DataFrame.Operations.Typing: IntAssumption :: ParsingAssumption
- DataFrame.Operations.Typing: MaybeRead :: SafeReadMode
- DataFrame.Operations.Typing: NoAssumption :: ParsingAssumption
- DataFrame.Operations.Typing: NoSafeRead :: SafeReadMode
- DataFrame.Operations.Typing: ParseOptions :: [Text] -> Int -> SafeReadMode -> [(Text, SafeReadMode)] -> DateFormat -> ParseOptions
- DataFrame.Operations.Typing: TextAssumption :: ParsingAssumption
- DataFrame.Operations.Typing: [missingValues] :: ParseOptions -> [Text]
- DataFrame.Operations.Typing: [parseDateFormat] :: ParseOptions -> DateFormat
- DataFrame.Operations.Typing: [parseSafeOverrides] :: ParseOptions -> [(Text, SafeReadMode)]
- DataFrame.Operations.Typing: [parseSafe] :: ParseOptions -> SafeReadMode
- DataFrame.Operations.Typing: [sampleSize] :: ParseOptions -> Int
- DataFrame.Operations.Typing: convertNullish :: [Text] -> Text -> Maybe Text
- DataFrame.Operations.Typing: convertOnlyEmpty :: Text -> Maybe Text
- DataFrame.Operations.Typing: data ParseOptions
- DataFrame.Operations.Typing: data ParsingAssumption
- DataFrame.Operations.Typing: data SafeReadMode
- DataFrame.Operations.Typing: defaultParseOptions :: ParseOptions
- DataFrame.Operations.Typing: effectiveSafeRead :: SafeReadMode -> [(Text, SafeReadMode)] -> Text -> SafeReadMode
- DataFrame.Operations.Typing: handleBoolAssumption :: (Text -> Bool) -> Vector Text -> Column
- DataFrame.Operations.Typing: handleDateAssumption :: DateFormat -> (Text -> Bool) -> Vector Text -> Column
- DataFrame.Operations.Typing: handleDoubleAssumption :: (Text -> Bool) -> Vector Text -> Column
- DataFrame.Operations.Typing: handleEitherAssumption :: DateFormat -> ParsingAssumption -> Vector Text -> Column
- DataFrame.Operations.Typing: handleIntAssumption :: (Text -> Bool) -> Vector Text -> Column
- DataFrame.Operations.Typing: handleNoAssumption :: DateFormat -> (Text -> Bool) -> Vector Text -> Column
- DataFrame.Operations.Typing: handleTextAssumption :: (Text -> Bool) -> Vector Text -> Column
- DataFrame.Operations.Typing: hasNullValues :: Eq a => Vector (Maybe a) -> Bool
- DataFrame.Operations.Typing: instance GHC.Classes.Eq DataFrame.Operations.Typing.SafeReadMode
- DataFrame.Operations.Typing: instance GHC.Read.Read DataFrame.Operations.Typing.SafeReadMode
- DataFrame.Operations.Typing: instance GHC.Show.Show DataFrame.Operations.Typing.SafeReadMode
- DataFrame.Operations.Typing: isNullishOrMissing :: [Text] -> Text -> Bool
- DataFrame.Operations.Typing: makeParsingAssumption :: DateFormat -> Vector (Maybe Text) -> ParsingAssumption
- DataFrame.Operations.Typing: parseBoxedMaybeColumn :: (Text -> Bool) -> (Text -> Maybe a) -> Vector Text -> Maybe (Bool, Vector (Maybe a))
- DataFrame.Operations.Typing: parseDefault :: ParseOptions -> Column -> Column
- DataFrame.Operations.Typing: parseDefaults :: ParseOptions -> DataFrame -> DataFrame
- DataFrame.Operations.Typing: parseFromExamples :: ParseOptions -> Vector Text -> Column
- DataFrame.Operations.Typing: parseTimeOpt :: DateFormat -> Text -> Maybe Day
- DataFrame.Operations.Typing: parseUnboxedColumnWithPred :: forall src a. Unbox a => a -> (src -> Bool) -> (src -> Maybe a) -> Vector src -> Maybe (Maybe Bitmap, Vector a)
- DataFrame.Operations.Typing: parseWithTypes :: (Text -> SafeReadMode) -> Map Text SchemaType -> DataFrame -> DataFrame
- DataFrame.Operations.Typing: readAsEither :: Read a => String -> a
- DataFrame.Operations.Typing: readAsMaybe :: Read a => String -> Maybe a
- DataFrame.Operations.Typing: readEitherRaw :: Read a => String -> Either Text a
- DataFrame.Operations.Typing: type DateFormat = String
- DataFrame.Operations.Typing: unboxedOrFallback :: (Columnable a, Unbox a) => Maybe (Maybe Bitmap, Vector a) -> Column -> Column
- DataFrame.Operations.Typing: unsafeParseTime :: DateFormat -> Text -> Day
- DataFrame.Operations.Typing: vecSameConstructor :: Vector (Maybe a) -> Vector (Maybe b) -> Bool
- DataFrame.Operators: (.&&) :: (NullableCmpOp a b (NullCmpResult a b), BaseType a ~ Bool) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.&&.) :: Expr Bool -> Expr Bool -> Expr Bool
- DataFrame.Operators: (.*) :: (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => Expr a -> Expr b -> Expr (WidenResult a b)
- DataFrame.Operators: (.*.) :: (Columnable a, Num a) => Expr a -> Expr a -> Expr a
- DataFrame.Operators: (.+) :: (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => Expr a -> Expr b -> Expr (WidenResult a b)
- DataFrame.Operators: (.+.) :: (Columnable a, Num a) => Expr a -> Expr a -> Expr a
- DataFrame.Operators: (.-) :: (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => Expr a -> Expr b -> Expr (WidenResult a b)
- DataFrame.Operators: (.-.) :: (Columnable a, Num a) => Expr a -> Expr a -> Expr a
- DataFrame.Operators: (./) :: (DivWidenOp (BaseType a) (BaseType b), NullLift2Op a b (PromoteDiv (BaseType a) (BaseType b)) (WidenResultDiv a b), Fractional (PromoteDiv (BaseType a) (BaseType b))) => Expr a -> Expr b -> Expr (WidenResultDiv a b)
- DataFrame.Operators: (./.) :: (Columnable a, Fractional a) => Expr a -> Expr a -> Expr a
- DataFrame.Operators: (./=) :: (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (./=.) :: (Columnable a, Eq a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Operators: (.<) :: (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.<.) :: (Columnable a, Ord a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Operators: (.<=) :: (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.<=.) :: (Columnable a, Ord a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Operators: (.=) :: Columnable a => Text -> Expr a -> NamedExpr
- DataFrame.Operators: (.==) :: (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.==.) :: (Columnable a, Eq a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Operators: (.>) :: (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.>.) :: (Columnable a, Ord a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Operators: (.>=) :: (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.>=.) :: (Columnable a, Ord a) => Expr a -> Expr a -> Expr Bool
- DataFrame.Operators: (.^) :: (Columnable (BaseType a), Columnable (BaseType b), Num (BaseType a), Integral (BaseType b), NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (BaseType a) a, Num (Promote (BaseType a) (BaseType b))) => Expr a -> Expr b -> Expr a
- DataFrame.Operators: (.^.) :: (Columnable a, Columnable b, Num a, Integral b) => Expr a -> Expr b -> Expr a
- DataFrame.Operators: (.^^) :: (Columnable (BaseType a), Columnable (BaseType b), Fractional (BaseType a), Integral (BaseType b), NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (BaseType a) a, Num (Promote (BaseType a) (BaseType b))) => Expr a -> Expr b -> Expr a
- DataFrame.Operators: (.^^.) :: (Columnable a, Columnable b, Fractional a, Integral b) => Expr a -> Expr b -> Expr a
- DataFrame.Operators: (.||) :: (NullableCmpOp a b (NullCmpResult a b), BaseType a ~ Bool) => Expr a -> Expr b -> Expr (NullCmpResult a b)
- DataFrame.Operators: (.||.) :: Expr Bool -> Expr Bool -> Expr Bool
- DataFrame.Operators: (|>) :: a -> (a -> b) -> b
- DataFrame.Operators: as :: Columnable a => Expr a -> Text -> NamedExpr
- DataFrame.Operators: col :: Columnable a => Text -> Expr a
- DataFrame.Operators: ifThenElse :: Columnable a => Expr Bool -> Expr a -> Expr a -> Expr a
- DataFrame.Operators: infix 4 .>=
- DataFrame.Operators: infixl 6 .-
- DataFrame.Operators: infixl 7 ./
- DataFrame.Operators: infixr 0 .=
- DataFrame.Operators: infixr 2 .||
- DataFrame.Operators: infixr 3 .&&
- DataFrame.Operators: infixr 8 .^.
- DataFrame.Operators: lift2Decorated :: (Columnable c, Columnable b, Columnable a) => (c -> b -> a) -> Text -> Maybe Text -> Bool -> Int -> Expr c -> Expr b -> Expr a
- DataFrame.Operators: liftDecorated :: (Columnable a, Columnable b) => (a -> b) -> Text -> Maybe Text -> Expr a -> Expr b
- DataFrame.Operators: lit :: Columnable a => a -> Expr a
- DataFrame.Operators: name :: Show a => Expr a -> Text
- DataFrame.Synthesis: BeamConfig :: Int -> Int -> LossFunction -> Bool -> BeamConfig
- DataFrame.Synthesis: F1 :: LossFunction
- DataFrame.Synthesis: MeanSquaredError :: LossFunction
- DataFrame.Synthesis: MutualInformation :: LossFunction
- DataFrame.Synthesis: PearsonCorrelation :: LossFunction
- DataFrame.Synthesis: [beamLength] :: BeamConfig -> Int
- DataFrame.Synthesis: [includeConditionals] :: BeamConfig -> Bool
- DataFrame.Synthesis: [lossFunction] :: BeamConfig -> LossFunction
- DataFrame.Synthesis: [searchDepth] :: BeamConfig -> Int
- DataFrame.Synthesis: beamSearch :: DataFrame -> BeamConfig -> TypedColumn Double -> [Expr Double] -> [Expr Bool] -> [Expr Double] -> Maybe (Expr Double)
- DataFrame.Synthesis: data BeamConfig
- DataFrame.Synthesis: data LossFunction
- DataFrame.Synthesis: deduplicate :: Columnable a => DataFrame -> [Expr a] -> [(Expr a, TypedColumn a)]
- DataFrame.Synthesis: defaultBeamConfig :: BeamConfig
- DataFrame.Synthesis: equivalent :: DataFrame -> Expr Double -> Expr Double -> Bool
- DataFrame.Synthesis: f1FromBinary :: Vector Double -> Vector Double -> Maybe Double
- DataFrame.Synthesis: f1FromCounts :: Int -> Int -> Int -> Maybe Double
- DataFrame.Synthesis: fitClassifier :: Text -> Int -> Int -> DataFrame -> Either String (Expr Int)
- DataFrame.Synthesis: fitRegression :: Text -> Int -> Int -> DataFrame -> Either String (Expr Double)
- DataFrame.Synthesis: generateConditions :: TypedColumn Double -> [Expr Bool] -> [Expr Double] -> DataFrame -> [Expr Bool]
- DataFrame.Synthesis: generatePrograms :: Bool -> [Expr Bool] -> [Expr Double] -> [Expr Double] -> [Expr Double] -> [Expr Double]
- DataFrame.Synthesis: getLossFunction :: LossFunction -> Vector Double -> Vector Double -> Maybe Double
- DataFrame.Synthesis: isConditional :: Expr a -> Bool
- DataFrame.Synthesis: isLiteral :: Expr a -> Bool
- DataFrame.Synthesis: percentiles :: DataFrame -> [Expr Double]
- DataFrame.Synthesis: pickTopN :: DataFrame -> TypedColumn Double -> BeamConfig -> [(Expr Double, TypedColumn a)] -> [Expr Double]
- DataFrame.Synthesis: pickTopNBool :: DataFrame -> TypedColumn Double -> [(Expr Bool, TypedColumn Bool)] -> [Expr Bool]
- DataFrame.Synthesis: roundTo2SigDigits :: Double -> Double
- DataFrame.Synthesis: roundToSigDigits :: Int -> Double -> Double
- DataFrame.Synthesis: satisfiesExamples :: DataFrame -> TypedColumn Double -> Expr Double -> Bool
- DataFrame.Synthesis: synthesizeFeatureExpr :: Text -> BeamConfig -> DataFrame -> Either String (Expr Double)
- DataFrame.Typed: (.&&.) :: forall (cols :: [Type]). TExpr cols Bool -> TExpr cols Bool -> TExpr cols Bool
- DataFrame.Typed: (.*) :: forall a b (cols :: [Type]). (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResult a b)
- DataFrame.Typed: (.+) :: forall a b (cols :: [Type]). (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResult a b)
- DataFrame.Typed: (.-) :: forall a b (cols :: [Type]). (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResult a b)
- DataFrame.Typed: (./) :: forall a b (cols :: [Type]). (DivWidenOp (BaseType a) (BaseType b), NullLift2Op a b (PromoteDiv (BaseType a) (BaseType b)) (WidenResultDiv a b), Fractional (PromoteDiv (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResultDiv a b)
- DataFrame.Typed: (./=) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed: (./=.) :: forall a (cols :: [Type]). (Columnable a, Eq a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed: (.<) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed: (.<.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed: (.<=) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed: (.<=.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed: (.==) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed: (.==.) :: forall a (cols :: [Type]). (Columnable a, Eq a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed: (.>) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed: (.>.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed: (.>=) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed: (.>=.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed: (.||.) :: forall (cols :: [Type]). TExpr cols Bool -> TExpr cols Bool -> TExpr cols Bool
- DataFrame.Typed: TExpr :: Expr a -> TExpr (cols :: [Type]) a
- DataFrame.Typed: That :: b -> These a b
- DataFrame.Typed: These :: a -> b -> These a b
- DataFrame.Typed: This :: a -> These a b
- DataFrame.Typed: [Asc] :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed: [Desc] :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed: [unTExpr] :: TExpr (cols :: [Type]) a -> Expr a
- DataFrame.Typed: agg :: forall (name :: Symbol) a (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type]). (KnownSymbol name, Columnable a) => TExpr cols a -> TAgg keys cols aggs -> TAgg keys cols (Column name a ': aggs)
- DataFrame.Typed: aggNil :: forall (keys :: [Symbol]) (cols :: [Type]). TAgg keys cols ('[] :: [Type])
- DataFrame.Typed: aggregate :: forall (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type]). TAgg keys cols aggs -> TypedGrouped keys cols -> TypedDataFrame (Append (GroupKeyColumns keys cols) (Reverse aggs))
- DataFrame.Typed: aggregateUntyped :: forall (keys :: [Symbol]) (cols :: [Type]). [NamedExpr] -> TypedGrouped keys cols -> DataFrame
- DataFrame.Typed: append :: forall (cols :: [Type]). TypedDataFrame cols -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: as :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> Text -> NamedExpr
- DataFrame.Typed: asc :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed: castExpr :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => TExpr cols src -> TExpr cols (Maybe b)
- DataFrame.Typed: castExprEither :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => TExpr cols src -> TExpr cols (Either Text b)
- DataFrame.Typed: castExprWithDefault :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => b -> TExpr cols src -> TExpr cols b
- DataFrame.Typed: class AllKnownSymbol (names :: [Symbol])
- DataFrame.Typed: class KnownSchema (cols :: [Type])
- DataFrame.Typed: cloneColumn :: forall (old :: Symbol) (new :: Symbol) (cols :: [Type]). (KnownSymbol old, KnownSymbol new, AssertPresent old cols, AssertAbsent new cols) => TypedDataFrame cols -> TypedDataFrame (Column new (Lookup old cols) ': cols)
- DataFrame.Typed: col :: forall (name :: Symbol) (cols :: [Type]) a. (KnownSymbol name, a ~ SafeLookup name cols, Columnable a, AssertPresent name cols) => TExpr cols a
- DataFrame.Typed: collect :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> TExpr cols [a]
- DataFrame.Typed: columnAsList :: forall (name :: Symbol) (cols :: [Type]) a. (KnownSymbol name, a ~ SafeLookup name cols, Columnable a, AssertPresent name cols) => TypedDataFrame cols -> [a]
- DataFrame.Typed: columnAsVector :: forall (name :: Symbol) (cols :: [Type]) a. (KnownSymbol name, a ~ SafeLookup name cols, Columnable a, AssertPresent name cols) => TypedDataFrame cols -> Vector a
- DataFrame.Typed: columnNames :: forall (cols :: [Type]). TypedDataFrame cols -> [Text]
- DataFrame.Typed: count :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> TExpr cols Int
- DataFrame.Typed: countAll :: forall (cols :: [Type]). TExpr cols Int
- DataFrame.Typed: cube :: forall (cols :: [Type]). (Int, Int) -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: data Column (name :: Symbol) a
- DataFrame.Typed: data TSortOrder (cols :: [Type])
- DataFrame.Typed: data These a b
- DataFrame.Typed: data TypedDataFrame (cols :: [Type])
- DataFrame.Typed: data TypedGrouped (keys :: [Symbol]) (cols :: [Type])
- DataFrame.Typed: derive :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => TExpr cols a -> TypedDataFrame cols -> TypedDataFrame (Snoc cols (Column name a))
- DataFrame.Typed: deriveSchema :: String -> DataFrame -> DecsQ
- DataFrame.Typed: deriveSchemaFromCsvFile :: String -> String -> DecsQ
- DataFrame.Typed: deriveSchemaFromCsvFileWith :: ReadOptions -> String -> String -> DecsQ
- DataFrame.Typed: desc :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed: dimensions :: forall (cols :: [Type]). TypedDataFrame cols -> (Int, Int)
- DataFrame.Typed: distinct :: forall (cols :: [Type]). TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: drop :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: dropColumn :: forall (name :: Symbol) (cols :: [Type]). (KnownSymbol name, AssertPresent name cols) => TypedDataFrame cols -> TypedDataFrame (RemoveColumn name cols)
- DataFrame.Typed: dropLast :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: exclude :: forall (names :: [Symbol]) (cols :: [Type]). AllKnownSymbol names => TypedDataFrame cols -> TypedDataFrame (ExcludeSchema names cols)
- DataFrame.Typed: filter :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> (a -> Bool) -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: filterAllJust :: forall (cols :: [Type]). TypedDataFrame cols -> TypedDataFrame (StripAllMaybe cols)
- DataFrame.Typed: filterBy :: forall a (cols :: [Type]). Columnable a => (a -> Bool) -> TExpr cols a -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: filterJust :: forall (name :: Symbol) (cols :: [Type]). (KnownSymbol name, AssertPresent name cols) => TypedDataFrame cols -> TypedDataFrame (StripMaybeAt name cols)
- DataFrame.Typed: filterNothing :: forall (name :: Symbol) (cols :: [Type]). (KnownSymbol name, AssertPresent name cols) => TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: filterWhere :: forall (cols :: [Type]). TExpr cols Bool -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: freeze :: forall (cols :: [Type]). KnownSchema cols => DataFrame -> Maybe (TypedDataFrame cols)
- DataFrame.Typed: freezeWithError :: forall (cols :: [Type]). KnownSchema cols => DataFrame -> Either Text (TypedDataFrame cols)
- DataFrame.Typed: fullOuterJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (FullOuterJoinSchema keys left right)
- DataFrame.Typed: groupBy :: forall (keys :: [Symbol]) (cols :: [Type]). (AllKnownSymbol keys, AssertAllPresent keys cols) => TypedDataFrame cols -> TypedGrouped keys cols
- DataFrame.Typed: ifThenElse :: forall a (cols :: [Type]). Columnable a => TExpr cols Bool -> TExpr cols a -> TExpr cols a -> TExpr cols a
- DataFrame.Typed: impute :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, Maybe a ~ Lookup name cols) => a -> TypedDataFrame cols -> TypedDataFrame (Impute name cols)
- DataFrame.Typed: infix 4 .>
- DataFrame.Typed: infixl 4 .>.
- DataFrame.Typed: infixl 6 .-
- DataFrame.Typed: infixl 7 ./
- DataFrame.Typed: infixr 2 .||.
- DataFrame.Typed: infixr 3 .&&.
- DataFrame.Typed: innerJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (InnerJoinSchema keys left right)
- DataFrame.Typed: insert :: forall (name :: Symbol) a (cols :: [Type]) t. (KnownSymbol name, Columnable a, Foldable t, AssertAbsent name cols) => t a -> TypedDataFrame cols -> TypedDataFrame (Column name a ': cols)
- DataFrame.Typed: insertColumn :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => Column -> TypedDataFrame cols -> TypedDataFrame (Column name a ': cols)
- DataFrame.Typed: insertVector :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => Vector a -> TypedDataFrame cols -> TypedDataFrame (Column name a ': cols)
- DataFrame.Typed: leftJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (LeftJoinSchema keys left right)
- DataFrame.Typed: lift :: forall a b (cols :: [Type]). (Columnable a, Columnable b) => (a -> b) -> TExpr cols a -> TExpr cols b
- DataFrame.Typed: lift2 :: forall a b c (cols :: [Type]). (Columnable a, Columnable b, Columnable c) => (a -> b -> c) -> TExpr cols a -> TExpr cols b -> TExpr cols c
- DataFrame.Typed: lit :: forall a (cols :: [Type]). Columnable a => a -> TExpr cols a
- DataFrame.Typed: maximum :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a
- DataFrame.Typed: mean :: forall a (cols :: [Type]). (Columnable a, Real a) => TExpr cols a -> TExpr cols Double
- DataFrame.Typed: minimum :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a
- DataFrame.Typed: nColumns :: forall (cols :: [Type]). TypedDataFrame cols -> Int
- DataFrame.Typed: nRows :: forall (cols :: [Type]). TypedDataFrame cols -> Int
- DataFrame.Typed: newtype TExpr (cols :: [Type]) a
- DataFrame.Typed: not :: forall (cols :: [Type]). TExpr cols Bool -> TExpr cols Bool
- DataFrame.Typed: nullLift :: forall a r (cols :: [Type]). (NullLift1Op a r (NullLift1Result a r), Columnable (NullLift1Result a r)) => (BaseType a -> r) -> TExpr cols a -> TExpr cols (NullLift1Result a r)
- DataFrame.Typed: nullLift2 :: forall a b r (cols :: [Type]). (NullLift2Op a b r (NullLift2Result a b r), Columnable (NullLift2Result a b r)) => (BaseType a -> BaseType b -> r) -> TExpr cols a -> TExpr cols b -> TExpr cols (NullLift2Result a b r)
- DataFrame.Typed: over :: forall (names :: [Symbol]) (cols :: [Type]) a. (Columnable a, AllKnownSymbol names, AssertAllPresent names cols) => TExpr cols a -> TExpr cols a
- DataFrame.Typed: range :: forall (cols :: [Type]). (Int, Int) -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: rename :: forall (old :: Symbol) (new :: Symbol) (cols :: [Type]). (KnownSymbol old, KnownSymbol new) => TypedDataFrame cols -> TypedDataFrame (RenameInSchema old new cols)
- DataFrame.Typed: renameMany :: forall (pairs :: [(Symbol, Symbol)]) (cols :: [Type]). AllKnownPairs pairs => TypedDataFrame cols -> TypedDataFrame (RenameManyInSchema pairs cols)
- DataFrame.Typed: replaceColumn :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, a ~ SafeLookup name cols, AssertPresent name cols) => TExpr cols a -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: rightJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (RightJoinSchema keys left right)
- DataFrame.Typed: sample :: forall g (cols :: [Type]). RandomGen g => g -> Double -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: schemaEvidence :: KnownSchema cols => [(Text, SomeTypeRep)]
- DataFrame.Typed: select :: forall (names :: [Symbol]) (cols :: [Type]). (AllKnownSymbol names, AssertAllPresent names cols) => TypedDataFrame cols -> TypedDataFrame (SubsetSchema names cols)
- DataFrame.Typed: shuffle :: forall g (cols :: [Type]). RandomGen g => g -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: sortBy :: forall (cols :: [Type]). [TSortOrder cols] -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: sum :: forall a (cols :: [Type]). (Columnable a, Num a) => TExpr cols a -> TExpr cols a
- DataFrame.Typed: symbolVals :: AllKnownSymbol names => [Text]
- DataFrame.Typed: take :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: takeLast :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed: thaw :: forall (cols :: [Type]). TypedDataFrame cols -> DataFrame
- DataFrame.Typed: toDouble :: forall a (cols :: [Type]). (Columnable a, Real a) => TExpr cols a -> TExpr cols Double
- DataFrame.Typed: type family AssertPresent (name :: Symbol) (cols :: [Type])
- DataFrame.Typed: unsafeCastExpr :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => TExpr cols src -> TExpr cols b
- DataFrame.Typed: unsafeFreeze :: forall (cols :: [Type]). DataFrame -> TypedDataFrame cols
- DataFrame.Typed.Access: columnAsList :: forall (name :: Symbol) (cols :: [Type]) a. (KnownSymbol name, a ~ SafeLookup name cols, Columnable a, AssertPresent name cols) => TypedDataFrame cols -> [a]
- DataFrame.Typed.Access: columnAsVector :: forall (name :: Symbol) (cols :: [Type]) a. (KnownSymbol name, a ~ SafeLookup name cols, Columnable a, AssertPresent name cols) => TypedDataFrame cols -> Vector a
- DataFrame.Typed.Aggregate: agg :: forall (name :: Symbol) a (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type]). (KnownSymbol name, Columnable a) => TExpr cols a -> TAgg keys cols aggs -> TAgg keys cols (Column name a ': aggs)
- DataFrame.Typed.Aggregate: aggNil :: forall (keys :: [Symbol]) (cols :: [Type]). TAgg keys cols ('[] :: [Type])
- DataFrame.Typed.Aggregate: aggregate :: forall (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type]). TAgg keys cols aggs -> TypedGrouped keys cols -> TypedDataFrame (Append (GroupKeyColumns keys cols) (Reverse aggs))
- DataFrame.Typed.Aggregate: aggregateUntyped :: forall (keys :: [Symbol]) (cols :: [Type]). [NamedExpr] -> TypedGrouped keys cols -> DataFrame
- DataFrame.Typed.Aggregate: groupBy :: forall (keys :: [Symbol]) (cols :: [Type]). (AllKnownSymbol keys, AssertAllPresent keys cols) => TypedDataFrame cols -> TypedGrouped keys cols
- DataFrame.Typed.Expr: (.&&) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), BaseType a ~ Bool) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.&&.) :: forall (cols :: [Type]). TExpr cols Bool -> TExpr cols Bool -> TExpr cols Bool
- DataFrame.Typed.Expr: (.*) :: forall a b (cols :: [Type]). (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResult a b)
- DataFrame.Typed.Expr: (.*.) :: forall a (cols :: [Type]). (Columnable a, Num a) => TExpr cols a -> TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: (.+) :: forall a b (cols :: [Type]). (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResult a b)
- DataFrame.Typed.Expr: (.+.) :: forall a (cols :: [Type]). (Columnable a, Num a) => TExpr cols a -> TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: (.-) :: forall a b (cols :: [Type]). (NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (Promote (BaseType a) (BaseType b)) (WidenResult a b), Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResult a b)
- DataFrame.Typed.Expr: (.-.) :: forall a (cols :: [Type]). (Columnable a, Num a) => TExpr cols a -> TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: (./) :: forall a b (cols :: [Type]). (DivWidenOp (BaseType a) (BaseType b), NullLift2Op a b (PromoteDiv (BaseType a) (BaseType b)) (WidenResultDiv a b), Fractional (PromoteDiv (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols (WidenResultDiv a b)
- DataFrame.Typed.Expr: (./.) :: forall a (cols :: [Type]). (Columnable a, Fractional a) => TExpr cols a -> TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: (./=) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (./=.) :: forall a (cols :: [Type]). (Columnable a, Eq a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed.Expr: (.<) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.<.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed.Expr: (.<=) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.<=.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed.Expr: (.==) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.==.) :: forall a (cols :: [Type]). (Columnable a, Eq a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed.Expr: (.>) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.>.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed.Expr: (.>=) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.>=.) :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a -> TExpr cols Bool
- DataFrame.Typed.Expr: (.^) :: forall a b (cols :: [Type]). (Columnable (BaseType a), Columnable (BaseType b), Num (BaseType a), Integral (BaseType b), NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (BaseType a) a, Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols a
- DataFrame.Typed.Expr: (.^.) :: forall a b (cols :: [Type]). (Columnable a, Columnable b, Num a, Integral b) => TExpr cols a -> TExpr cols b -> TExpr cols a
- DataFrame.Typed.Expr: (.^^) :: forall a b (cols :: [Type]). (Columnable (BaseType a), Columnable (BaseType b), Fractional (BaseType a), Integral (BaseType b), NumericWidenOp (BaseType a) (BaseType b), NullLift2Op a b (BaseType a) a, Num (Promote (BaseType a) (BaseType b))) => TExpr cols a -> TExpr cols b -> TExpr cols a
- DataFrame.Typed.Expr: (.^^.) :: forall a b (cols :: [Type]). (Columnable a, Columnable b, Fractional a, Integral b) => TExpr cols a -> TExpr cols b -> TExpr cols a
- DataFrame.Typed.Expr: (.||) :: forall a b (cols :: [Type]). (NullableCmpOp a b (NullCmpResult a b), BaseType a ~ Bool) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b)
- DataFrame.Typed.Expr: (.||.) :: forall (cols :: [Type]). TExpr cols Bool -> TExpr cols Bool -> TExpr cols Bool
- DataFrame.Typed.Expr: TExpr :: Expr a -> TExpr (cols :: [Type]) a
- DataFrame.Typed.Expr: [unTExpr] :: TExpr (cols :: [Type]) a -> Expr a
- DataFrame.Typed.Expr: as :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> Text -> NamedExpr
- DataFrame.Typed.Expr: asc :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed.Expr: castExpr :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => TExpr cols src -> TExpr cols (Maybe b)
- DataFrame.Typed.Expr: castExprEither :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => TExpr cols src -> TExpr cols (Either Text b)
- DataFrame.Typed.Expr: castExprWithDefault :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => b -> TExpr cols src -> TExpr cols b
- DataFrame.Typed.Expr: col :: forall (name :: Symbol) (cols :: [Type]) a. (KnownSymbol name, a ~ SafeLookup name cols, Columnable a, AssertPresent name cols) => TExpr cols a
- DataFrame.Typed.Expr: collect :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> TExpr cols [a]
- DataFrame.Typed.Expr: count :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> TExpr cols Int
- DataFrame.Typed.Expr: countAll :: forall (cols :: [Type]). TExpr cols Int
- DataFrame.Typed.Expr: desc :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed.Expr: ifThenElse :: forall a (cols :: [Type]). Columnable a => TExpr cols Bool -> TExpr cols a -> TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: infix 4 .>
- DataFrame.Typed.Expr: infixl 4 .>.
- DataFrame.Typed.Expr: infixl 6 .-
- DataFrame.Typed.Expr: infixl 7 ./
- DataFrame.Typed.Expr: infixr 2 .||
- DataFrame.Typed.Expr: infixr 3 .&&
- DataFrame.Typed.Expr: infixr 8 .^
- DataFrame.Typed.Expr: instance (Data.String.IsString a, DataFrame.Internal.Column.Columnable a) => Data.String.IsString (DataFrame.Typed.Types.TExpr cols a)
- DataFrame.Typed.Expr: instance (GHC.Float.Floating a, DataFrame.Internal.Column.Columnable a) => GHC.Float.Floating (DataFrame.Typed.Types.TExpr cols a)
- DataFrame.Typed.Expr: instance (GHC.Num.Num a, DataFrame.Internal.Column.Columnable a) => GHC.Num.Num (DataFrame.Typed.Types.TExpr cols a)
- DataFrame.Typed.Expr: instance (GHC.Real.Fractional a, DataFrame.Internal.Column.Columnable a) => GHC.Real.Fractional (DataFrame.Typed.Types.TExpr cols a)
- DataFrame.Typed.Expr: lift :: forall a b (cols :: [Type]). (Columnable a, Columnable b) => (a -> b) -> TExpr cols a -> TExpr cols b
- DataFrame.Typed.Expr: lift2 :: forall a b c (cols :: [Type]). (Columnable a, Columnable b, Columnable c) => (a -> b -> c) -> TExpr cols a -> TExpr cols b -> TExpr cols c
- DataFrame.Typed.Expr: lit :: forall a (cols :: [Type]). Columnable a => a -> TExpr cols a
- DataFrame.Typed.Expr: maximum :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: mean :: forall a (cols :: [Type]). (Columnable a, Real a) => TExpr cols a -> TExpr cols Double
- DataFrame.Typed.Expr: median :: forall a (cols :: [Type]). (Columnable a, Real a, Unbox a) => TExpr cols a -> TExpr cols Double
- DataFrame.Typed.Expr: minimum :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: newtype TExpr (cols :: [Type]) a
- DataFrame.Typed.Expr: not :: forall (cols :: [Type]). TExpr cols Bool -> TExpr cols Bool
- DataFrame.Typed.Expr: nullLift :: forall a r (cols :: [Type]). (NullLift1Op a r (NullLift1Result a r), Columnable (NullLift1Result a r)) => (BaseType a -> r) -> TExpr cols a -> TExpr cols (NullLift1Result a r)
- DataFrame.Typed.Expr: nullLift2 :: forall a b r (cols :: [Type]). (NullLift2Op a b r (NullLift2Result a b r), Columnable (NullLift2Result a b r)) => (BaseType a -> BaseType b -> r) -> TExpr cols a -> TExpr cols b -> TExpr cols (NullLift2Result a b r)
- DataFrame.Typed.Expr: over :: forall (names :: [Symbol]) (cols :: [Type]) a. (Columnable a, AllKnownSymbol names, AssertAllPresent names cols) => TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: sum :: forall a (cols :: [Type]). (Columnable a, Num a) => TExpr cols a -> TExpr cols a
- DataFrame.Typed.Expr: toDouble :: forall a (cols :: [Type]). (Columnable a, Real a) => TExpr cols a -> TExpr cols Double
- DataFrame.Typed.Expr: unsafeCastExpr :: forall b (cols :: [Type]) src. (Columnable b, Columnable src, Read b) => TExpr cols src -> TExpr cols b
- DataFrame.Typed.Freeze: freeze :: forall (cols :: [Type]). KnownSchema cols => DataFrame -> Maybe (TypedDataFrame cols)
- DataFrame.Typed.Freeze: freezeWithError :: forall (cols :: [Type]). KnownSchema cols => DataFrame -> Either Text (TypedDataFrame cols)
- DataFrame.Typed.Freeze: thaw :: forall (cols :: [Type]). TypedDataFrame cols -> DataFrame
- DataFrame.Typed.Freeze: unsafeFreeze :: forall (cols :: [Type]). DataFrame -> TypedDataFrame cols
- DataFrame.Typed.Join: fullOuterJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (FullOuterJoinSchema keys left right)
- DataFrame.Typed.Join: innerJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (InnerJoinSchema keys left right)
- DataFrame.Typed.Join: leftJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (LeftJoinSchema keys left right)
- DataFrame.Typed.Join: rightJoin :: forall (keys :: [Symbol]) (left :: [Type]) (right :: [Type]). AllKnownSymbol keys => TypedDataFrame left -> TypedDataFrame right -> TypedDataFrame (RightJoinSchema keys left right)
- DataFrame.Typed.Lazy: Ascending :: SortOrder
- DataFrame.Typed.Lazy: Descending :: SortOrder
- DataFrame.Typed.Lazy: aggregate :: forall (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type]). TAgg keys cols aggs -> TypedLazyGrouped keys cols -> TypedLazyDataFrame (Append (GroupKeyColumns keys cols) (Reverse aggs))
- DataFrame.Typed.Lazy: data SortOrder
- DataFrame.Typed.Lazy: data TypedLazyDataFrame (cols :: [Type])
- DataFrame.Typed.Lazy: derive :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => TExpr cols a -> TypedLazyDataFrame cols -> TypedLazyDataFrame (Snoc cols (Column name a))
- DataFrame.Typed.Lazy: filter :: forall (cols :: [Type]). TExpr cols Bool -> TypedLazyDataFrame cols -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: fromDataFrame :: forall (cols :: [Type]). TypedDataFrame cols -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: fromTypedDataFrame :: forall (cols :: [Type]). TypedDataFrame cols -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: groupBy :: forall (keys :: [Symbol]) (cols :: [Type]). (AllKnownSymbol keys, AssertAllPresent keys cols) => TypedLazyDataFrame cols -> TypedLazyGrouped keys cols
- DataFrame.Typed.Lazy: instance GHC.Show.Show (DataFrame.Typed.Lazy.TypedLazyDataFrame cols)
- DataFrame.Typed.Lazy: join :: forall (left :: [Type]) (right :: [Type]). JoinType -> Text -> Text -> TypedLazyDataFrame left -> TypedLazyDataFrame right -> TypedLazyDataFrame left
- DataFrame.Typed.Lazy: run :: forall (cols :: [Type]). KnownSchema cols => TypedLazyDataFrame cols -> IO (TypedDataFrame cols)
- DataFrame.Typed.Lazy: scanCsv :: forall (cols :: [Type]). Schema -> Text -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: scanParquet :: forall (cols :: [Type]). Schema -> Text -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: scanSeparated :: forall (cols :: [Type]). Char -> Schema -> Text -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: select :: forall (names :: [Symbol]) (cols :: [Type]). (AllKnownSymbol names, AssertAllPresent names cols) => TypedLazyDataFrame cols -> TypedLazyDataFrame (SubsetSchema names cols)
- DataFrame.Typed.Lazy: sortBy :: forall (cols :: [Type]). [(Text, SortOrder)] -> TypedLazyDataFrame cols -> TypedLazyDataFrame cols
- DataFrame.Typed.Lazy: take :: forall (cols :: [Type]). Int -> TypedLazyDataFrame cols -> TypedLazyDataFrame cols
- DataFrame.Typed.Operations: append :: forall (cols :: [Type]). TypedDataFrame cols -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: cloneColumn :: forall (old :: Symbol) (new :: Symbol) (cols :: [Type]). (KnownSymbol old, KnownSymbol new, AssertPresent old cols, AssertAbsent new cols) => TypedDataFrame cols -> TypedDataFrame (Column new (Lookup old cols) ': cols)
- DataFrame.Typed.Operations: columnNames :: forall (cols :: [Type]). TypedDataFrame cols -> [Text]
- DataFrame.Typed.Operations: cube :: forall (cols :: [Type]). (Int, Int) -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: derive :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => TExpr cols a -> TypedDataFrame cols -> TypedDataFrame (Snoc cols (Column name a))
- DataFrame.Typed.Operations: dimensions :: forall (cols :: [Type]). TypedDataFrame cols -> (Int, Int)
- DataFrame.Typed.Operations: distinct :: forall (cols :: [Type]). TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: drop :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: dropColumn :: forall (name :: Symbol) (cols :: [Type]). (KnownSymbol name, AssertPresent name cols) => TypedDataFrame cols -> TypedDataFrame (RemoveColumn name cols)
- DataFrame.Typed.Operations: dropLast :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: exclude :: forall (names :: [Symbol]) (cols :: [Type]). AllKnownSymbol names => TypedDataFrame cols -> TypedDataFrame (ExcludeSchema names cols)
- DataFrame.Typed.Operations: filter :: forall a (cols :: [Type]). Columnable a => TExpr cols a -> (a -> Bool) -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: filterAllJust :: forall (cols :: [Type]). TypedDataFrame cols -> TypedDataFrame (StripAllMaybe cols)
- DataFrame.Typed.Operations: filterBy :: forall a (cols :: [Type]). Columnable a => (a -> Bool) -> TExpr cols a -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: filterJust :: forall (name :: Symbol) (cols :: [Type]). (KnownSymbol name, AssertPresent name cols) => TypedDataFrame cols -> TypedDataFrame (StripMaybeAt name cols)
- DataFrame.Typed.Operations: filterNothing :: forall (name :: Symbol) (cols :: [Type]). (KnownSymbol name, AssertPresent name cols) => TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: filterWhere :: forall (cols :: [Type]). TExpr cols Bool -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: impute :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, Maybe a ~ Lookup name cols) => a -> TypedDataFrame cols -> TypedDataFrame (Impute name cols)
- DataFrame.Typed.Operations: insert :: forall (name :: Symbol) a (cols :: [Type]) t. (KnownSymbol name, Columnable a, Foldable t, AssertAbsent name cols) => t a -> TypedDataFrame cols -> TypedDataFrame (Column name a ': cols)
- DataFrame.Typed.Operations: insertColumn :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => Column -> TypedDataFrame cols -> TypedDataFrame (Column name a ': cols)
- DataFrame.Typed.Operations: insertVector :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, AssertAbsent name cols) => Vector a -> TypedDataFrame cols -> TypedDataFrame (Column name a ': cols)
- DataFrame.Typed.Operations: instance (GHC.TypeLits.KnownSymbol a, GHC.TypeLits.KnownSymbol b, DataFrame.Typed.Operations.AllKnownPairs rest) => DataFrame.Typed.Operations.AllKnownPairs ('(a, b) : rest)
- DataFrame.Typed.Operations: instance DataFrame.Typed.Operations.AllKnownPairs '[]
- DataFrame.Typed.Operations: nColumns :: forall (cols :: [Type]). TypedDataFrame cols -> Int
- DataFrame.Typed.Operations: nRows :: forall (cols :: [Type]). TypedDataFrame cols -> Int
- DataFrame.Typed.Operations: range :: forall (cols :: [Type]). (Int, Int) -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: rename :: forall (old :: Symbol) (new :: Symbol) (cols :: [Type]). (KnownSymbol old, KnownSymbol new) => TypedDataFrame cols -> TypedDataFrame (RenameInSchema old new cols)
- DataFrame.Typed.Operations: renameMany :: forall (pairs :: [(Symbol, Symbol)]) (cols :: [Type]). AllKnownPairs pairs => TypedDataFrame cols -> TypedDataFrame (RenameManyInSchema pairs cols)
- DataFrame.Typed.Operations: replaceColumn :: forall (name :: Symbol) a (cols :: [Type]). (KnownSymbol name, Columnable a, a ~ SafeLookup name cols, AssertPresent name cols) => TExpr cols a -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: sample :: forall g (cols :: [Type]). RandomGen g => g -> Double -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: select :: forall (names :: [Symbol]) (cols :: [Type]). (AllKnownSymbol names, AssertAllPresent names cols) => TypedDataFrame cols -> TypedDataFrame (SubsetSchema names cols)
- DataFrame.Typed.Operations: shuffle :: forall g (cols :: [Type]). RandomGen g => g -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: sortBy :: forall (cols :: [Type]). [TSortOrder cols] -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: take :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Operations: takeLast :: forall (cols :: [Type]). Int -> TypedDataFrame cols -> TypedDataFrame cols
- DataFrame.Typed.Schema: class AllKnownSymbol (names :: [Symbol])
- DataFrame.Typed.Schema: class KnownSchema (cols :: [Type])
- DataFrame.Typed.Schema: instance (GHC.TypeLits.KnownSymbol n, DataFrame.Typed.Schema.AllKnownSymbol ns) => DataFrame.Typed.Schema.AllKnownSymbol (n : ns)
- DataFrame.Typed.Schema: instance (GHC.TypeLits.KnownSymbol name, Data.Typeable.Internal.Typeable a, DataFrame.Internal.Column.Columnable a, DataFrame.Typed.Schema.KnownSchema rest) => DataFrame.Typed.Schema.KnownSchema (DataFrame.Typed.Types.Column name a : rest)
- DataFrame.Typed.Schema: instance DataFrame.Typed.Schema.AllKnownSymbol '[]
- DataFrame.Typed.Schema: instance DataFrame.Typed.Schema.KnownSchema '[]
- DataFrame.Typed.Schema: schemaEvidence :: KnownSchema cols => [(Text, SomeTypeRep)]
- DataFrame.Typed.Schema: symbolVals :: AllKnownSymbol names => [Text]
- DataFrame.Typed.Schema: type family GroupKeyColumns (keys :: [Symbol]) (cols :: [Type]) :: [Type]
- DataFrame.Typed.TH: data Column (name :: Symbol) a
- DataFrame.Typed.TH: data TypedDataFrame (cols :: [Type])
- DataFrame.Typed.TH: deriveSchema :: String -> DataFrame -> DecsQ
- DataFrame.Typed.TH: deriveSchemaFromCsvFile :: String -> String -> DecsQ
- DataFrame.Typed.TH: deriveSchemaFromCsvFileWith :: ReadOptions -> String -> String -> DecsQ
- DataFrame.Typed.Types: TDF :: DataFrame -> TypedDataFrame (cols :: [Type])
- DataFrame.Typed.Types: TExpr :: Expr a -> TExpr (cols :: [Type]) a
- DataFrame.Typed.Types: TGD :: GroupedDataFrame -> TypedGrouped (keys :: [Symbol]) (cols :: [Type])
- DataFrame.Typed.Types: That :: b -> These a b
- DataFrame.Typed.Types: These :: a -> b -> These a b
- DataFrame.Typed.Types: This :: a -> These a b
- DataFrame.Typed.Types: [Asc] :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed.Types: [Desc] :: forall a (cols :: [Type]). (Columnable a, Ord a) => TExpr cols a -> TSortOrder cols
- DataFrame.Typed.Types: [TAggCons] :: forall a (cols :: [Type]) (keys :: [Symbol]) (aggs1 :: [Type]) (name :: Symbol). Columnable a => Text -> TExpr cols a -> TAgg keys cols aggs1 -> TAgg keys cols (Column name a ': aggs1)
- DataFrame.Typed.Types: [TAggNil] :: forall (keys :: [Symbol]) (cols :: [Type]). TAgg keys cols ('[] :: [Type])
- DataFrame.Typed.Types: [unTDF] :: TypedDataFrame (cols :: [Type]) -> DataFrame
- DataFrame.Typed.Types: [unTExpr] :: TExpr (cols :: [Type]) a -> Expr a
- DataFrame.Typed.Types: [unTGD] :: TypedGrouped (keys :: [Symbol]) (cols :: [Type]) -> GroupedDataFrame
- DataFrame.Typed.Types: data Column (name :: Symbol) a
- DataFrame.Typed.Types: data TAgg (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type])
- DataFrame.Typed.Types: data TSortOrder (cols :: [Type])
- DataFrame.Typed.Types: data These a b
- DataFrame.Typed.Types: instance GHC.Classes.Eq (DataFrame.Typed.Types.TypedDataFrame cols)
- DataFrame.Typed.Types: instance GHC.Show.Show (DataFrame.Typed.Types.TypedDataFrame cols)
- DataFrame.Typed.Types: newtype TExpr (cols :: [Type]) a
- DataFrame.Typed.Types: newtype TypedDataFrame (cols :: [Type])
- DataFrame.Typed.Types: newtype TypedGrouped (keys :: [Symbol]) (cols :: [Type])
- DataFrame.Typed.Types: taggToNamedExprs :: forall (keys :: [Symbol]) (cols :: [Type]) (aggs :: [Type]). TAgg keys cols aggs -> [NamedExpr]
+ DataFrame.IO.Arrow: arrowToDataframe :: Ptr () -> Ptr () -> IO DataFrame
+ DataFrame.IO.Arrow: columnToArrow :: Text -> Column -> IO (Ptr ArrowSchema, Ptr ArrowArray)
+ DataFrame.IO.Arrow: dataframeToArrow :: DataFrame -> IO (Ptr ArrowSchema, Ptr ArrowArray)
+ DataFrame.IO.Arrow: releaseArrayImpl :: Ptr ArrowArray -> IO ()
+ DataFrame.IO.Arrow: releaseSchemaImpl :: Ptr ArrowSchema -> IO ()
+ DataFrame.IR: AggSpec :: Text -> Text -> Text -> AggSpec
+ DataFrame.IR: Correlation :: Text -> Text -> PlanNode -> PlanNode
+ DataFrame.IR: Derive :: Text -> Value -> PlanNode -> PlanNode
+ DataFrame.IR: Describe :: PlanNode -> PlanNode
+ DataFrame.IR: Distinct :: PlanNode -> PlanNode
+ DataFrame.IR: Drop :: Int -> PlanNode -> PlanNode
+ DataFrame.IR: DropLast :: Int -> PlanNode -> PlanNode
+ DataFrame.IR: Exclude :: [Text] -> PlanNode -> PlanNode
+ DataFrame.IR: Filter :: Value -> PlanNode -> PlanNode
+ DataFrame.IR: Frequencies :: Text -> PlanNode -> PlanNode
+ DataFrame.IR: FromArrow :: Word64 -> Word64 -> PlanNode
+ DataFrame.IR: GroupBy :: [Text] -> [AggSpec] -> PlanNode -> PlanNode
+ DataFrame.IR: Join :: Text -> [Text] -> PlanNode -> PlanNode -> PlanNode
+ DataFrame.IR: Limit :: Int -> PlanNode -> PlanNode
+ DataFrame.IR: Range :: Int -> Int -> PlanNode -> PlanNode
+ DataFrame.IR: ReadCsv :: FilePath -> PlanNode
+ DataFrame.IR: ReadJson :: FilePath -> PlanNode
+ DataFrame.IR: ReadParquet :: FilePath -> PlanNode
+ DataFrame.IR: ReadTsv :: FilePath -> PlanNode
+ DataFrame.IR: Rename :: [(Text, Text)] -> PlanNode -> PlanNode
+ DataFrame.IR: ScanCsv :: FilePath -> [(Text, Text)] -> PlanNode
+ DataFrame.IR: ScanParquet :: FilePath -> [(Text, Text)] -> PlanNode
+ DataFrame.IR: Select :: [Text] -> PlanNode -> PlanNode
+ DataFrame.IR: Sort :: [Text] -> Bool -> PlanNode -> PlanNode
+ DataFrame.IR: TakeLast :: Int -> PlanNode -> PlanNode
+ DataFrame.IR: WriteCsv :: FilePath -> PlanNode -> PlanNode
+ DataFrame.IR: [aggCol] :: AggSpec -> Text
+ DataFrame.IR: [aggFn] :: AggSpec -> Text
+ DataFrame.IR: [aggName] :: AggSpec -> Text
+ DataFrame.IR: data AggSpec
+ DataFrame.IR: data PlanNode
+ DataFrame.IR: executePlan :: CsvReader -> PlanNode -> IO DataFrame
+ DataFrame.IR: instance Data.Aeson.Types.FromJSON.FromJSON DataFrame.IR.AggSpec
+ DataFrame.IR: instance Data.Aeson.Types.FromJSON.FromJSON DataFrame.IR.PlanNode
+ DataFrame.IR: instance GHC.Show.Show DataFrame.IR.AggSpec
+ DataFrame.IR: instance GHC.Show.Show DataFrame.IR.PlanNode
+ DataFrame.IR.ExprJson: [SomeExpr] :: forall a. Columnable a => TypeRep a -> Expr a -> SomeExpr
+ DataFrame.IR.ExprJson: data SomeExpr
+ DataFrame.IR.ExprJson: decodeExprAny :: Value -> Either String SomeExpr
+ DataFrame.IR.ExprJson: decodeExprAt :: Columnable a => Value -> Either String (Expr a)
+ DataFrame.IR.ExprJson: encodeExpr :: Columnable a => Expr a -> Either String Value
+ DataFrame.IR.ExprJson: encodeExprToBytes :: Columnable a => Expr a -> Either String ByteString
+ DataFrame.IR.ExprJson: parseSomeExpr :: Value -> Parser SomeExpr
+ DataFrame.IR.ExprJson: typeTagOf :: Typeable a => Maybe Text
+ DataFrame.IR.ExprJson: withFracTypeTag :: Text -> (forall a. (Columnable a, Fractional a) => Proxy a -> Parser r) -> Parser r
+ DataFrame.IR.ExprJson: withNumTypeTag :: Text -> (forall a. (Columnable a, Num a) => Proxy a -> Parser r) -> Parser r
+ DataFrame.IR.ExprJson: withOrdTypeTag :: Text -> (forall a. (Columnable a, Ord a) => Proxy a -> Parser r) -> Parser r
+ DataFrame.IR.ExprJson: withRealTypeTag :: Text -> (forall a. (Columnable a, Real a) => Proxy a -> Parser r) -> Parser r
+ DataFrame.IR.ExprJson: withTypeTag :: Text -> (forall a. Columnable a => Proxy a -> Parser r) -> Parser r
Files
- CHANGELOG.md +15/−0
- cbits/dataframe_arrow.h +0/−30
- cbits/rts_init.c +0/−18
- dataframe.cabal +16/−18
- ffi/DataFrame/FFI.hs +0/−49
- ffi/DataFrame/IO/Arrow.hs +5/−15
- ffi/DataFrame/IR.hs +273/−17
- ffi/DataFrame/IR/ExprJson.hs +701/−0
- src/DataFrame/DecisionTree.hs +21/−21
- src/DataFrame/IO/CSV.hs +22/−0
- src/DataFrame/IO/Parquet.hs +1/−1
- src/DataFrame/Internal/Expression.hs +25/−28
- src/DataFrame/Internal/Nullable.hs +11/−0
- src/DataFrame/Lazy/Internal/DataFrame.hs +24/−14
- src/DataFrame/Lazy/Internal/Executor.hs +176/−102
- src/DataFrame/Lazy/Internal/LogicalPlan.hs +8/−3
- src/DataFrame/Lazy/Internal/Optimizer.hs +5/−5
- src/DataFrame/Lazy/Internal/PhysicalPlan.hs +2/−2
- src/DataFrame/Operators.hs +42/−18
- src/DataFrame/Synthesis.hs +9/−8
- src/DataFrame/Typed/Expr.hs +46/−18
- tests/DecisionTree.hs +7/−9
- tests/data/unstable_csv/empty_file.csv +0/−0
- tests/data/unstable_csv/utf8_bom.csv +3/−0
CHANGELOG.md view
@@ -1,5 +1,20 @@ # Revision history for dataframe +## 1.2.0.0+### Breaking changes+* Remove `Eq` and `Ord` instances for `Expr` — they were buggy under cross-type comparison. Use `eqExpr` / `compareExpr` from `DataFrame.Internal.Expression` directly.+* Lazy executor: `ExecutorConfig` removed; `execute` now takes only a `PhysicalPlan`. `CsvSource` carries the `CsvReader` per scan, so the executor no longer has to know about the CSV implementation.++### New features+* New `dataframe-fusion` package: typed Apache DataFusion-backed query API (`DataFrame.Fusion.Typed`).+* Can now use any CSV reader for the lazy pipeline.+* New `readCsvWithSchema :: Schema -> FilePath -> IO DataFrame` for schema-driven CSV reads, plus a `CsvReader` type alias exported from `DataFrame.IO.CSV`.+* Numeric comparison operators (`.==`, `./=`, `.<`, `.>`, `.<=`, `.>=`) now widen their operands to a common numeric type, so e.g. `Expr Double .== Expr Int` typechecks. Mirrors the existing arithmetic widening.++### Internal+* Bump `cabal-version` to 3.0; add `dataframe-fastcsv` to the lint targets; nix flake and `cabal.project` improvements.+* `dataframe-persistent` license corrected to MIT in cabal (#201).+ ## 1.1.2.1 * Add `over` and `median` functions to typed API * Fix bug opening web plots in MacOS
− cbits/dataframe_arrow.h
@@ -1,30 +0,0 @@-#pragma once-#include <stdint.h>--#ifdef __cplusplus-extern "C" {-#endif--/**- * Execute a JSON-encoded query plan and return Arrow C Data Interface pointers.- *- * plan_json – null-terminated UTF-8 JSON (see DataFrame.IR for schema)- * schema_out – receives ArrowSchema* cast to uint64_t- * array_out – receives ArrowArray* cast to uint64_t- *- * Returns 0 on success, -1 on error (message written to stderr).- *- * Plan ops: ReadCsv, ReadTsv, FromArrow, Select, GroupBy, Sort, Limit- *- * Example (GroupBy):- * {"op":"GroupBy","keys":["Sex"],- * "aggregations":[{"name":"n","agg":"count","col":"Sex"}],- * "input":{"op":"ReadCsv","path":"data/titanic.csv"}}- */-int dfExecutePlan(const char* plan_json,- uint64_t* schema_out,- uint64_t* array_out);--#ifdef __cplusplus-}-#endif
− cbits/rts_init.c
@@ -1,18 +0,0 @@-/* Auto-initialise / finalise the GHC RTS when the shared library is- loaded / unloaded. Required because cabal's native-shared libraries- do not run hs_init automatically on macOS. */--#include <stddef.h>-#include "HsFFI.h"--__attribute__((constructor))-static void df_lib_init(void)-{- hs_init(0, NULL);-}--__attribute__((destructor))-static void df_lib_fini(void)-{- hs_exit();-}
dataframe.cabal view
@@ -1,6 +1,6 @@-cabal-version: 2.4+cabal-version: 3.0 name: dataframe-version: 1.1.2.1+version: 1.2.0.0 synopsis: A fast, safe, and intuitive DataFrame library. @@ -17,8 +17,6 @@ tested-with: GHC ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2 extra-doc-files: CHANGELOG.md README.md extra-source-files: cbits/arrow_abi.h- cbits/dataframe_arrow.h- cbits/rts_init.c tests/data/typing/texts.txt tests/data/typing/texts_with_empties.txt tests/data/typing/texts_with_empties_and_nullish.txt@@ -113,9 +111,11 @@ DataFrame.Typed.Lazy, DataFrame.Typed build-depends: base >= 4 && <5,+ async >= 2.2 && < 3, deepseq >= 1 && < 2, aeson >= 0.11.0.0 && < 3, array >= 0.5.4.0 && < 0.6,+ temporary >= 1.3 && < 2, attoparsec >= 0.12 && < 0.15, bytestring >= 0.11 && < 0.13, bytestring-lexing >= 0.5 && < 0.6,@@ -147,32 +147,29 @@ hs-source-dirs: src default-language: Haskell2010 -foreign-library dataframe-arrow- type: native-shared+library arrow-bridge+ import: warnings+ visibility: public hs-source-dirs: ffi- other-modules: DataFrame.FFI- DataFrame.IO.Arrow+ exposed-modules: DataFrame.IO.Arrow DataFrame.IR+ DataFrame.IR.ExprJson build-depends: base >= 4 && < 5,- dataframe ^>= 1.1,+ dataframe, text >= 2.0 && < 3, aeson >= 0.11 && < 3, bytestring >= 0.11 && < 0.13, containers >= 0.6.7 && < 0.9, vector ^>= 0.13- c-sources: cbits/rts_init.c include-dirs: cbits- includes: arrow_abi.h dataframe_arrow.h- install-includes: arrow_abi.h dataframe_arrow.h- ghc-options: -threaded default-language: Haskell2010 executable dataframe-benchmark-example import: warnings main-is: Benchmark.hs build-depends: base >= 4 && < 5,- dataframe ^>= 1.1,+ dataframe >= 1 && < 2, random >= 1 && < 2, time >= 1.12 && < 2, vector ^>= 0.13,@@ -184,7 +181,7 @@ import: warnings main-is: Synthesis.hs build-depends: base >= 4 && < 5,- dataframe ^>= 1.1,+ dataframe >= 1 && < 2, random >= 1 && < 2, text >= 2.0 && < 3 hs-source-dirs: app@@ -211,7 +208,7 @@ build-depends: base >= 4 && < 5, bytestring >= 0.11 && < 0.13, containers >= 0.6.7 && < 0.9,- dataframe ^>= 1.1,+ dataframe >= 1 && < 2, directory >= 1.3.0.0 && < 2, random >= 1 && < 2, text >= 2.0 && < 3,@@ -228,7 +225,7 @@ build-depends: base >= 4 && < 5, criterion >= 1 && < 2, process >= 1.6 && < 2,- dataframe ^>= 1.1,+ dataframe >= 1 && < 2, random >= 1 && < 2, default-language: Haskell2010 ghc-options:@@ -274,7 +271,8 @@ Monad build-depends: base >= 4 && < 5, bytestring >= 0.11 && < 0.13,- dataframe ^>= 1.1,+ dataframe >= 1 && < 2,+ directory >= 1.3 && < 2, HUnit ^>= 1.6, QuickCheck >= 2 && < 3, random-shuffle >= 0.0.4 && < 1,
− ffi/DataFrame/FFI.hs
@@ -1,49 +0,0 @@-{-# LANGUAGE ForeignFunctionInterface #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeApplications #-}---- | C-exported entry points for the Python bindings.-module DataFrame.FFI where--import Control.Exception (SomeException, try)-import Data.Word (Word64)-import Foreign (Ptr, castPtr, poke, ptrToWordPtr)-import Foreign.C.String (CString)-import Foreign.C.Types (CInt (..))-import System.IO (hPrint, hPutStrLn, stderr)--import qualified Data.Aeson as Aeson-import qualified Data.ByteString as BS-import qualified Data.ByteString.Lazy as BL--import DataFrame.IO.Arrow (dataframeToArrow)-import DataFrame.IR (executePlan)--foreign export ccall "dfExecutePlan"- dfExecutePlan :: CString -> Ptr Word64 -> Ptr Word64 -> IO CInt--{- | Execute a JSON-encoded query plan and return Arrow C Data Interface- pointers to Python via output parameters.-- @planCS@ – JSON plan string (see DataFrame.IR for schema)- @schemaOut@ – receives the ArrowSchema* address as a Word64- @arrayOut@ – receives the ArrowArray* address as a Word64-- Returns 0 on success, -1 on error (error message written to stderr).--}-dfExecutePlan :: CString -> Ptr Word64 -> Ptr Word64 -> IO CInt-dfExecutePlan planCS schemaOut arrayOut = do- planBytes <- BS.packCString planCS- result <- try @SomeException $ do- node <-- either- fail- return- (Aeson.eitherDecode (BL.fromStrict planBytes))- df <- executePlan node- (sPtr, aPtr) <- dataframeToArrow df- poke schemaOut (fromIntegral (ptrToWordPtr (castPtr sPtr)))- poke arrayOut (fromIntegral (ptrToWordPtr (castPtr aPtr)))- case result of- Left ex -> hPrint stderr ex >> return (CInt (-1))- Right _ -> return (CInt 0)
ffi/DataFrame/IO/Arrow.hs view
@@ -11,7 +11,6 @@ dataframeToArrow, columnToArrow, arrowToDataframe,- -- exported only to force linking of release-callback symbols releaseSchemaImpl, releaseArrayImpl, ) where@@ -24,13 +23,9 @@ import qualified Data.Vector.Unboxed as VU import qualified DataFrame.Internal.Column as DI -import Control.Monad (foldM_, forM, join, void, when, zipWithM_)-import Data.Bits (popCount, setBit, testBit)-import Data.Int (Int32, Int64)-import Data.Maybe (fromMaybe, isNothing)+import Control.Monad (foldM_, forM, join, when, zipWithM_) import Data.Type.Equality (TestEquality (testEquality), type (:~:) (Refl))-import Data.Word (Word8)-import Foreign hiding (void)+import Foreign import Foreign.C.String (CString, newCString, peekCString) import Type.Reflection (typeRep) @@ -225,7 +220,7 @@ sPtr <- makeLeafSchema "g" colName aPtr <- makeLeafArray n 0 [nullPtr, castPtr dataPtr] (free dataPtr) return (sPtr, aPtr)-columnToArrow colName (BoxedColumn _ (vec :: V.Vector a))+columnToArrow colName (BoxedColumn Nothing (vec :: V.Vector a)) | Just Refl <- testEquality (typeRep @a) (typeRep @T.Text) = do let n = V.length vec bss = map TE.encodeUtf8 (V.toList vec)@@ -253,7 +248,7 @@ [nullPtr, castPtr offPtr, castPtr charsPtr] (free offPtr >> free charsPtr) return (sPtr, aPtr)-columnToArrow colName (BoxedColumn _ (vec :: V.Vector a))+columnToArrow colName (BoxedColumn Nothing (vec :: V.Vector a)) | Just Refl <- testEquality (typeRep @a) (typeRep @Double) = do let n = V.length vec dataPtr <- mallocArray (max 1 n) :: IO (Ptr Double)@@ -261,7 +256,7 @@ sPtr <- makeLeafSchema "g" colName aPtr <- makeLeafArray n 0 [nullPtr, castPtr dataPtr] (free dataPtr) return (sPtr, aPtr)-columnToArrow colName (BoxedColumn _ (vec :: V.Vector a))+columnToArrow colName (BoxedColumn Nothing (vec :: V.Vector a)) | Just Refl <- testEquality (typeRep @a) (typeRep @Int) = do let n = V.length vec dataPtr <- mallocArray (max 1 n) :: IO (Ptr Int64)@@ -402,11 +397,6 @@ topArray `at` _arrayPrivateData $ castStablePtrToPtr cleanupA return (topSchema, topArray)---- | Test whether bit i is set in a validity bitmap.-bitmapIsSet :: Ptr Word8 -> Int -> IO Bool-bitmapIsSet bitmapPtr i =- testBit <$> peekElemOff bitmapPtr (i `div` 8) <*> pure (i `mod` 8) {- | Import an Arrow RecordBatch from raw C Data Interface pointers. Copies all data into GC-managed Haskell vectors, then calls the
ffi/DataFrame/IR.hs view
@@ -1,7 +1,9 @@+{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE ExplicitNamespaces #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} @@ -15,6 +17,7 @@ ) where import Data.Aeson (FromJSON (..), withObject, (.:))+import qualified Data.Aeson as Aeson import Data.Aeson.Types (Parser) import qualified Data.ByteString as BS import Data.Int (Int16, Int32, Int64, Int8)@@ -26,7 +29,7 @@ ) import qualified Data.Vector as V import qualified Data.Vector.Unboxed as VU-import Data.Word (Word, Word16, Word32, Word64, Word8)+import Data.Word (Word16, Word32, Word64, Word8) import Foreign (wordPtrToPtr) import Type.Reflection (SomeTypeRep (..), eqTypeRep, typeRep) @@ -34,17 +37,28 @@ import qualified DataFrame.Functions as Functions import DataFrame.IO.Arrow (arrowToDataframe) import DataFrame.IO.CSV (+ CsvReader, defaultReadOptions, readSeparated, readTsv,+ writeCsv, )+import DataFrame.IO.JSON (readJSON)+import qualified DataFrame.IO.Parquet as Parquet+import DataFrame.IR.ExprJson (SomeExpr (..), decodeExprAny, decodeExprAt) import DataFrame.Internal.Column (Column (..), Columnable) import DataFrame.Internal.DataFrame (DataFrame, unsafeGetColumn) import DataFrame.Internal.Expression (Expr (..), NamedExpr)-import DataFrame.Operations.Aggregation (aggregate, groupBy)+import DataFrame.Internal.Schema (Schema, makeSchema, schemaType)+import qualified DataFrame.Lazy as Lazy+import DataFrame.Operations.Aggregation (aggregate, distinct, groupBy)+import DataFrame.Operations.Core (insertVector, renameMany)+import DataFrame.Operations.Join (JoinType (..), join) import DataFrame.Operations.Permutation (SortOrder (..), sortBy)-import DataFrame.Operations.Subset (select)+import qualified DataFrame.Operations.Statistics as Stats+import DataFrame.Operations.Subset (exclude, filterWhere, range, select) import qualified DataFrame.Operations.Subset as Subset+import DataFrame.Operations.Transformations (derive) import DataFrame.Operators ((.=)) -- ---------------------------------------------------------------------------@@ -67,6 +81,33 @@ | GroupBy [T.Text] [AggSpec] PlanNode | Sort [T.Text] Bool PlanNode | Limit Int PlanNode+ | -- | predicate JSON, child plan+ Filter Aeson.Value PlanNode+ | -- | column name, expr JSON, child plan+ Derive T.Text Aeson.Value PlanNode+ | Exclude [T.Text] PlanNode+ | Rename [(T.Text, T.Text)] PlanNode+ | Distinct PlanNode+ | TakeLast Int PlanNode+ | Drop Int PlanNode+ | DropLast Int PlanNode+ | Range Int Int PlanNode+ | -- | joinType ("inner"|"left"|"right"|"outer"), shared key columns, left, right+ Join T.Text [T.Text] PlanNode PlanNode+ | Describe PlanNode+ | -- | first column, second column, child plan+ Correlation T.Text T.Text PlanNode+ | Frequencies T.Text PlanNode+ | ReadParquet FilePath+ | ReadJson FilePath+ | -- | path, separator (single character), child plan; runs as a terminal op+ WriteCsv FilePath PlanNode+ | {- | path, schema (column name → type-tag map). Reads via the lazy+ engine with predicate / projection pushdown; subsequent ops+ currently still run eagerly on the materialized result.+ -}+ ScanCsv FilePath [(T.Text, T.Text)]+ | ScanParquet FilePath [(T.Text, T.Text)] deriving (Show) -- ---------------------------------------------------------------------------@@ -91,29 +132,122 @@ "GroupBy" -> GroupBy <$> o .: "keys" <*> o .: "aggregations" <*> o .: "input" "Sort" -> Sort <$> o .: "cols" <*> o .: "ascending" <*> o .: "input" "Limit" -> Limit <$> o .: "n" <*> o .: "input"+ "Filter" -> Filter <$> o .: "predicate" <*> o .: "input"+ "Derive" -> Derive <$> o .: "name" <*> o .: "expr" <*> o .: "input"+ "Exclude" -> Exclude <$> o .: "cols" <*> o .: "input"+ "Rename" -> Rename <$> o .: "pairs" <*> o .: "input"+ "Distinct" -> Distinct <$> o .: "input"+ "TakeLast" -> TakeLast <$> o .: "n" <*> o .: "input"+ "Drop" -> Drop <$> o .: "n" <*> o .: "input"+ "DropLast" -> DropLast <$> o .: "n" <*> o .: "input"+ "Range" -> Range <$> o .: "start" <*> o .: "end" <*> o .: "input"+ "Join" ->+ Join+ <$> o .: "how"+ <*> o .: "on"+ <*> o .: "left"+ <*> o .: "right"+ "Describe" -> Describe <$> o .: "input"+ "Correlation" ->+ Correlation+ <$> o .: "first"+ <*> o .: "second"+ <*> o .: "input"+ "Frequencies" -> Frequencies <$> o .: "col" <*> o .: "input"+ "ReadParquet" -> ReadParquet <$> o .: "path"+ "ReadJson" -> ReadJson <$> o .: "path"+ "WriteCsv" -> WriteCsv <$> o .: "path" <*> o .: "input"+ "ScanCsv" -> ScanCsv <$> o .: "path" <*> o .: "schema"+ "ScanParquet" -> ScanParquet <$> o .: "path" <*> o .: "schema" _ -> fail $ "DataFrame.IR: unknown op: " ++ T.unpack op -executePlan :: PlanNode -> IO DataFrame-executePlan (ReadCsv path) =+executePlan :: CsvReader -> PlanNode -> IO DataFrame+executePlan _reader (ReadCsv path) = readSeparated defaultReadOptions path-executePlan (ReadTsv path) =+executePlan _reader (ReadTsv path) = readTsv path-executePlan (FromArrow schemaAddr arrayAddr) =+executePlan _reader (FromArrow schemaAddr arrayAddr) = arrowToDataframe (wordPtrToPtr (fromIntegral schemaAddr)) (wordPtrToPtr (fromIntegral arrayAddr))-executePlan (Select cols node) =- select cols <$> executePlan node-executePlan (GroupBy keys aggs node) = do- df <- executePlan node+executePlan reader (Select cols node) =+ select cols <$> executePlan reader node+executePlan reader (GroupBy keys aggs node) = do+ df <- executePlan reader node nes <- mapM (buildNamedExpr df) aggs return $ aggregate nes (groupBy keys df)-executePlan (Sort cols ascending node) = do- df <- executePlan node+executePlan reader (Sort cols ascending node) = do+ df <- executePlan reader node let orders = map (\c -> mkSortOrder ascending c (unsafeGetColumn c df)) cols return $ sortBy orders df-executePlan (Limit k node) =- Subset.take k <$> executePlan node+executePlan reader (Limit k node) =+ Subset.take k <$> executePlan reader node+executePlan reader (Filter predJson node) = do+ df <- executePlan reader node+ case decodeExprAt @Bool predJson of+ Right pred_ -> return $ filterWhere pred_ df+ Left err -> ioError $ userError $ "DataFrame.IR.Filter: " <> err+executePlan reader (Derive name exprJson node) = do+ df <- executePlan reader node+ case decodeExprAny exprJson of+ Right (SomeExpr _trep expr) -> return $ derive name expr df+ Left err -> ioError $ userError $ "DataFrame.IR.Derive: " <> err+executePlan reader (Exclude cols node) =+ exclude cols <$> executePlan reader node+executePlan reader (Rename pairs node) =+ renameMany pairs <$> executePlan reader node+executePlan reader (Distinct node) =+ distinct <$> executePlan reader node+executePlan reader (TakeLast n node) =+ Subset.takeLast n <$> executePlan reader node+executePlan reader (Drop n node) =+ Subset.drop n <$> executePlan reader node+executePlan reader (DropLast n node) =+ Subset.dropLast n <$> executePlan reader node+executePlan reader (Range start end node) =+ range (start, end) <$> executePlan reader node+executePlan reader (Join how on leftPlan rightPlan) = do+ left <- executePlan reader leftPlan+ right <- executePlan reader rightPlan+ jt <- case how of+ "inner" -> return INNER+ "left" -> return LEFT+ "right" -> return RIGHT+ "outer" -> return FULL_OUTER+ "full_outer" -> return FULL_OUTER+ other ->+ ioError . userError $+ "DataFrame.IR.Join: unknown join type " <> T.unpack other+ return $ join jt on left right+executePlan reader (Describe node) = Stats.summarize <$> executePlan reader node+executePlan reader (Correlation a b node) = do+ df <- executePlan reader node+ let r = Stats.correlation a b df+ valueCol = case r of+ Just d -> V.singleton d+ Nothing -> V.singleton (0 / 0 :: Double) -- NaN when correlation is undefined+ -- Return a single-row frame: { first, second, correlation }+ return $+ insertVector "first" (V.singleton a) $+ insertVector "second" (V.singleton b) $+ insertVector "correlation" valueCol mempty+executePlan reader (Frequencies colName node) = do+ df <- executePlan reader node+ runFrequencies colName df+executePlan _reader (ReadParquet path) = Parquet.readParquet path+executePlan _reader (ReadJson path) = readJSON path+executePlan reader (WriteCsv path node) = do+ df <- executePlan reader node+ writeCsv path df+ -- Return the same frame so callers that pipe through .collect() get the+ -- written data back too. Callers that don't care can discard.+ return df+executePlan reader (ScanCsv path schemaPairs) = do+ schema <- buildSchema schemaPairs+ Lazy.runDataFrame (Lazy.scanCsvWith reader schema (T.pack path))+executePlan _reader (ScanParquet path schemaPairs) = do+ schema <- buildSchema schemaPairs+ Lazy.runDataFrame (Lazy.scanParquet schema (T.pack path)) {- | Build a SortOrder from a column's runtime type. Uses type dispatch to recover Ord for known column types.@@ -155,11 +289,81 @@ "count" -> countExpr name colName (unsafeGetColumn colName df) "sum" -> sumExpr name colName (unsafeGetColumn colName df) "mean" -> meanExpr name colName (unsafeGetColumn colName df)+ "min" -> minMaxExpr Functions.minimum name colName (unsafeGetColumn colName df)+ "max" -> minMaxExpr Functions.maximum name colName (unsafeGetColumn colName df)+ "median" -> doubleStatExpr Functions.median name colName (unsafeGetColumn colName df)+ "variance" -> doubleStatExpr Functions.variance name colName (unsafeGetColumn colName df)+ "std" -> doubleStatExpr stdDevExpr name colName (unsafeGetColumn colName df) other -> ioError $ userError $ "DataFrame.IR: unknown aggregation '" ++ T.unpack other ++ "'" +-- | Variance → standard deviation; sqrt of the underlying variance Expr.+stdDevExpr :: (Columnable a, Real a, VU.Unbox a) => Expr a -> Expr Double+stdDevExpr e = sqrt (Functions.variance e)++-- | Build a 'Schema' from a list of (col, type-tag) pairs sent over the wire.+buildSchema :: [(T.Text, T.Text)] -> IO Schema+buildSchema pairs = do+ sch <- mapM resolve pairs+ return (makeSchema sch)+ where+ resolve (name, tag) = case tag of+ "int" -> return (name, schemaType @Int)+ "int8" -> return (name, schemaType @Int8)+ "int16" -> return (name, schemaType @Int16)+ "int32" -> return (name, schemaType @Int32)+ "int64" -> return (name, schemaType @Int64)+ "double" -> return (name, schemaType @Double)+ "float" -> return (name, schemaType @Float)+ "bool" -> return (name, schemaType @Bool)+ "text" -> return (name, schemaType @T.Text)+ "string" -> return (name, schemaType @String)+ other ->+ ioError . userError $+ "DataFrame.IR.buildSchema: unsupported schema type tag '"+ ++ T.unpack other+ ++ "' for column '"+ ++ T.unpack name+ ++ "'"++-- | Dispatch 'frequencies' on the column's runtime element type.+runFrequencies :: T.Text -> DataFrame -> IO DataFrame+runFrequencies colName df = dispatchType (columnTypeRep (unsafeGetColumn colName df))+ where+ columnTypeRep :: Column -> SomeTypeRep+ columnTypeRep (UnboxedColumn _ (_ :: VU.Vector a)) = SomeTypeRep (typeRep @a)+ columnTypeRep (BoxedColumn _ (_ :: V.Vector a)) = SomeTypeRep (typeRep @a)++ fr :: forall a. (Columnable a, Ord a) => IO DataFrame+ fr = return $ Stats.frequencies (Col @a colName) df++ dispatchType :: SomeTypeRep -> IO DataFrame+ dispatchType (SomeTypeRep tr)+ | Just HRefl <- eqTypeRep tr (typeRep @Int) = fr @Int+ | Just HRefl <- eqTypeRep tr (typeRep @Int8) = fr @Int8+ | Just HRefl <- eqTypeRep tr (typeRep @Int16) = fr @Int16+ | Just HRefl <- eqTypeRep tr (typeRep @Int32) = fr @Int32+ | Just HRefl <- eqTypeRep tr (typeRep @Int64) = fr @Int64+ | Just HRefl <- eqTypeRep tr (typeRep @Word) = fr @Word+ | Just HRefl <- eqTypeRep tr (typeRep @Word8) = fr @Word8+ | Just HRefl <- eqTypeRep tr (typeRep @Word16) = fr @Word16+ | Just HRefl <- eqTypeRep tr (typeRep @Word32) = fr @Word32+ | Just HRefl <- eqTypeRep tr (typeRep @Word64) = fr @Word64+ | Just HRefl <- eqTypeRep tr (typeRep @Integer) = fr @Integer+ | Just HRefl <- eqTypeRep tr (typeRep @Double) = fr @Double+ | Just HRefl <- eqTypeRep tr (typeRep @Float) = fr @Float+ | Just HRefl <- eqTypeRep tr (typeRep @Bool) = fr @Bool+ | Just HRefl <- eqTypeRep tr (typeRep @Char) = fr @Char+ | Just HRefl <- eqTypeRep tr (typeRep @T.Text) = fr @T.Text+ | Just HRefl <- eqTypeRep tr (typeRep @String) = fr @String+ | otherwise =+ ioError . userError $+ "DataFrame.IR.Frequencies: unsupported column type for '"+ ++ T.unpack colName+ ++ "'"+ countExpr :: T.Text -> T.Text -> Column -> IO NamedExpr countExpr name colName (UnboxedColumn Nothing (_ :: VU.Vector a)) = return $ name .= count (Col @a colName) countExpr name colName (UnboxedColumn (Just _) (_ :: VU.Vector a)) = return $ name .= count (Col @(Maybe a) colName)@@ -187,7 +391,7 @@ return $ name .= sumMaybe (Col @(Maybe Int) colName) | Just Refl <- testEquality (typeRep @a) (typeRep @Double) = return $ name .= sumMaybe (Col @(Maybe Double) colName)-sumExpr name colName _ =+sumExpr _ colName _ = ioError $ userError $ "DataFrame.IR: sum: unsupported column type for '" ++ T.unpack colName ++ "'"@@ -211,7 +415,59 @@ return $ name .= meanMaybe (Col @(Maybe Double) colName) | Just Refl <- testEquality (typeRep @a) (typeRep @Int) = return $ name .= meanMaybe (Col @(Maybe Int) colName)-meanExpr name colName _ =+meanExpr _ colName _ = ioError $ userError $ "DataFrame.IR: mean: unsupported column type for '" ++ T.unpack colName ++ "'"++-- | min / max — preserve column type, require Ord.+minMaxExpr ::+ (forall a. (Columnable a, Ord a) => Expr a -> Expr a) ->+ T.Text ->+ T.Text ->+ Column ->+ IO NamedExpr+minMaxExpr op name colName (UnboxedColumn Nothing (_ :: VU.Vector a))+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int) =+ return $ name .= op (Col @Int colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Double) =+ return $ name .= op (Col @Double colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Float) =+ return $ name .= op (Col @Float colName)+minMaxExpr op name colName (BoxedColumn Nothing (_ :: V.Vector a))+ | Just Refl <- testEquality (typeRep @a) (typeRep @T.Text) =+ return $ name .= op (Col @T.Text colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int) =+ return $ name .= op (Col @Int colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Double) =+ return $ name .= op (Col @Double colName)+minMaxExpr _ _ colName _ =+ ioError . userError $+ "DataFrame.IR: min/max: unsupported column type for '"+ ++ T.unpack colName+ ++ "'"++-- | median / variance / std — return Double, require Real + Unbox.+doubleStatExpr ::+ (forall a. (Columnable a, Real a, VU.Unbox a) => Expr a -> Expr Double) ->+ T.Text ->+ T.Text ->+ Column ->+ IO NamedExpr+doubleStatExpr op name colName (UnboxedColumn Nothing (_ :: VU.Vector a))+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int) =+ return $ name .= op (Col @Int colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Double) =+ return $ name .= op (Col @Double colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Float) =+ return $ name .= op (Col @Float colName)+doubleStatExpr op name colName (BoxedColumn Nothing (_ :: V.Vector a))+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int) =+ return $ name .= op (Col @Int colName)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Double) =+ return $ name .= op (Col @Double colName)+doubleStatExpr _ _ colName _ =+ ioError . userError $+ "DataFrame.IR: median/variance/std: unsupported column type for '"+ ++ T.unpack colName+ ++ "'"
+ ffi/DataFrame/IR/ExprJson.hs view
@@ -0,0 +1,701 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}++{- | JSON wire format for 'Expr' values.++ The Python bindings build expression trees as JSON; this module decodes them+ back into 'Expr' GADTs (typed) and encodes them in the reverse direction+ (used for shipping fitted decision trees back to Python).++ Encoded shape:++ > { "node": "col" , "out_type": "double", "name": "x" }+ > { "node": "lit" , "out_type": "int" , "value": 42 }+ > { "node": "unary" , "out_type": "double", "op": "toDouble"+ > , "arg_type": "int" , "arg": <expr> }+ > { "node": "binary", "out_type": "bool" , "op": "leq"+ > , "arg_type": "double", "lhs": <expr>, "rhs": <expr> }+ > { "node": "if" , "out_type": "text" , "cond": <expr>+ > , "then": <expr>, "else": <expr> }++ Operator names follow 'binaryName' / 'unaryName' from+ "DataFrame.Internal.Expression". Nullable variants ("nulladd", "nullor", …)+ are accepted on decode and treated as their non-null equivalents — Python+ data crosses the FFI boundary as non-null Arrow buffers, so this is lossless+ for the supported workflow.+-}+module DataFrame.IR.ExprJson (+ SomeExpr (..),+ encodeExpr,+ encodeExprToBytes,+ decodeExprAny,+ decodeExprAt,+ parseSomeExpr,+ typeTagOf,+ withTypeTag,+ withOrdTypeTag,+ withNumTypeTag,+ withFracTypeTag,+ withRealTypeTag,+) where++import Data.Aeson (object, (.:), (.=))+import qualified Data.Aeson as Aeson+import qualified Data.Aeson.Types as Aeson+import qualified Data.ByteString as BS+import qualified Data.ByteString.Lazy as BL+import Data.Int (Int16, Int32, Int64, Int8)+import Data.Proxy (Proxy (..))+import qualified Data.Text as T+import Data.Type.Equality (TestEquality (testEquality), type (:~:) (Refl))+import Data.Word (Word16, Word32, Word64, Word8)+import Type.Reflection (TypeRep, Typeable, typeRep)++import qualified DataFrame.Functions as F+import DataFrame.Internal.Column (Columnable)+import DataFrame.Internal.Expression (+ AggStrategy (..),+ BinaryOp (binaryName),+ Expr (..),+ UnaryOp (unaryName),+ )+import qualified DataFrame.Internal.Expression as F+import DataFrame.Operators (+ ifThenElse,+ (.&&.),+ (./=.),+ (.<.),+ (.<=.),+ (.==.),+ (.>.),+ (.>=.),+ (.||.),+ )++{- | Existential wrapper around a typed expression decoded from JSON.+TODO: mchavinda - Maybe consolidate with UExpr from the main package.+-}+data SomeExpr where+ SomeExpr :: (Columnable a) => TypeRep a -> Expr a -> SomeExpr++-- | Map a Haskell type to its wire-format tag string.+typeTagOf :: forall a. (Typeable a) => Maybe T.Text+typeTagOf+ | Just _ <- testEquality (typeRep @a) (typeRep @Int) = Just "int"+ | Just _ <- testEquality (typeRep @a) (typeRep @Int8) = Just "int8"+ | Just _ <- testEquality (typeRep @a) (typeRep @Int16) = Just "int16"+ | Just _ <- testEquality (typeRep @a) (typeRep @Int32) = Just "int32"+ | Just _ <- testEquality (typeRep @a) (typeRep @Int64) = Just "int64"+ | Just _ <- testEquality (typeRep @a) (typeRep @Word) = Just "word"+ | Just _ <- testEquality (typeRep @a) (typeRep @Word8) = Just "word8"+ | Just _ <- testEquality (typeRep @a) (typeRep @Word16) = Just "word16"+ | Just _ <- testEquality (typeRep @a) (typeRep @Word32) = Just "word32"+ | Just _ <- testEquality (typeRep @a) (typeRep @Word64) = Just "word64"+ | Just _ <- testEquality (typeRep @a) (typeRep @Integer) = Just "integer"+ | Just _ <- testEquality (typeRep @a) (typeRep @Double) = Just "double"+ | Just _ <- testEquality (typeRep @a) (typeRep @Float) = Just "float"+ | Just _ <- testEquality (typeRep @a) (typeRep @Bool) = Just "bool"+ | Just _ <- testEquality (typeRep @a) (typeRep @Char) = Just "char"+ | Just _ <- testEquality (typeRep @a) (typeRep @T.Text) = Just "text"+ | Just _ <- testEquality (typeRep @a) (typeRep @String) = Just "string"+ | otherwise = Nothing++-- | Dispatch on a type tag with a 'Columnable' continuation.+withTypeTag ::+ T.Text ->+ (forall a. (Columnable a) => Proxy a -> Aeson.Parser r) ->+ Aeson.Parser r+withTypeTag t k = case t of+ "int" -> k (Proxy @Int)+ "int8" -> k (Proxy @Int8)+ "int16" -> k (Proxy @Int16)+ "int32" -> k (Proxy @Int32)+ "int64" -> k (Proxy @Int64)+ "word" -> k (Proxy @Word)+ "word8" -> k (Proxy @Word8)+ "word16" -> k (Proxy @Word16)+ "word32" -> k (Proxy @Word32)+ "word64" -> k (Proxy @Word64)+ "integer" -> k (Proxy @Integer)+ "double" -> k (Proxy @Double)+ "float" -> k (Proxy @Float)+ "bool" -> k (Proxy @Bool)+ "char" -> k (Proxy @Char)+ "text" -> k (Proxy @T.Text)+ "string" -> k (Proxy @String)+ _ -> fail $ "DataFrame.IR.ExprJson: unknown type tag: " <> T.unpack t++-- | Subset that supports 'Ord' (for comparison ops).+withOrdTypeTag ::+ T.Text ->+ (forall a. (Columnable a, Ord a) => Proxy a -> Aeson.Parser r) ->+ Aeson.Parser r+withOrdTypeTag t k = case t of+ "int" -> k (Proxy @Int)+ "int8" -> k (Proxy @Int8)+ "int16" -> k (Proxy @Int16)+ "int32" -> k (Proxy @Int32)+ "int64" -> k (Proxy @Int64)+ "word" -> k (Proxy @Word)+ "word8" -> k (Proxy @Word8)+ "word16" -> k (Proxy @Word16)+ "word32" -> k (Proxy @Word32)+ "word64" -> k (Proxy @Word64)+ "integer" -> k (Proxy @Integer)+ "double" -> k (Proxy @Double)+ "float" -> k (Proxy @Float)+ "bool" -> k (Proxy @Bool)+ "char" -> k (Proxy @Char)+ "text" -> k (Proxy @T.Text)+ "string" -> k (Proxy @String)+ _ ->+ fail $ "DataFrame.IR.ExprJson: type does not support ordering: " <> T.unpack t++-- | Subset that supports 'Num' (arithmetic).+withNumTypeTag ::+ T.Text ->+ (forall a. (Columnable a, Num a) => Proxy a -> Aeson.Parser r) ->+ Aeson.Parser r+withNumTypeTag t k = case t of+ "int" -> k (Proxy @Int)+ "int8" -> k (Proxy @Int8)+ "int16" -> k (Proxy @Int16)+ "int32" -> k (Proxy @Int32)+ "int64" -> k (Proxy @Int64)+ "word" -> k (Proxy @Word)+ "word8" -> k (Proxy @Word8)+ "word16" -> k (Proxy @Word16)+ "word32" -> k (Proxy @Word32)+ "word64" -> k (Proxy @Word64)+ "integer" -> k (Proxy @Integer)+ "double" -> k (Proxy @Double)+ "float" -> k (Proxy @Float)+ _ ->+ fail $ "DataFrame.IR.ExprJson: type does not support arithmetic: " <> T.unpack t++-- | Subset that supports 'Fractional' (division).+withFracTypeTag ::+ T.Text ->+ (forall a. (Columnable a, Fractional a) => Proxy a -> Aeson.Parser r) ->+ Aeson.Parser r+withFracTypeTag t k = case t of+ "double" -> k (Proxy @Double)+ "float" -> k (Proxy @Float)+ _ ->+ fail $+ "DataFrame.IR.ExprJson: type does not support fractional division: "+ <> T.unpack t++-- | Subset that supports 'Real' (used by toDouble source types).+withRealTypeTag ::+ T.Text ->+ (forall a. (Columnable a, Real a) => Proxy a -> Aeson.Parser r) ->+ Aeson.Parser r+withRealTypeTag t k = case t of+ "int" -> k (Proxy @Int)+ "int8" -> k (Proxy @Int8)+ "int16" -> k (Proxy @Int16)+ "int32" -> k (Proxy @Int32)+ "int64" -> k (Proxy @Int64)+ "word" -> k (Proxy @Word)+ "word8" -> k (Proxy @Word8)+ "word16" -> k (Proxy @Word16)+ "word32" -> k (Proxy @Word32)+ "word64" -> k (Proxy @Word64)+ "integer" -> k (Proxy @Integer)+ "double" -> k (Proxy @Double)+ "float" -> k (Proxy @Float)+ _ ->+ fail $+ "DataFrame.IR.ExprJson: type does not support Real (toDouble source): "+ <> T.unpack t++-- | Subset that supports 'Floating'.+withFloatingTypeTag ::+ T.Text ->+ (forall a. (Columnable a, Floating a) => Proxy a -> Aeson.Parser r) ->+ Aeson.Parser r+withFloatingTypeTag t k = case t of+ "double" -> k (Proxy @Double)+ "float" -> k (Proxy @Float)+ _ ->+ fail $ "DataFrame.IR.ExprJson: type does not support Floating: " <> T.unpack t++{- | Encode an 'Expr' to a JSON value. Returns 'Left' on unsupported+constructors (Agg, Over, CastWith, CastExprWith) or unsupported operator+names (binaryUdf, unaryUdf, …).+-}+encodeExpr :: forall a. (Columnable a) => Expr a -> Either String Aeson.Value+encodeExpr expr = case expr of+ Col name -> do+ outTag <- requireTypeTag @a+ Right $+ object+ [ "node" .= ("col" :: T.Text)+ , "out_type" .= outTag+ , "name" .= name+ ]+ Lit v -> do+ outTag <- requireTypeTag @a+ litVal <- encodeLit @a v+ Right $+ object+ [ "node" .= ("lit" :: T.Text)+ , "out_type" .= outTag+ , "value" .= litVal+ ]+ Unary op (arg :: Expr b) -> do+ outTag <- requireTypeTag @a+ argTag <- requireTypeTag @b+ opTag <- recognizeUnary (unaryName op)+ argEnc <- encodeExpr arg+ Right $+ object+ [ "node" .= ("unary" :: T.Text)+ , "out_type" .= outTag+ , "op" .= opTag+ , "arg_type" .= argTag+ , "arg" .= argEnc+ ]+ Binary op (lhs :: Expr c) (rhs :: Expr b) -> do+ outTag <- requireTypeTag @a+ argTag <- requireTypeTag @c+ opTag <- recognizeBinary (binaryName op)+ lEnc <- encodeExpr lhs+ rEnc <- encodeExpr rhs+ Right $+ object+ [ "node" .= ("binary" :: T.Text)+ , "out_type" .= outTag+ , "op" .= opTag+ , "arg_type" .= argTag+ , "lhs" .= lEnc+ , "rhs" .= rEnc+ ]+ If cond th el -> do+ outTag <- requireTypeTag @a+ cEnc <- encodeExpr cond+ tEnc <- encodeExpr th+ eEnc <- encodeExpr el+ Right $+ object+ [ "node" .= ("if" :: T.Text)+ , "out_type" .= outTag+ , "cond" .= cEnc+ , "then" .= tEnc+ , "else" .= eEnc+ ]+ CastWith{} ->+ Left+ "DataFrame.IR.ExprJson.encodeExpr: CastWith is not supported in the wire format"+ CastExprWith{} ->+ Left+ "DataFrame.IR.ExprJson.encodeExpr: CastExprWith is not supported in the wire format"+ Agg (strat :: F.AggStrategy a b) (inner :: F.Expr b) -> do+ outTag <- requireTypeTag @a+ argTag <- requireTypeTag @b+ innerEnc <- encodeExpr inner+ Right $+ object+ [ "node" .= ("agg" :: T.Text)+ , "out_type" .= outTag+ , "agg" .= aggStrategyName strat+ , "arg_type" .= argTag+ , "arg" .= innerEnc+ ]+ Over names inner -> do+ outTag <- requireTypeTag @a+ innerEnc <- encodeExpr inner+ Right $+ object+ [ "node" .= ("over" :: T.Text)+ , "out_type" .= outTag+ , "partition_by" .= names+ , "arg" .= innerEnc+ ]+ where+ requireTypeTag :: forall x. (Typeable x) => Either String T.Text+ requireTypeTag = case typeTagOf @x of+ Just t -> Right t+ Nothing ->+ Left $+ "DataFrame.IR.ExprJson.encodeExpr: unsupported type: " <> show (typeRep @x)++-- | Wire-format name for an aggregation strategy.+aggStrategyName :: AggStrategy a b -> T.Text+aggStrategyName (CollectAgg n _) = n+aggStrategyName (FoldAgg n _ _) = n+aggStrategyName (MergeAgg n _ _ _ _) = n++-- | Encode an 'Expr' to a strict 'BS.ByteString' of JSON.+encodeExprToBytes ::+ forall a. (Columnable a) => Expr a -> Either String BS.ByteString+encodeExprToBytes e = BL.toStrict . Aeson.encode <$> encodeExpr e++encodeLit :: forall a. (Columnable a) => a -> Either String Aeson.Value+encodeLit v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int) =+ Right $ Aeson.toJSON (v :: Int)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int8) =+ Right $ Aeson.toJSON (v :: Int8)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int16) =+ Right $ Aeson.toJSON (v :: Int16)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int32) =+ Right $ Aeson.toJSON (v :: Int32)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int64) =+ Right $ Aeson.toJSON (v :: Int64)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word) =+ Right $ Aeson.toJSON (v :: Word)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word8) =+ Right $ Aeson.toJSON (v :: Word8)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word16) =+ Right $ Aeson.toJSON (v :: Word16)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word32) =+ Right $ Aeson.toJSON (v :: Word32)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word64) =+ Right $ Aeson.toJSON (v :: Word64)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Integer) =+ Right $ Aeson.toJSON (v :: Integer)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Double) =+ Right $ Aeson.toJSON (v :: Double)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Float) =+ Right $ Aeson.toJSON (v :: Float)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Bool) =+ Right $ Aeson.toJSON (v :: Bool)+ | Just Refl <- testEquality (typeRep @a) (typeRep @T.Text) =+ Right $ Aeson.toJSON (v :: T.Text)+ | Just Refl <- testEquality (typeRep @a) (typeRep @Char) =+ Right $ Aeson.toJSON [v :: Char]+ | Just Refl <- testEquality (typeRep @a) (typeRep @String) =+ Right $ Aeson.toJSON (v :: String)+ | otherwise =+ Left $+ "DataFrame.IR.ExprJson.encodeLit: unsupported type: " <> show (typeRep @a)++-- | Map a 'binaryName' string to a wire-format op name. Errors on opaque UDF names.+recognizeBinary :: T.Text -> Either String T.Text+recognizeBinary n = case n of+ "add" -> Right "add"+ "sub" -> Right "sub"+ "mult" -> Right "mult"+ "divide" -> Right "divide"+ "eq" -> Right "eq"+ "neq" -> Right "neq"+ "lt" -> Right "lt"+ "leq" -> Right "leq"+ "gt" -> Right "gt"+ "geq" -> Right "geq"+ "and" -> Right "and"+ "or" -> Right "or"+ -- Nullable-aware aliases (lossless on non-null inputs)+ "nulladd" -> Right "add"+ "nullsub" -> Right "sub"+ "nullmul" -> Right "mult"+ "nulldiv" -> Right "divide"+ "nulland" -> Right "and"+ "nullor" -> Right "or"+ "exponentiate" -> Right "exponentiate"+ "logBase" -> Right "logBase"+ "div" -> Right "div"+ "mod" -> Right "mod"+ "pow" -> Right "pow"+ other ->+ Left $+ "DataFrame.IR.ExprJson: unsupported binary op (cannot serialize): "+ <> T.unpack other++-- | Map a 'unaryName' string to a wire-format op name. Errors on opaque UDF names.+recognizeUnary :: T.Text -> Either String T.Text+recognizeUnary n = case n of+ "not" -> Right "not"+ "negate" -> Right "negate"+ "abs" -> Right "abs"+ "signum" -> Right "signum"+ "exp" -> Right "exp"+ "sqrt" -> Right "sqrt"+ "log" -> Right "log"+ "sin" -> Right "sin"+ "cos" -> Right "cos"+ "tan" -> Right "tan"+ "asin" -> Right "asin"+ "acos" -> Right "acos"+ "atan" -> Right "atan"+ "sinh" -> Right "sinh"+ "cosh" -> Right "cosh"+ "asinh" -> Right "asinh"+ "acosh" -> Right "acosh"+ "atanh" -> Right "atanh"+ "toDouble" -> Right "toDouble"+ other ->+ Left $+ "DataFrame.IR.ExprJson: unsupported unary op (cannot serialize): "+ <> T.unpack other++{- | Decode a JSON value into a 'SomeExpr'. The output type comes from the+@out_type@ field on the root node.+-}+decodeExprAny :: Aeson.Value -> Either String SomeExpr+decodeExprAny = Aeson.parseEither parseSomeExpr++-- | Decode a JSON value, asserting the result type matches @a@.+decodeExprAt ::+ forall a. (Columnable a) => Aeson.Value -> Either String (Expr a)+decodeExprAt v = do+ SomeExpr trep expr <- decodeExprAny v+ case testEquality trep (typeRep @a) of+ Just Refl -> Right expr+ Nothing ->+ Left $+ "DataFrame.IR.ExprJson.decodeExprAt: expected "+ <> show (typeRep @a)+ <> " but got "+ <> show trep++-- | The Aeson.Parser entry point — useful when composing with bigger parsers.+parseSomeExpr :: Aeson.Value -> Aeson.Parser SomeExpr+parseSomeExpr = Aeson.withObject "Expr" $ \o -> do+ node <- o .: "node" :: Aeson.Parser T.Text+ outType <- o .: "out_type" :: Aeson.Parser T.Text+ case node of+ "col" -> do+ name <- o .: "name" :: Aeson.Parser T.Text+ withTypeTag outType $ \(_ :: Proxy a) ->+ return $ SomeExpr (typeRep @a) (Col @a name)+ "lit" -> do+ rawVal <- o .: "value"+ withTypeTag outType $ \(_ :: Proxy a) -> do+ litVal <- decodeLit @a rawVal+ return $ SomeExpr (typeRep @a) (Lit @a litVal)+ "if" -> do+ rawCond <- o .: "cond"+ rawThen <- o .: "then"+ rawElse <- o .: "else"+ cond <- parseExprAt @Bool rawCond+ withTypeTag outType $ \(_ :: Proxy a) -> do+ thenE <- parseExprAt @a rawThen+ elseE <- parseExprAt @a rawElse+ return $ SomeExpr (typeRep @a) (ifThenElse cond thenE elseE)+ "unary" -> do+ op <- o .: "op" :: Aeson.Parser T.Text+ argType <- o .: "arg_type" :: Aeson.Parser T.Text+ rawArg <- o .: "arg"+ parseUnary op outType argType rawArg+ "binary" -> do+ op <- o .: "op" :: Aeson.Parser T.Text+ argType <- o .: "arg_type" :: Aeson.Parser T.Text+ rawLhs <- o .: "lhs"+ rawRhs <- o .: "rhs"+ parseBinary op outType argType rawLhs rawRhs+ other -> fail $ "DataFrame.IR.ExprJson: unknown node kind: " <> T.unpack other++parseExprAt :: forall a. (Columnable a) => Aeson.Value -> Aeson.Parser (Expr a)+parseExprAt v = do+ SomeExpr trep expr <- parseSomeExpr v+ case testEquality trep (typeRep @a) of+ Just Refl -> return expr+ Nothing ->+ fail $+ "DataFrame.IR.ExprJson: expected "+ <> show (typeRep @a)+ <> " but got "+ <> show trep++decodeLit :: forall a. (Columnable a) => Aeson.Value -> Aeson.Parser a+decodeLit v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int) = parseAs @Int v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int8) = parseAs @Int8 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int16) = parseAs @Int16 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int32) = parseAs @Int32 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Int64) = parseAs @Int64 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word) = parseAs @Word v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word8) = parseAs @Word8 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word16) = parseAs @Word16 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word32) = parseAs @Word32 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Word64) = parseAs @Word64 v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Integer) = parseAs @Integer v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Double) = parseAs @Double v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Float) = parseAs @Float v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Bool) = parseAs @Bool v+ | Just Refl <- testEquality (typeRep @a) (typeRep @T.Text) = parseAs @T.Text v+ | Just Refl <- testEquality (typeRep @a) (typeRep @Char) = parseChar v+ | Just Refl <- testEquality (typeRep @a) (typeRep @String) = parseAs @String v+ | otherwise =+ fail $+ "DataFrame.IR.ExprJson.decodeLit: unsupported type: " <> show (typeRep @a)++parseAs :: forall b. (Aeson.FromJSON b) => Aeson.Value -> Aeson.Parser b+parseAs = Aeson.parseJSON++parseChar :: Aeson.Value -> Aeson.Parser Char+parseChar v = do+ s <- Aeson.parseJSON v :: Aeson.Parser T.Text+ case T.unpack s of+ [c] -> return c+ _ ->+ fail $+ "DataFrame.IR.ExprJson: expected single-character string, got: " <> show s++requireTag :: T.Text -> T.Text -> Aeson.Parser ()+requireTag actual expected+ | actual == expected = return ()+ | otherwise =+ fail $+ "DataFrame.IR.ExprJson: type mismatch — expected "+ <> T.unpack expected+ <> " but got "+ <> T.unpack actual++requireSame :: T.Text -> T.Text -> Aeson.Parser ()+requireSame a b+ | a == b = return ()+ | otherwise =+ fail $+ "DataFrame.IR.ExprJson: type mismatch — "+ <> T.unpack a+ <> " vs "+ <> T.unpack b++parseUnary ::+ T.Text -> T.Text -> T.Text -> Aeson.Value -> Aeson.Parser SomeExpr+parseUnary op outType argType rawArg = case op of+ "not" -> do+ requireTag outType "bool"+ requireTag argType "bool"+ arg <- parseExprAt @Bool rawArg+ return $ SomeExpr (typeRep @Bool) (F.not arg)+ "negate" -> withNumTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ arg <- parseExprAt @a rawArg+ return $ SomeExpr (typeRep @a) (negate arg)+ "abs" -> withNumTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ arg <- parseExprAt @a rawArg+ return $ SomeExpr (typeRep @a) (abs arg)+ "signum" -> withNumTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ arg <- parseExprAt @a rawArg+ return $ SomeExpr (typeRep @a) (signum arg)+ "toDouble" -> do+ requireTag outType "double"+ withRealTypeTag argType $ \(_ :: Proxy a) -> do+ arg <- parseExprAt @a rawArg+ return $ SomeExpr (typeRep @Double) (F.toDouble arg)+ "exp" -> floatingUnary outType argType rawArg exp+ "sqrt" -> floatingUnary outType argType rawArg sqrt+ "log" -> floatingUnary outType argType rawArg log+ "sin" -> floatingUnary outType argType rawArg sin+ "cos" -> floatingUnary outType argType rawArg cos+ "tan" -> floatingUnary outType argType rawArg tan+ "asin" -> floatingUnary outType argType rawArg asin+ "acos" -> floatingUnary outType argType rawArg acos+ "atan" -> floatingUnary outType argType rawArg atan+ "sinh" -> floatingUnary outType argType rawArg sinh+ "cosh" -> floatingUnary outType argType rawArg cosh+ "asinh" -> floatingUnary outType argType rawArg asinh+ "acosh" -> floatingUnary outType argType rawArg acosh+ "atanh" -> floatingUnary outType argType rawArg atanh+ other -> fail $ "DataFrame.IR.ExprJson: unsupported unary op: " <> T.unpack other++floatingUnary ::+ T.Text ->+ T.Text ->+ Aeson.Value ->+ (forall x. (Columnable x, Floating x) => Expr x -> Expr x) ->+ Aeson.Parser SomeExpr+floatingUnary outType argType rawArg f = withFloatingTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ arg <- parseExprAt @a rawArg+ return $ SomeExpr (typeRep @a) (f arg)++parseBinary ::+ T.Text ->+ T.Text ->+ T.Text ->+ Aeson.Value ->+ Aeson.Value ->+ Aeson.Parser SomeExpr+parseBinary op outType argType rawLhs rawRhs = case op of+ "eq" -> do+ requireTag outType "bool"+ withTypeTag argType $ \(_ :: Proxy a) -> do+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @Bool) (l .==. r)+ "neq" -> do+ requireTag outType "bool"+ withTypeTag argType $ \(_ :: Proxy a) -> do+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @Bool) (l ./=. r)+ "lt" -> do+ requireTag outType "bool"+ withOrdTypeTag argType $ \(_ :: Proxy a) -> do+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @Bool) (l .<. r)+ "leq" -> do+ requireTag outType "bool"+ withOrdTypeTag argType $ \(_ :: Proxy a) -> do+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @Bool) (l .<=. r)+ "gt" -> do+ requireTag outType "bool"+ withOrdTypeTag argType $ \(_ :: Proxy a) -> do+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @Bool) (l .>. r)+ "geq" -> do+ requireTag outType "bool"+ withOrdTypeTag argType $ \(_ :: Proxy a) -> do+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @Bool) (l .>=. r)+ "and" -> do+ requireTag outType "bool"+ l <- parseExprAt @Bool rawLhs+ r <- parseExprAt @Bool rawRhs+ return $ SomeExpr (typeRep @Bool) (l .&&. r)+ "or" -> do+ requireTag outType "bool"+ l <- parseExprAt @Bool rawLhs+ r <- parseExprAt @Bool rawRhs+ return $ SomeExpr (typeRep @Bool) (l .||. r)+ "add" -> withNumTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @a) (l + r)+ "sub" -> withNumTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @a) (l - r)+ "mult" -> withNumTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @a) (l * r)+ "divide" -> withFracTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @a) (l / r)+ "exponentiate" -> withFloatingTypeTag outType $ \(_ :: Proxy a) -> do+ requireSame outType argType+ l <- parseExprAt @a rawLhs+ r <- parseExprAt @a rawRhs+ return $ SomeExpr (typeRep @a) (l ** r)+ "nulladd" -> parseBinary "add" outType argType rawLhs rawRhs+ "nullsub" -> parseBinary "sub" outType argType rawLhs rawRhs+ "nullmul" -> parseBinary "mult" outType argType rawLhs rawRhs+ "nulldiv" -> parseBinary "divide" outType argType rawLhs rawRhs+ "nulland" -> parseBinary "and" outType argType rawLhs rawRhs+ "nullor" -> parseBinary "or" outType argType rawLhs rawRhs+ other -> fail $ "DataFrame.IR.ExprJson: unsupported binary op: " <> T.unpack other
src/DataFrame/DecisionTree.hs view
@@ -12,7 +12,7 @@ import qualified DataFrame.Functions as F import DataFrame.Internal.Column import DataFrame.Internal.DataFrame (DataFrame (..), unsafeGetColumn)-import DataFrame.Internal.Expression (Expr (..), eSize, getColumns)+import DataFrame.Internal.Expression (Expr (..), eSize, eqExpr, getColumns) import DataFrame.Internal.Interpreter (interpret) import DataFrame.Internal.Statistics (percentileOrd') import DataFrame.Internal.Types@@ -23,9 +23,9 @@ import Control.Monad (guard) import Data.Function (on) #if MIN_VERSION_base(4,20,0)-import Data.List (maximumBy, minimumBy, nub, sort, sortBy)+import Data.List (maximumBy, minimumBy, nub, nubBy, sort, sortBy) #else-import Data.List (foldl', maximumBy, minimumBy, nub, sort, sortBy)+import Data.List (foldl', maximumBy, minimumBy, nub, nubBy, sort, sortBy) #endif import Data.Int (Int16, Int32, Int64, Int8) import qualified Data.Map.Strict as M@@ -149,7 +149,7 @@ data Tree a = Leaf !a | Branch !(Expr Bool) !(Tree a) !(Tree a)- deriving (Eq, Show)+ deriving (Show) treeDepth :: Tree a -> Int treeDepth (Leaf _) = 0@@ -171,7 +171,7 @@ fitDecisionTree cfg (Col target) df = let conds =- nub $+ nubBy eqExpr $ numericConditions cfg (exclude [target] df) ++ generateConditionsOld cfg (exclude [target] df) @@ -522,15 +522,15 @@ in Branch cond left' right' -pruneExpr :: forall a. (Columnable a, Eq a) => Expr a -> Expr a+pruneExpr :: forall a. (Columnable a) => Expr a -> Expr a pruneExpr (If cond trueBranch falseBranch) = let t = pruneExpr trueBranch f = pruneExpr falseBranch- in if t == f+ in if eqExpr t f then t else case (t, f) of- (If condInner tInner _, _) | cond == condInner -> If cond tInner f- (_, If condInner _ fInner) | cond == condInner -> If cond t fInner+ (If condInner tInner _, _) | eqExpr cond condInner -> If cond tInner f+ (_, If condInner _ fInner) | eqExpr cond condInner -> If cond t fInner _ -> If cond t f pruneExpr (Unary op e) = Unary op (pruneExpr e) pruneExpr (Binary op l r) = Binary op (pruneExpr l) (pruneExpr r)@@ -624,8 +624,8 @@ numExprCols (NMaybeDouble e) = getColumns e numExprEq :: NumExpr -> NumExpr -> Bool-numExprEq (NDouble e1) (NDouble e2) = e1 == e2-numExprEq (NMaybeDouble e1) (NMaybeDouble e2) = e1 == e2+numExprEq (NDouble e1) (NDouble e2) = eqExpr e1 e2+numExprEq (NMaybeDouble e1) (NMaybeDouble e2) = eqExpr e1 e2 numExprEq _ _ = False combineNumExprs :: NumExpr -> NumExpr -> [NumExpr]@@ -759,7 +759,7 @@ combinedExprs = do e1 <- prevExprs e2 <- baseExprs- guard (e1 /= e2)+ guard (Prelude.not (eqExpr e1 e2)) [F.and e1 e2, F.or e1 e2] generateConditionsOld :: TreeConfig -> DataFrame -> [Expr Bool]@@ -770,7 +770,7 @@ genConds colName = case unsafeGetColumn colName df of (BoxedColumn Nothing (column :: V.Vector a)) -> case withOrdFrom @a ords (map (Lit . (`percentileOrd'` column)) [1, 25, 75, 99]) of- Just ps -> map (F.lift2 (==) (Col @a colName)) ps+ Just ps -> map (\p -> Col @a colName .==. p) ps Nothing -> [] (BoxedColumn (Just _) (column :: V.Vector a)) -> case sFloating @a of STrue -> [] -- handled by numericCols / numericExprs@@ -780,7 +780,7 @@ case withOrdFrom @a ords (map (Lit . Just . (`percentileOrd'` column)) [1, 25, 75, 99]) of- Just ps -> map (F.lift2 (==) (Col @(Maybe a) colName)) ps+ Just ps -> map (\p -> Col @(Maybe a) colName .==. p) ps Nothing -> [] (UnboxedColumn _ (_ :: VU.Vector a)) -> [] @@ -803,7 +803,7 @@ ) -> case testEquality (typeRep @a) (typeRep @b) of Nothing -> []- Just Refl -> [F.lift2 (==) (Col @a l) (Col @a r)]+ Just Refl -> [Col @a l .==. Col @a r] (UnboxedColumn _ (_ :: VU.Vector a), UnboxedColumn _ (_ :: VU.Vector b)) -> [] ( BoxedColumn (Just _) (_ :: V.Vector a) , BoxedColumn (Just _) (_ :: V.Vector b)@@ -811,11 +811,11 @@ Nothing -> [] Just Refl -> case testEquality (typeRep @a) (typeRep @T.Text) of Nothing ->- case withOrdFrom @a ords [F.lift2 (<=) (Col @(Maybe a) l) (Col r)] of+ case withOrdFrom @a ords [Col @(Maybe a) l .<=. Col @(Maybe a) r] of Just leExprs ->- leExprs ++ [F.lift2 (==) (Col @(Maybe a) l) (Col r)]- Nothing -> [F.lift2 (==) (Col @(Maybe a) l) (Col r)]- Just Refl -> [F.lift2 (==) (Col @(Maybe a) l) (Col r)]+ leExprs ++ [Col @(Maybe a) l .==. Col @(Maybe a) r]+ Nothing -> [Col @(Maybe a) l .==. Col @(Maybe a) r]+ Just Refl -> [Col @(Maybe a) l .==. Col @(Maybe a) r] _ -> [] in concatMap genConds (columnNames df) ++ columnConds@@ -885,7 +885,7 @@ TreeConfig -> T.Text -> [Expr Bool] -> DataFrame -> Maybe (Expr Bool) findBestSplit = findBestGreedySplit @a -pruneTree :: forall a. (Columnable a, Eq a) => Expr a -> Expr a+pruneTree :: forall a. (Columnable a) => Expr a -> Expr a pruneTree = pruneExpr -- | A tree where each leaf stores a class-probability distribution.@@ -958,7 +958,7 @@ fitProbTree cfg (Col target) df = let conds =- nub $+ nubBy eqExpr $ numericConditions cfg (exclude [target] df) ++ generateConditionsOld cfg (exclude [target] df) initialTree = buildGreedyTree @a cfg (maxTreeDepth cfg) target conds df
src/DataFrame/IO/CSV.hs view
@@ -291,6 +291,28 @@ readCsv :: FilePath -> IO DataFrame readCsv = readSeparated defaultReadOptions +type CsvReader = Schema -> FilePath -> IO DataFrame++{- | Schema-driven attoparsec CSV reader. Coerces each column to the+type declared in 'Schema'; columns absent from the schema fall back to+the default inference path. Defined in terms of 'readSeparated' with+the 'TypeSpec' filled in.++@+import qualified DataFrame as D+df <- D.readCsvWithSchema schema "input.csv"+@+-}+readCsvWithSchema :: CsvReader+readCsvWithSchema schema =+ readSeparated+ defaultReadOptions+ { typeSpec =+ SpecifyTypes+ (M.toList (elements schema))+ (typeSpec defaultReadOptions)+ }+ {- | Read CSV file from path and load it into a dataframe. ==== __Example__
src/DataFrame/IO/Parquet.hs view
@@ -80,7 +80,7 @@ , safeColumns :: Bool -- ^ When True, every column is promoted to OptionalColumn after read, regardless of nullability in the schema. }- deriving (Eq, Show)+ deriving (Show) {- | Default Parquet read options.
src/DataFrame/Internal/Expression.hs view
@@ -287,33 +287,30 @@ exprKey (Agg (MergeAgg name _ _ _ _) e) = "5:" ++ T.unpack name ++ exprKey e exprKey (Over keys e) = "6:over:" ++ show keys ++ exprKey e -instance (Ord a, Columnable a) => Ord (Expr a) where- compare l r = compareExpr (normalize l) (normalize r)--instance (Eq a, Columnable a) => Eq (Expr a) where- (==) l r = eqNormalized (normalize l) (normalize r)- where- exprEq :: (Columnable b, Columnable c) => Expr b -> Expr c -> Bool- exprEq e1 e2 = case testEquality (typeOf e1) (typeOf e2) of- Just Refl -> e1 == e2- Nothing -> False- eqNormalized :: Expr a -> Expr a -> Bool- eqNormalized (Col n1) (Col n2) = n1 == n2- eqNormalized (CastWith n1 t1 _) (CastWith n2 t2 _) = n1 == n2 && t1 == t2- eqNormalized (CastExprWith t1 _ e1) (CastExprWith t2 _ e2) = t1 == t2 && e1 `exprEq` e2- eqNormalized (Lit v1) (Lit v2) = v1 == v2- eqNormalized (If c1 t1 e1) (If c2 t2 e2) =- c1 == c2 && t1 `exprEq` t2 && e1 `exprEq` e2- eqNormalized (Unary op1 e1) (Unary op2 e2) = unaryName op1 == unaryName op2 && e1 `exprEq` e2- eqNormalized (Binary op1 e1a e1b) (Binary op2 e2a e2b) = binaryName op1 == binaryName op2 && e1a `exprEq` e2a && e1b `exprEq` e2b- eqNormalized (Agg (CollectAgg n1 _) e1) (Agg (CollectAgg n2 _) e2) =- n1 == n2 && e1 `exprEq` e2- eqNormalized (Agg (FoldAgg n1 _ _) e1) (Agg (FoldAgg n2 _ _) e2) =- n1 == n2 && e1 `exprEq` e2- eqNormalized (Agg (MergeAgg n1 _ _ _ _) e1) (Agg (MergeAgg n2 _ _ _ _) e2) =- n1 == n2 && e1 `exprEq` e2- eqNormalized (Over k1 e1) (Over k2 e2) = k1 == k2 && e1 `exprEq` e2- eqNormalized _ _ = False+eqExpr :: forall a. (Columnable a) => Expr a -> Expr a -> Bool+eqExpr l r = eqNormalized (normalize l) (normalize r)+ where+ exprEq :: (Columnable b, Columnable c) => Expr b -> Expr c -> Bool+ exprEq e1 e2 = case testEquality (typeOf e1) (typeOf e2) of+ Just Refl -> eqExpr e1 e2+ Nothing -> False+ eqNormalized :: Expr a -> Expr a -> Bool+ eqNormalized (Col n1) (Col n2) = n1 == n2+ eqNormalized (CastWith n1 t1 _) (CastWith n2 t2 _) = n1 == n2 && t1 == t2+ eqNormalized (CastExprWith t1 _ e1) (CastExprWith t2 _ e2) = t1 == t2 && e1 `exprEq` e2+ eqNormalized (Lit v1) (Lit v2) = v1 == v2+ eqNormalized (If c1 t1 e1) (If c2 t2 e2) =+ eqExpr c1 c2 && t1 `exprEq` t2 && e1 `exprEq` e2+ eqNormalized (Unary op1 e1) (Unary op2 e2) = unaryName op1 == unaryName op2 && e1 `exprEq` e2+ eqNormalized (Binary op1 e1a e1b) (Binary op2 e2a e2b) = binaryName op1 == binaryName op2 && e1a `exprEq` e2a && e1b `exprEq` e2b+ eqNormalized (Agg (CollectAgg n1 _) e1) (Agg (CollectAgg n2 _) e2) =+ n1 == n2 && e1 `exprEq` e2+ eqNormalized (Agg (FoldAgg n1 _ _) e1) (Agg (FoldAgg n2 _ _) e2) =+ n1 == n2 && e1 `exprEq` e2+ eqNormalized (Agg (MergeAgg n1 _ _ _ _) e1) (Agg (MergeAgg n2 _ _ _ _) e2) =+ n1 == n2 && e1 `exprEq` e2+ eqNormalized (Over k1 e1) (Over k2 e2) = k1 == k2 && e1 `exprEq` e2+ eqNormalized _ _ = False replaceExpr :: forall a b c.@@ -321,7 +318,7 @@ Expr a -> Expr b -> Expr c -> Expr c replaceExpr new old expr = case testEquality (typeRep @b) (typeRep @c) of Just Refl -> case testEquality (typeRep @a) (typeRep @c) of- Just Refl -> if old == expr then new else replace'+ Just Refl -> if eqExpr old expr then new else replace' Nothing -> expr Nothing -> replace' where
src/DataFrame/Internal/Nullable.hs view
@@ -63,6 +63,7 @@ -- * Numeric widening NumericWidenOp (..), widenArithOp,+ widenCmpOp, WidenResult, -- * Division widening (integral × integral → Double)@@ -405,6 +406,16 @@ b -> Promote a b widenArithOp f x y = f (widen1 @a @b x) (widen2 @a @b y)++-- | Apply a comparison function after widening both operands to their common type.+widenCmpOp ::+ forall a b.+ (NumericWidenOp a b) =>+ (Promote a b -> Promote a b -> Bool) ->+ a ->+ b ->+ Bool+widenCmpOp f x y = f (widen1 @a @b x) (widen2 @a @b y) -- | Result type of a widening binary operator, accounting for nullable wrappers. type WidenResult a b = NullLift2Result a b (Promote (BaseType a) (BaseType b))
src/DataFrame/Lazy/Internal/DataFrame.hs view
@@ -8,15 +8,12 @@ module DataFrame.Lazy.Internal.DataFrame where import qualified Data.Text as T+import DataFrame.IO.CSV (CsvReader, readCsvWithSchema) import qualified DataFrame.Internal.Column as C import qualified DataFrame.Internal.DataFrame as D import qualified DataFrame.Internal.Expression as E import DataFrame.Internal.Schema (Schema)-import DataFrame.Lazy.Internal.Executor (- ExecutorConfig (..),- defaultExecutorConfig,- execute,- )+import DataFrame.Lazy.Internal.Executor (execute) import DataFrame.Lazy.Internal.LogicalPlan ( DataSource (..), LogicalPlan (..),@@ -46,11 +43,11 @@ {- | Execute the lazy query: optimise the logical plan, then stream-execute the resulting physical plan, returning a fully-materialised 'D.DataFrame'.+The CSV reader (default: attoparsec) is set per scan via 'scanCsv' /+'scanCsvWith'. -} runDataFrame :: LazyDataFrame -> IO D.DataFrame-runDataFrame ldf = do- let physPlan = Opt.optimize (batchSize ldf) (plan ldf)- execute physPlan defaultExecutorConfig{defaultBatchSize = batchSize ldf}+runDataFrame ldf = execute (Opt.optimize (batchSize ldf) (plan ldf)) -- --------------------------------------------------------------------------- -- Builders that construct the logical plan tree@@ -60,19 +57,32 @@ fromDataFrame :: D.DataFrame -> LazyDataFrame fromDataFrame df = LazyDataFrame{plan = SourceDF df, batchSize = 1_000_000} --- | Scan a CSV file with the default comma separator.+{- | Scan a CSV file with the default comma separator and the in-tree+attoparsec reader. For the SIMD reader use 'scanCsvWith'.+-} scanCsv :: Schema -> T.Text -> LazyDataFrame-scanCsv schema path =+scanCsv = scanCsvWith readCsvWithSchema++{- | Like 'scanCsv' but with an explicit CSV reader (e.g. the SIMD reader+@fastReadCsvWithSchema@ from @dataframe-fastcsv@).+-}+scanCsvWith :: CsvReader -> Schema -> T.Text -> LazyDataFrame+scanCsvWith reader schema path = LazyDataFrame- { plan = Scan (CsvSource (T.unpack path) ',') schema+ { plan = Scan (CsvSource (T.unpack path) ',' reader) schema , batchSize = 1_000_000 } --- | Scan a character-separated file.+-- | Scan a character-separated file with the default attoparsec reader. scanSeparated :: Char -> Schema -> T.Text -> LazyDataFrame-scanSeparated sep schema path =+scanSeparated = scanSeparatedWith readCsvWithSchema++-- | Like 'scanSeparated' but with an explicit CSV reader.+scanSeparatedWith ::+ CsvReader -> Char -> Schema -> T.Text -> LazyDataFrame+scanSeparatedWith reader sep schema path = LazyDataFrame- { plan = Scan (CsvSource (T.unpack path) sep) schema+ { plan = Scan (CsvSource (T.unpack path) sep reader) schema , batchSize = 1_000_000 }
src/DataFrame/Lazy/Internal/Executor.hs view
@@ -1,7 +1,6 @@ {-# LANGUAGE BangPatterns #-} {-# LANGUAGE ExplicitNamespaces #-} {-# LANGUAGE GADTs #-}-{-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TupleSections #-}@@ -16,32 +15,34 @@ expressions support it. -} module DataFrame.Lazy.Internal.Executor (- ExecutorConfig (..),- defaultExecutorConfig,+ CsvReader, execute, foldBatches, ) where -import Control.Concurrent (forkIO)+import Control.Concurrent (forkIO, getNumCapabilities)+import Control.Concurrent.Async (mapConcurrently) import Control.Concurrent.STM (atomically) import Control.Concurrent.STM.TBQueue (newTBQueueIO, readTBQueue, writeTBQueue) import Control.DeepSeq (force) import Control.Exception (evaluate)-import Control.Monad (filterM, when)+import Control.Monad (filterM, forM, forM_, when) import qualified Data.ByteString as BS import Data.IORef import qualified Data.Map as M+import qualified Data.Maybe import qualified Data.Set as S import qualified Data.Text as T import Data.Type.Equality (TestEquality (testEquality), type (:~:) (Refl)) import qualified Data.Vector.Unboxed as VU+import Data.Word (Word8)+import DataFrame.IO.CSV (CsvReader) import qualified DataFrame.IO.Parquet as Parquet import qualified DataFrame.Internal.Column as C import qualified DataFrame.Internal.DataFrame as D import qualified DataFrame.Internal.Expression as E import DataFrame.Internal.Schema (elements) import qualified DataFrame.Lazy.IO.Binary as Bin-import qualified DataFrame.Lazy.IO.CSV as LCSV import DataFrame.Lazy.Internal.LogicalPlan (DataSource (..), SortOrder (..)) import DataFrame.Lazy.Internal.PhysicalPlan import qualified DataFrame.Operations.Aggregation as Agg@@ -51,32 +52,13 @@ import qualified DataFrame.Operations.Permutation as Perm import qualified DataFrame.Operations.Subset as Sub import qualified DataFrame.Operations.Transformations as Trans-import System.Directory (doesDirectoryExist)+import System.Directory (doesDirectoryExist, removeFile) import System.FilePath ((</>)) import System.FilePath.Glob (glob)-import System.IO (hClose)+import System.IO.Temp (emptySystemTempFile) import Type.Reflection (typeRep) -- ------------------------------------------------------------------------------ Configuration--- -----------------------------------------------------------------------------data ExecutorConfig = ExecutorConfig- { memoryBudgetBytes :: !Int- -- ^ Per-node spill threshold (currently informational; not enforced yet).- , spillDirectory :: FilePath- , defaultBatchSize :: !Int- }--defaultExecutorConfig :: ExecutorConfig-defaultExecutorConfig =- ExecutorConfig- { memoryBudgetBytes = 512 * 1_048_576 -- 512 MiB- , spillDirectory = "/tmp"- , defaultBatchSize = 1_000_000- }---- --------------------------------------------------------------------------- -- Stream abstraction -- --------------------------------------------------------------------------- @@ -102,16 +84,16 @@ {- | Execute a physical plan, returning the complete result as a single 'DataFrame'. -}-execute :: PhysicalPlan -> ExecutorConfig -> IO D.DataFrame-execute plan cfg = buildStream plan cfg >>= collectStream+execute :: PhysicalPlan -> IO D.DataFrame+execute plan = buildStream plan >>= collectStream {- | Fold a function over every batch produced by a physical plan. The fold is strict in the accumulator; each batch is discarded after folding. -} foldBatches ::- (b -> D.DataFrame -> IO b) -> b -> PhysicalPlan -> ExecutorConfig -> IO b-foldBatches f seed plan cfg = do- stream <- buildStream plan cfg+ (b -> D.DataFrame -> IO b) -> b -> PhysicalPlan -> IO b+foldBatches f seed plan = do+ stream <- buildStream plan let loop !acc = do mb <- pullBatch stream case mb of@@ -125,14 +107,14 @@ -- Per-operator stream builders -- --------------------------------------------------------------------------- -buildStream :: PhysicalPlan -> ExecutorConfig -> IO Stream+buildStream :: PhysicalPlan -> IO Stream -- Scan ------------------------------------------------------------------------buildStream (PhysicalScan (CsvSource path sep) cfg) _ =- executeCsvScan path sep cfg-buildStream (PhysicalScan (ParquetSource path) cfg) _ =+buildStream (PhysicalScan (CsvSource path sep reader) cfg) =+ executeCsvScan path sep reader cfg+buildStream (PhysicalScan (ParquetSource path) cfg) = executeParquetScan path cfg-buildStream (PhysicalSpill child path) execCfg = do- df <- execute child execCfg+buildStream (PhysicalSpill child path) = do+ df <- execute child Bin.spillToDisk path df df' <- Bin.readSpilled path ref <- newIORef (Just df')@@ -143,32 +125,32 @@ return mb ) -- Filter ----------------------------------------------------------------------buildStream (PhysicalFilter p child) execCfg = do- childStream <- buildStream child execCfg+buildStream (PhysicalFilter p child) = do+ childStream <- buildStream child return . Stream $ ( do mb <- pullBatch childStream return $ fmap (Sub.filterWhere p) mb ) -- Project ---------------------------------------------------------------------buildStream (PhysicalProject cols child) execCfg = do- childStream <- buildStream child execCfg+buildStream (PhysicalProject cols child) = do+ childStream <- buildStream child return . Stream $ ( do mb <- pullBatch childStream return $ fmap (Sub.select cols) mb ) -- Derive ----------------------------------------------------------------------buildStream (PhysicalDerive name uexpr child) execCfg = do- childStream <- buildStream child execCfg+buildStream (PhysicalDerive name uexpr child) = do+ childStream <- buildStream child return . Stream $ ( do mb <- pullBatch childStream return $ fmap (Trans.deriveMany [(name, uexpr)]) mb ) -- Limit -----------------------------------------------------------------------buildStream (PhysicalLimit n child) execCfg = do- childStream <- buildStream child execCfg+buildStream (PhysicalLimit n child) = do+ childStream <- buildStream child countRef <- newIORef (0 :: Int) return . Stream $ ( do@@ -185,8 +167,8 @@ return $ Just (Sub.take toTake df) ) -- Sort (blocking) -------------------------------------------------------------buildStream (PhysicalSort cols child) execCfg = do- df <- execute child execCfg+buildStream (PhysicalSort cols child) = do+ df <- execute child let sortOrds = fmap toPermSortOrder cols let sorted = Perm.sortBy sortOrds df ref <- newIORef (Just sorted)@@ -197,34 +179,31 @@ return mb ) -- HashAggregate ---------------------------------------------------------------buildStream (PhysicalHashAggregate keys aggs child) execCfg = do- childStream <- buildStream child execCfg+buildStream (PhysicalHashAggregate keys aggs child) = do+ childStream <- buildStream child if all (isStreamableAgg . snd) aggs then do- -- Streaming partial aggregation: O(|groups|) memory+ -- Parallel streaming partial aggregation:+ -- * N workers, each pulls batches from the child stream and+ -- maintains its own local accumulator.+ -- * Once the stream is drained, the N partials are merged+ -- sequentially using the same merge expression.+ -- * O(|groups| × N) memory in flight, then O(|groups|). let (partialAggs, mergeAggs, finalizer) = buildAggPlan aggs- accRef <- newIORef (Nothing :: Maybe D.DataFrame)- let loop = do- mb <- pullBatch childStream- case mb of- Nothing -> return ()- Just batch -> do- -- Force to NF so the batch DataFrame can be GC'd immediately.- -- evaluate . force breaks the thunk chain that would otherwise- -- keep every batch (~60 MB each) alive until the end = OOM.- !partial <-- evaluate . force $ Agg.aggregate partialAggs (Agg.groupBy keys batch)- mAcc <- readIORef accRef- !newAcc <- case mAcc of- Nothing -> return partial- Just acc ->- evaluate . force $- Agg.aggregate mergeAggs $- Agg.groupBy keys (acc <> partial)- writeIORef accRef (Just newAcc)- loop- loop- mFinal <- fmap (fmap finalizer) (readIORef accRef)+ nCaps <- getNumCapabilities+ let workers = max 1 nCaps+ partials <-+ mapConcurrently+ (\_ -> workerLoop childStream keys partialAggs mergeAggs)+ [1 .. workers]+ mFinal <-+ let nonEmpty = Data.Maybe.catMaybes partials+ in case nonEmpty of+ [] -> return Nothing+ [single] -> return (Just (finalizer single))+ (a : rest) -> do+ !merged <- mergePartials keys mergeAggs a rest+ return (Just (finalizer merged)) ref <- newIORef mFinal return . Stream $ do mb <- readIORef ref@@ -240,9 +219,8 @@ writeIORef ref Nothing return mb -- SourceDF (split pre-loaded DataFrame into batches) --------------------------buildStream (PhysicalSourceDF df) execCfg = do- let bs = defaultBatchSize execCfg- total = Core.nRows df+buildStream (PhysicalSourceDF bs df) = do+ let total = Core.nRows df posRef <- newIORef (0 :: Int) return . Stream $ do i <- readIORef posRef@@ -254,14 +232,14 @@ writeIORef posRef (i + n) return (Just batch) -- HashJoin — streaming probe (INNER/LEFT) or blocking fallback -----------------buildStream (PhysicalHashJoin jt leftKey rightKey leftPlan rightPlan) execCfg =+buildStream (PhysicalHashJoin jt leftKey rightKey leftPlan rightPlan) = case jt of Join.INNER -> streamingHashJoin assembleInnerBatch Join.LEFT -> streamingHashJoin assembleLeftBatch _ -> do -- Blocking fallback for RIGHT / FULL_OUTER- leftDf <- execute leftPlan execCfg- rightDf <- execute rightPlan execCfg+ leftDf <- execute leftPlan+ rightDf <- execute rightPlan let result = performJoin jt leftKey rightKey leftDf rightDf ref <- newIORef (Just result) return . Stream $ do@@ -271,7 +249,7 @@ where streamingHashJoin assembleFn = do -- Materialise build (right) side once and build the compact index.- rightDf <- execute rightPlan execCfg+ rightDf <- execute rightPlan let rightDf' = if leftKey == rightKey then rightDf@@ -281,7 +259,7 @@ rightHashes = Join.buildHashColumn [joinKey] rightDf' ci = Join.buildCompactIndex rightHashes -- Stream probe (left) side batch by batch.- leftStream <- buildStream leftPlan execCfg+ leftStream <- buildStream leftPlan return . Stream $ do mBatch <- pullBatch leftStream case mBatch of@@ -307,9 +285,9 @@ assembleInnerBatch = Join.assembleInner -- SortMergeJoin (blocking on both sides) --------------------------------------buildStream (PhysicalSortMergeJoin jt leftKey rightKey leftPlan rightPlan) execCfg = do- leftDf <- execute leftPlan execCfg- rightDf <- execute rightPlan execCfg+buildStream (PhysicalSortMergeJoin jt leftKey rightKey leftPlan rightPlan) = do+ leftDf <- execute leftPlan+ rightDf <- execute rightPlan let result = performJoin jt leftKey rightKey leftDf rightDf ref <- newIORef (Just result) return . Stream $@@ -326,6 +304,51 @@ {- | True when an aggregate expression can be computed incrementally (i.e., partial results can be merged without materialising all rows). -}++{- | One worker's loop: pull batches off the shared child stream until+exhausted, building up a per-worker accumulator.+-}+workerLoop ::+ Stream ->+ [T.Text] ->+ [E.NamedExpr] ->+ [E.NamedExpr] ->+ IO (Maybe D.DataFrame)+workerLoop childStream keys partialAggs mergeAggs = loop Nothing+ where+ loop !acc = do+ mb <- pullBatch childStream+ case mb of+ Nothing -> return acc+ Just batch -> do+ !partial <-+ evaluate . force $+ Agg.aggregate partialAggs (Agg.groupBy keys batch)+ !next <- case acc of+ Nothing -> return (Just partial)+ Just a -> do+ !merged <-+ evaluate . force $+ Agg.aggregate mergeAggs (Agg.groupBy keys (a <> partial))+ return (Just merged)+ loop next++-- | Merge a head accumulator with the rest of the workers' partials.+mergePartials ::+ [T.Text] ->+ [E.NamedExpr] ->+ D.DataFrame ->+ [D.DataFrame] ->+ IO D.DataFrame+mergePartials keys mergeAggs = go+ where+ go !acc [] = return acc+ go !acc (p : ps) = do+ !merged <-+ evaluate . force $+ Agg.aggregate mergeAggs (Agg.groupBy keys (acc <> p))+ go merged ps+ isStreamableAgg :: E.UExpr -> Bool isStreamableAgg (E.UExpr (E.Agg (E.CollectAgg _ _) _)) = False isStreamableAgg (E.UExpr (E.Agg (E.FoldAgg _ Nothing (_ :: a -> b -> a)) _)) =@@ -523,26 +546,37 @@ -- CSV scan implementation -- --------------------------------------------------------------------------- -{- | CSV scan with pipeline parallelism: a dedicated reader thread fills a-bounded queue while the caller's thread applies pushdown predicates and-delivers batches to the rest of the pipeline. The queue depth of 8 keeps-at most eight raw batches in flight, bounding memory while hiding I/O latency.+{- | CSV scan, SIMD-parallel.++The file is read once into memory, split at newline boundaries into N+ByteString slices (N = RTS capabilities), and each slice is parsed in+parallel with the SIMD reader from "DataFrame.IO.CSV.Fast" via the+in-memory entry point — no temp-file roundtrip. The resulting per-chunk+DataFrames are sliced into batches and a dedicated thread feeds them+into a bounded queue. Pushdown predicates are applied per batch by the+consumer. -}-executeCsvScan :: FilePath -> Char -> ScanConfig -> IO Stream-executeCsvScan path sep cfg = do- (handle, colSpec) <- LCSV.openCsvStream sep (scanSchema cfg) path- -- Queue carries raw batches; Nothing is the end-of-stream sentinel.- -- Depth 2: each batch holds ~60 MB (1M Text + Double columns); 8 would be ~480 MB.- queue <- newTBQueueIO 2+executeCsvScan :: FilePath -> Char -> CsvReader -> ScanConfig -> IO Stream+executeCsvScan path _sep reader cfg = do+ nCaps <- getNumCapabilities+ chunkPaths <- splitCsvAtNewlines (max 1 nCaps) path++ -- Each chunk parses in parallel via the reader carried on the+ -- 'CsvSource' plan node. Parsing and queue-feeding stay disjoint to+ -- avoid 14 producers all hammering a shared TBQueue (STM contention+ -- dominates throughput).+ let schema = scanSchema cfg+ batchSz = scanBatchSize cfg+ chunkDfs <- mapConcurrently (reader schema) chunkPaths+ mapM_ removeFile chunkPaths++ -- Bounded queue with a single writer, N concurrent readers.+ queue <- newTBQueueIO (fromIntegral (max 4 (2 * nCaps))) _ <- forkIO $ do- let loop lo = do- result <- LCSV.readBatch sep colSpec (scanBatchSize cfg) lo handle- case result of- Nothing ->- hClose handle >> atomically (writeTBQueue queue Nothing)- Just (df, lo') ->- atomically (writeTBQueue queue (Just df)) >> loop lo'- loop BS.empty+ forM_ chunkDfs $ \df ->+ forM_ (sliceIntoBatches batchSz df) $ \b ->+ atomically (writeTBQueue queue (Just b))+ atomically (writeTBQueue queue Nothing) return . Stream $ ( do mb <- atomically (readTBQueue queue)@@ -555,6 +589,46 @@ Just p -> Sub.filterWhere p df in return (Just df') )++-- | Slice a 'DataFrame' into row-bounded batches of at most @n@ rows.+sliceIntoBatches :: Int -> D.DataFrame -> [D.DataFrame]+sliceIntoBatches n df =+ let total = Core.nRows df+ starts = [0, n .. total - 1]+ in [Sub.range (s, min (s + n) total) df | s <- starts]++{- | Split a CSV file at newline boundaries into @n@ temp files, each+carrying the original header followed by an aligned-at-newlines slice+of the body. Returns the temp file paths; the caller is responsible+for removing them after use. The path-based 'fastReadCsvWithSchema'+mmap's each file, so we get OS-paged reads instead of a single+monolithic 'BS.readFile' of the whole input.+-}+splitCsvAtNewlines :: Int -> FilePath -> IO [FilePath]+splitCsvAtNewlines n path = do+ bs <- BS.readFile path+ let (header, rest) = BS.break (== nl) bs+ body = BS.drop 1 rest+ bodyLen = BS.length body+ rawOffsets = [(bodyLen * i) `div` n | i <- [0 .. n]]+ snapped = 0 : map (snap body) (init (drop 1 rawOffsets)) ++ [bodyLen]+ ranges = zip snapped (drop 1 snapped)+ slices =+ [ BS.take (hi - lo) (BS.drop lo body)+ | (lo, hi) <- ranges+ , hi > lo+ ]+ forM slices $ \chunk -> do+ p <- emptySystemTempFile "lazy_csv_chunk_.csv"+ BS.writeFile p (header <> BS.singleton nl <> chunk)+ return p+ where+ nl :: Word8+ nl = 0x0A+ snap body off =+ case BS.elemIndex nl (BS.drop off body) of+ Just i -> off + i + 1+ Nothing -> BS.length body -- --------------------------------------------------------------------------- -- Join helper
src/DataFrame/Lazy/Internal/LogicalPlan.hs view
@@ -3,6 +3,7 @@ module DataFrame.Lazy.Internal.LogicalPlan where import qualified Data.Text as T+import DataFrame.IO.CSV (CsvReader) import qualified DataFrame.Internal.DataFrame as D import qualified DataFrame.Internal.Expression as E import DataFrame.Internal.Schema (Schema)@@ -10,10 +11,14 @@ -- | Data source for a scan node. data DataSource- = -- | path, separator- CsvSource FilePath Char+ = -- | path, separator, CSV reader (e.g. attoparsec or SIMD)+ CsvSource FilePath Char CsvReader | ParquetSource FilePath- deriving (Show)++instance Show DataSource where+ show (CsvSource path sep _) =+ "CsvSource " ++ show path ++ " " ++ show sep ++ " <reader>"+ show (ParquetSource path) = "ParquetSource " ++ show path -- | Sort direction used in Sort nodes and the public API. data SortOrder = Ascending | Descending
src/DataFrame/Lazy/Internal/Optimizer.hs view
@@ -171,13 +171,13 @@ -} toPhysical :: Int -> LogicalPlan -> PhysicalPlan -- Special case: Filter directly on a Scan → push into ScanConfig.-toPhysical batchSz (Filter p (Scan (CsvSource path sep) schema)) =+toPhysical batchSz (Filter p (Scan (CsvSource path sep reader) schema)) = PhysicalScan- (CsvSource path sep)+ (CsvSource path sep reader) (ScanConfig batchSz sep schema (Just p))-toPhysical batchSz (Scan (CsvSource path sep) schema) =+toPhysical batchSz (Scan (CsvSource path sep reader) schema) = PhysicalScan- (CsvSource path sep)+ (CsvSource path sep reader) (ScanConfig batchSz sep schema Nothing) toPhysical batchSz (Filter p (Scan (ParquetSource path) schema)) = PhysicalScan@@ -206,4 +206,4 @@ PhysicalSort cols (toPhysical batchSz child) toPhysical batchSz (Limit n child) = PhysicalLimit n (toPhysical batchSz child)-toPhysical _ (SourceDF df) = PhysicalSourceDF df+toPhysical batchSz (SourceDF df) = PhysicalSourceDF batchSz df
src/DataFrame/Lazy/Internal/PhysicalPlan.hs view
@@ -31,6 +31,6 @@ | PhysicalLimit Int PhysicalPlan | -- | Materialize child to a binary file on disk (used for build sides). PhysicalSpill PhysicalPlan FilePath- | -- | Emit an already-loaded DataFrame as a stream of batches.- PhysicalSourceDF D.DataFrame+ | -- | Emit an already-loaded DataFrame as a stream of batches of size @n@.+ PhysicalSourceDF Int D.DataFrame deriving (Show)
src/DataFrame/Operators.hs view
@@ -33,6 +33,7 @@ WidenResultDiv, divArithOp, widenArithOp,+ widenCmpOp, ) import DataFrame.Internal.Types (Promote, PromoteDiv) @@ -198,53 +199,76 @@ -- Nullable-aware comparison operators (three-valued logic: Nothing if either operand is Nothing) --- | Nullable-aware equality. Returns @Maybe Bool@ when either operand is nullable.+{- | Nullable-aware equality. Widens numeric operands to their common type,+so @Expr Double .== Expr Int@ typechecks. Returns @Maybe Bool@ when either+operand is nullable.+-} (.==) ::- (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Eq (Promote (BaseType a) (BaseType b))+ ) => Expr a -> Expr b -> Expr (NullCmpResult a b)-(.==) = lift2Decorated (nullCmpOp (==)) "eq" (Just ".==") True 4+(.==) = lift2Decorated (applyNull2 (widenCmpOp (==))) "eq" (Just ".==") True 4 --- | Nullable-aware inequality.+-- | Nullable-aware inequality. Widens numeric operands to their common type. (./=) ::- (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Eq (Promote (BaseType a) (BaseType b))+ ) => Expr a -> Expr b -> Expr (NullCmpResult a b)-(./=) = lift2Decorated (nullCmpOp (/=)) "neq" (Just "./=") True 4+(./=) = lift2Decorated (applyNull2 (widenCmpOp (/=))) "neq" (Just "./=") True 4 --- | Nullable-aware less-than.+-- | Nullable-aware less-than. Widens numeric operands to their common type. (.<) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => Expr a -> Expr b -> Expr (NullCmpResult a b)-(.<) = lift2Decorated (nullCmpOp (<)) "lt" (Just ".<") False 4+(.<) = lift2Decorated (applyNull2 (widenCmpOp (<))) "lt" (Just ".<") False 4 --- | Nullable-aware greater-than.+-- | Nullable-aware greater-than. Widens numeric operands to their common type. (.>) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => Expr a -> Expr b -> Expr (NullCmpResult a b)-(.>) = lift2Decorated (nullCmpOp (>)) "gt" (Just ".>") False 4+(.>) = lift2Decorated (applyNull2 (widenCmpOp (>))) "gt" (Just ".>") False 4 --- | Nullable-aware less-than-or-equal.+{- | Nullable-aware less-than-or-equal. Widens numeric operands to their+common type, so @Expr Double .<= Expr Int@ typechecks.+-} (.<=) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => Expr a -> Expr b -> Expr (NullCmpResult a b)-(.<=) = lift2Decorated (nullCmpOp (<=)) "leq" (Just ".<=") False 4+(.<=) = lift2Decorated (applyNull2 (widenCmpOp (<=))) "leq" (Just ".<=") False 4 --- | Nullable-aware greater-than-or-equal.+-- | Nullable-aware greater-than-or-equal. Widens numeric operands to their common type. (.>=) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => Expr a -> Expr b -> Expr (NullCmpResult a b)-(.>=) = lift2Decorated (nullCmpOp (>=)) "geq" (Just ".>=") False 4+(.>=) = lift2Decorated (applyNull2 (widenCmpOp (>=))) "geq" (Just ".>=") False 4 (.&&.) :: Expr Bool -> Expr Bool -> Expr Bool (.&&.) = lift2Decorated (&&) "and" (Just ".&&.") True 3
src/DataFrame/Synthesis.hs view
@@ -20,6 +20,7 @@ import DataFrame.Internal.Expression ( Expr (..), eSize,+ eqExpr, ) import DataFrame.Internal.Interpreter (interpret) import DataFrame.Internal.Statistics@@ -48,7 +49,7 @@ [ p .<= q | p <- filter (not . isLiteral) ps , q <- ps- , p /= q+ , Prelude.not (eqExpr p q) ] ++ [ F.not p | p <- conds@@ -56,8 +57,8 @@ expandedConds = conds ++ newConds- ++ [p .&& q | p <- newConds, q <- conds, p /= q]- ++ [p .|| q | p <- newConds, q <- conds, p /= q]+ ++ [p .&& q | p <- newConds, q <- conds, Prelude.not (eqExpr p q)]+ ++ [p .|| q | p <- newConds, q <- conds, Prelude.not (eqExpr p q)] in pickTopNBool df labels (deduplicate df expandedConds) @@ -114,7 +115,7 @@ , (j, q) <- zip [(0 :: Int) ..] existingPrograms , Prelude.not (isLiteral p && isLiteral q) , Prelude.not (isConditional p || isConditional q)- , p /= q+ , Prelude.not (eqExpr p q) , i > j ] ++ [ F.max p q@@ -122,7 +123,7 @@ , (j, q) <- zip [(0 :: Int) ..] existingPrograms , Prelude.not (isLiteral p && isLiteral q) , Prelude.not (isConditional p || isConditional q)- , p /= q+ , Prelude.not (eqExpr p q) , i > j ] ++ [ F.ifThenElse cond r s@@ -130,7 +131,7 @@ , r <- existingPrograms , s <- existingPrograms , Prelude.not (isConditional r || isConditional s)- , r /= s+ , Prelude.not (eqExpr r s) ] else [] )@@ -146,7 +147,7 @@ , q <- existingPrograms , Prelude.not (isLiteral p && isLiteral q) , Prelude.not (isConditional p || isConditional q)- , p /= q+ , Prelude.not (eqExpr p q) ] isLiteral :: Expr a -> Bool@@ -163,7 +164,7 @@ DataFrame -> [Expr a] -> [(Expr a, TypedColumn a)]-deduplicate df = go [] . L.nub . L.sortBy (\e1 e2 -> compare (eSize e1) (eSize e2))+deduplicate df = go [] . L.nubBy eqExpr . L.sortBy (\e1 e2 -> compare (eSize e1) (eSize e2)) where go _ [] = [] go seen (x : xs)
src/DataFrame/Typed/Expr.hs view
@@ -156,6 +156,7 @@ WidenResultDiv, divArithOp, widenArithOp,+ widenCmpOp, ) import DataFrame.Internal.Types (Promote, PromoteDiv) @@ -471,59 +472,86 @@ -- Nullable-aware comparison operators (three-valued logic) ------------------------------------------------------------------------------- --- | Nullable-aware equality. Returns @Maybe Bool@ when either operand is nullable.+{- | Nullable-aware equality. Widens numeric operands to their common type,+so @TExpr cols Double .== TExpr cols Int@ typechecks. Returns @Maybe Bool@+when either operand is nullable.+-} (.==) ::- (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Eq (Promote (BaseType a) (BaseType b))+ ) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b) (.==) (TExpr a) (TExpr b) =- TExpr (Binary (MkBinaryOp (nullCmpOp (==)) "eq" (Just "==") True 4) a b)+ TExpr+ (Binary (MkBinaryOp (applyNull2 (widenCmpOp (==))) "eq" (Just "==") True 4) a b) --- | Nullable-aware inequality.+-- | Nullable-aware inequality. Widens numeric operands to their common type. (./=) ::- (NullableCmpOp a b (NullCmpResult a b), Eq (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Eq (Promote (BaseType a) (BaseType b))+ ) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b) (./=) (TExpr a) (TExpr b) =- TExpr (Binary (MkBinaryOp (nullCmpOp (/=)) "neq" (Just "/=") True 4) a b)+ TExpr+ (Binary (MkBinaryOp (applyNull2 (widenCmpOp (/=))) "neq" (Just "/=") True 4) a b) --- | Nullable-aware less-than.+-- | Nullable-aware less-than. Widens numeric operands to their common type. (.<) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b) (.<) (TExpr a) (TExpr b) =- TExpr (Binary (MkBinaryOp (nullCmpOp (<)) "lt" (Just "<") False 4) a b)+ TExpr+ (Binary (MkBinaryOp (applyNull2 (widenCmpOp (<))) "lt" (Just "<") False 4) a b) --- | Nullable-aware less-than-or-equal.+-- | Nullable-aware less-than-or-equal. Widens numeric operands to their common type. (.<=) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b) (.<=) (TExpr a) (TExpr b) =- TExpr (Binary (MkBinaryOp (nullCmpOp (<=)) "leq" (Just "<=") False 4) a b)+ TExpr+ (Binary (MkBinaryOp (applyNull2 (widenCmpOp (<=))) "leq" (Just "<=") False 4) a b) --- | Nullable-aware greater-than-or-equal.+-- | Nullable-aware greater-than-or-equal. Widens numeric operands to their common type. (.>=) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b) (.>=) (TExpr a) (TExpr b) =- TExpr (Binary (MkBinaryOp (nullCmpOp (>=)) "geq" (Just ">=") False 4) a b)+ TExpr+ (Binary (MkBinaryOp (applyNull2 (widenCmpOp (>=))) "geq" (Just ">=") False 4) a b) --- | Nullable-aware greater-than.+-- | Nullable-aware greater-than. Widens numeric operands to their common type. (.>) ::- (NullableCmpOp a b (NullCmpResult a b), Ord (BaseType a)) =>+ ( NumericWidenOp (BaseType a) (BaseType b)+ , NullLift2Op a b Bool (NullCmpResult a b)+ , Ord (Promote (BaseType a) (BaseType b))+ ) => TExpr cols a -> TExpr cols b -> TExpr cols (NullCmpResult a b) (.>) (TExpr a) (TExpr b) =- TExpr (Binary (MkBinaryOp (nullCmpOp (>)) "gt" (Just ">") False 4) a b)+ TExpr+ (Binary (MkBinaryOp (applyNull2 (widenCmpOp (>))) "gt" (Just ">") False 4) a b) not :: TExpr cols Bool -> TExpr cols Bool not (TExpr e) = TExpr (Unary (MkUnaryOp Prelude.not "not" (Just "!")) e)
tests/DecisionTree.hs view
@@ -9,7 +9,7 @@ import DataFrame.DecisionTree import qualified DataFrame.Functions as F import qualified DataFrame.Internal.Column as DI-import DataFrame.Internal.Expression (Expr (..))+import DataFrame.Internal.Expression (Expr (..), eqExpr) import DataFrame.Internal.Interpreter (interpret) import DataFrame.Operators @@ -634,8 +634,8 @@ probExprsLeaf = TestCase $ do let pt = Leaf (M.fromList [("A", 0.75), ("B", 0.25)]) :: ProbTree T.Text pe = probExprs pt- assertEqual "A expr is Lit 0.75" (Lit 0.75) (pe M.! "A")- assertEqual "B expr is Lit 0.25" (Lit 0.25) (pe M.! "B")+ assertBool "A expr is Lit 0.75" (eqExpr (Lit 0.75) (pe M.! "A"))+ assertBool "B expr is Lit 0.25" (eqExpr (Lit 0.25) (pe M.! "B")) -- probExprs: class absent from one leaf gets Lit 0.0 on that side probExprsMissingClass :: Test@@ -647,14 +647,12 @@ (Leaf (M.fromList [("B", 1.0)])) :: ProbTree T.Text pe = probExprs pt- assertEqual+ assertBool "A expr: If cond (Lit 1.0) (Lit 0.0)"- (F.ifThenElse splitCond (Lit 1.0) (Lit 0.0))- (pe M.! "A")- assertEqual+ (eqExpr (F.ifThenElse splitCond (Lit 1.0) (Lit 0.0)) (pe M.! "A"))+ assertBool "B expr: If cond (Lit 0.0) (Lit 1.0)"- (F.ifThenElse splitCond (Lit 0.0) (Lit 1.0))- (pe M.! "B")+ (eqExpr (F.ifThenElse splitCond (Lit 0.0) (Lit 1.0)) (pe M.! "B")) -- probExprs: keys equal all classes that appear across any leaf probExprsAllClasses :: Test
+ tests/data/unstable_csv/empty_file.csv view
+ tests/data/unstable_csv/utf8_bom.csv view
@@ -0,0 +1,3 @@+name,value+Alice,1+Bob,2