- 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++程序設計
- ReSharper Essentials
- 數據結構(Python語言描述)(第2版)
- Java深入解析:透析Java本質的36個話題
- Practical Game Design
- 零基礎入門學習Python(第2版)
- Java系統化項目開發教程
- Instant jQuery Boilerplate for Plugins
- OpenCV Android Programming By Example
- 數據分析與挖掘算法:Python實戰
- PostgreSQL 12 High Availability Cookbook
- C語言程序設計實驗指導與習題精解
- Analytics for the Internet of Things(IoT)
- Scratch 3.0少兒積木式編程(6~10歲)
- 中小企業網站建設與管理(靜態篇)