- Haskell Data Analysis Cookbook
- Nishant Shukla
- 221字
- 2021-12-08 12:43:36
Implementing a frequency table using Data.List
A frequency map of values is often useful to detect outliers. We can use it to identify frequencies that seem out of the ordinary. In this recipe, we will be counting the number of different colors in a list.
How to do it...
Create a new file, which we will call Main.hs
, and perform the following steps:
- We will use the
group
andsort
functions fromData.List
:import Data.List (group, sort)
- Define a simple data type for colors:
data Color = Red | Green | Blue deriving (Show, Ord, Eq)
- Create a list of these colors:
main :: IO () main = do let items = [Red, Green, Green, Blue, Red, Green, Green]
- Implement the frequency map and print it out:
let freq = map (\x -> (head x, length x)) . group . sort $ items print freq
How it works...
Grouping identical items after sorting the list is the central idea.
See the following step-by-step evaluation in ghci:
Prelude> sort items [Red,Red,Green,Green,Green,Green,Blue] Prelude> group it [[Red,Red],[Green,Green,Green,Green],[Blue]] Prelude> map (\x -> (head x, length x)) it [(Red,2),(Green,4),(Blue,1)]
Tip
As we may expect, sorting the list is the most expensive step.
See also
A cleaner version of the code is possible by using Data.MultiSet
described in the next recipe, Implementing a frequency table using Data.MultiSet.
推薦閱讀
- 摩登創客:與智能手機和平板電腦共舞
- 劍指Offer(專項突破版):數據結構與算法名企面試題精講
- Microsoft Dynamics 365 Extensions Cookbook
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Java Web基礎與實例教程
- Python數據可視化之Matplotlib與Pyecharts實戰
- 深入淺出RxJS
- Java 11 Cookbook
- Learning Continuous Integration with TeamCity
- App Inventor創意趣味編程進階
- Extending Unity with Editor Scripting
- 軟件測試技術
- H5頁面設計與制作(全彩慕課版·第2版)
- jQuery EasyUI從零開始學
- 小學生C++編程課堂(新手篇)