數據挖掘工具pandas(十)離散化處理

一,什麼是數據的離散化

連續屬性的離散化就是將連續屬性的值域上,將值域劃分爲若干個離散的區間,最後用不同的符號或整數 值代表落在每個子區間中的屬性值。

二,qcut()

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

# 構造數據
temp = pd.DataFrame(np.random.normal(0,100,(500,505)))
stock_list = ["股票"+ str(i) for i in range(temp.shape[0])]
date = ["第"+ str(i)+"天" for i in range(temp.shape[1])]
temp.index = stock_list
temp.columns = date

# 取出單列數據
p_change = temp["第1天"]

# 利用plt畫圖
# p_change.hist(bins=80)
# plt.show()

# 使用qcut自動分組;10爲共分成組的數量
a = pd.qcut(p_change,10)

# 返回值使用value_counts()得到 每組數據的區間;每組的個數(基本相等)
print(a.value_counts())

三,cut()

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

# 構造數據
temp = pd.DataFrame(np.random.normal(0,100,(500,505)))
stock_list = ["股票"+ str(i) for i in range(temp.shape[0])]
date = ["第"+ str(i)+"天" for i in range(temp.shape[1])]
temp.index = stock_list
temp.columns = date

# 取出單列數據
p_change = temp["第1天"]

# 利用plt畫圖
# p_change.hist(bins=80)
# plt.show()

# 使用cut自己進行分組,使用自己定義的組距進行分組
bins = [-500,-100,-7,-5,-3,0,3,5,7,100,500]
a = pd.cut(p_change,bins)
print(a)
print(a.value_counts())

四,變成啞變量矩陣

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt

# 構造數據
temp = pd.DataFrame(np.random.normal(0,100,(500,505)))
stock_list = ["股票"+ str(i) for i in range(temp.shape[0])]
date = ["第"+ str(i)+"天" for i in range(temp.shape[1])]
temp.index = stock_list
temp.columns = date

# 取出單列數據
p_change = temp["第1天"]

# 利用plt畫圖
# p_change.hist(bins=80)
# plt.show()

# 使用cut自己進行分組,使用自己定義的組距進行分組
bins = [-500,-100,-7,-5,-3,0,3,5,7,100,500]
a = pd.cut(p_change,bins)
print(a)
# prefix爲展示列名稱前的文字
print(pd.get_dummies(a,prefix="rise"))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章