- 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.
推薦閱讀
- C++面向對象程序設計(第三版)
- 數據科學實戰手冊(R+Python)
- Securing WebLogic Server 12c
- Unity 2D Game Development Cookbook
- AIRIOT物聯網平臺開發框架應用與實戰
- Natural Language Processing with Java and LingPipe Cookbook
- C語言程序設計簡明教程:Qt實戰
- JQuery風暴:完美用戶體驗
- 嵌入式Linux C語言程序設計基礎教程
- 超簡單:Photoshop+JavaScript+Python智能修圖與圖像自動化處理
- JavaEE架構與程序設計
- Spring Boot學習指南:構建云原生Java和Kotlin應用程序
- Java Web應用開發
- 匯編語言程序設計
- 自己動手做智能產品:嵌入式JavaScript實現