一,什麼是數據的離散化
連續屬性的離散化就是將連續屬性的值域上,將值域劃分爲若干個離散的區間,最後用不同的符號或整數 值代表落在每個子區間中的屬性值。
二,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"))