处理Haskell中的表格数据

时间:2016-12-06 14:28:53

标签: haskell data-analysis

这是包含一些表格数据的file.csv文件的摘录

John,23,Paris
Alban,28,London
Klaus,27,Berlin
Hans,29,Stockholm
Julian,25,Paris
Jonathan,26,Lyon
Albert,27,London

此文件的列标题为

firstName, age, city

此文件像{<1}}一样加载

ghci

现在,如果我想在这3列中添加> :m + Data.List Data.Function Data.List.Split > contents <- readFile "file.csv" > let t = map (splitOn ",") $ lines contents > mapM print $ take 3 t ["John","23","Paris"] ["Alban","28","London"] ["Klaus","27","Berlin"] [(),(),()] 列,我可以

birthYear

这很有效,但令我困扰的是> let getYear str = show $ 2016 - read str > let withYear = map (\(x:xs) -> x : xs ++ [getYear (head xs)]) t > mapM print $ take 3 withYear ["John","23","Paris","France","1993"] ["Alban","28","London","UK","1988"] ["Klaus","27","Berlin","Germany","1989"] [(),(),()] 函数的类型为getYear,因此,类型检查在这里几乎没用。

我可以轻松地将String -> String转换为像t这样的元组列表但是如果我没有3个但却有300个功能(在机器学习问题上并不常见)会怎么样?

  • 处理不同列类型的最佳方法是什么?使用元组?使用地图?
  • 如果列数很多,有没有办法让Haskell推断列的类型?例如,它会检测到上例中的第2列是("John", 23, "Paris"),其他列是字符串吗?
  • 关于列标题,是否可以通过标签而不是索引来访问列,以便Int可以像getYear(Python示例)?
  • 我已经习惯了Python的Pandas DataFrames,它可以自动执行所有这些操作,但是Haskell看起来本身可以执行大量的操作。但是不知道如何做到这一点。

0 个答案:

没有答案