利用pandas對資料離散化

2021-08-26 05:36:04 字數 1960 閱讀 8330

在實際的工作場景中,我們經常會遇到這樣一種場景:想要將某些字段進行離散化即分桶,簡單來說就是講年齡分成幾個區間。pandas中的cut方法能很好地完成此操作。

#匯入相關庫,並建立資料集

import pandas as pd

import numpy as np

index = pd.index(data=["tom", "bob", "mary", "james"], name="name")

data =

user_info = pd.dataframe(data=data, index=index)

in [48]:user_info

out[48]:

age city ***

name

tom 15 hangzhou male

bob 28 shanghai female

mary 23 hefei female

james 37 luan male

#將user_info中的age分成三個年齡段

pd.cut(user_info.age,3)

out[51]:

name

tom (14.978, 22.333]

bob (22.333, 29.667]

mary (22.333, 29.667]

james (29.667, 37.0]

name: age, dtype: category

categories (3, interval[float64]): [(14.978, 22.333] < (22.333, 29.667] < (29.667, 37.0]]

從以上得到的結果可以看出,cut將年齡段進行了均等的切分。當然我們還可以進行自定義操作(此時可以對區間名稱起別名):

#自定義區間並進行分割

qujian=[5,15,25,40]

pd.cut(user_info.age,qujian)

out[55]:

name

tom (5, 15]

bob (25, 40]

mary (15, 25]

james (25, 40]

name: age, dtype: category

categories (3, interval[int64]): [(5, 15] < (15, 25] < (25, 40]]

#起別名

pd.cut(user_info.age,qujian,labels=['child','youth','middle'])

out[56]:

name

tom child

bob middle

mary youth

james middle

name: age, dtype: category

categories (3, object): [child < youth < middle]

如果現在想求出每個區間出現male和female出現的次數,該如何操作呢?可以結合groupby函式來進行操作,如下:

#首先對user_info進行切割

pdd=pd.cut(user_info['age'],qujian)

user_info['age'].groupby(pdd).count()

out[66]:

age(5, 15] 1

(15, 25] 1

(25, 40] 2

name: age, dtype: int64

從上可以看出,實現age區間出現次數的統計。

pandas 資料離散化

連續屬性離散化的目的是為了簡化資料結構,資料離散化技術可以用來減少給定連續屬性值的個數。離散化方法經常作為資料探勘的工具。連續屬性的離散化就是將連續屬性的值域上,將值域劃分為若干個離散的區間,最後用不同的符號或整數值代表落在每個子區間中的屬性值。離散化有很多種方法,這使用一種最簡單的方式去操作 這樣...

Pandas資料離散化原理及例項解析

為什麼要程式設計客棧離散化 什麼是資料的離散化 連續屬性的離散化就是在連續屬性的值域上,將值域劃分為若干個zprwgy離散的區間,最後用不同的符號或整數 值代表落在每個子區間中的屬性值 分箱案例 1.先讀取 的資料,篩選出p change資料 data pd.read csv data stock ...

Pandas資料離散化處理

資料離散化處理 import pandas as pd import matplotlib.pyplot as plt from pylab import mpl 設定顯示中文字型 mpl.rcparams font.sans serif simhei data pd.read csv data s...