Pandas詳解二十二之離散化(分組 區間化)

2021-09-12 06:33:09 字數 1647 閱讀 7555

約定

import pandas as pd

離散化通常對於我們不想要連續的數值,我們可將其離散化,離散化也可稱為分組、區間化。

pandas為我們提供了方便的函式cut():

pd.cut(x, bins, right=true, labels=none, retbins=false, precision=3, include_lowest=false) 

引數解釋:

x:需要離散化的陣列、series、dataframe物件

bins:分組的依據

right:傳入false則指定左邊為閉端

# 假設有一組人員的年齡

ages=[20,19,30,34,23,40,50]

se_ages=pd.series(ages)

1 離散化

bin=[0,18,25,35,60]

se1=pd.cut(se_ages,bin)

print(se1)

0    (18, 25]

1    (18, 25]

2    (25, 35]

3    (25, 35]

4    (18, 25]

5    (35, 60]

6    (35, 60]

dtype: category

categories (4, interval[int64]): [(0, 18] < (18, 25] < (25, 35] < (35, 60]]

2 對分組計數

pd.value_counts(se1)

1(18, 25]    3

(35, 60]    2

(25, 35]    2

(0, 18]     0

dtype: int64

3 指定左邊為閉端

pd.cut(se_ages,bin,right=false)

10    [18, 25)

1    [18, 25)

2    [25, 35)

3    [25, 35)

4    [18, 25)

5    [35, 60)

6    [35, 60)

dtype: category

categories (4, interval[int64]): [[0, 18) < [18, 25) < [25, 35) < [35, 60)]

4 為區間指定名稱

pd.cut(se_ages,bin,labels=['youth','youngadult','middleage','senior'])

10    youngadult

1    youngadult

2     middleage

3     middleage

4    youngadult

5        senior

6        senior

dtype: category

categories (4, object): [youth < youngadult < middleage < senior]

二十二 Swift5 0之 列舉

全系列導航 swift5.0 系列部落格索引 swift列舉 swift中的列舉比oc中的列舉強大,因為swift中的列舉是一等型別,它可以像類和結構體一樣增加屬性和方法 格式 enum method enum method 可以使用列舉型別變數或常量接收列舉值 var m method add 注...

設計模式之策略模式(二十二)

strategy 抽象策略類 所有策略類的父類,為所支援的策略演算法宣告了抽象方法。concretestrategy 具體策略類 實現了在抽象策略類中宣告的方法。context 環境類 負責使用演算法策略,其中維持了乙個抽象策略類的引用例項。strategy 抽象策略類 public abstrac...

設計模式之狀態模式IFORNOIF 二十二

今天大風大雨,但心情還行,繼續擼dota 狀態模式 state pattern 定義 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 這在我們開發的業務中太常見了,角色許可權的管理,給予不同的許可權,不同角色的操作就會發生改變 該類圖中包含三個角色 狀態模式解決的問題總結 狀...