变量的离散化——自然断点法

        在数据的离散化中有很多方法,如聚类分析、均值划分等等。自然断点法也是一种常用方法,在空间计量中可能都是现成的软体如Arcgis、geoda等点一下就出来了,但对于一般数据的划分应该怎么办呢?今天基于python的jenkspy库记录一下~

step1:自然断点

import pandas as pd
import jenkspy
import numpy as np

df = pd.read_excel('amos数据.xlsx')
ret={}
for col_name in df:
    col = df[col_name]
    breaks = jenkspy.jenks_breaks(col, nb_class=6) 
    ret[col_name] = breaks

out_df = pd.DataFrame(ret)

        输出结果就是分段点的临界值:

变量的离散化——自然断点法_第1张图片

 step2:编码

seg=[]
for i in range(26):#列数
    data=df.iloc[:,i]
    for j in data:
        if j<=out_df.iloc[:,i][0]:
            j=1
        elif j<=out_df.iloc[:,i][1]:
            j=2
        elif j<=out_df.iloc[:,i][2]:
            j=3
        elif j<=out_df.iloc[:,i][3]:
            j=4
        elif j<=out_df.iloc[:,i][4]:
            j=5
        elif j<=out_df.iloc[:,i][5]:
            j=6
        else:
            j=7
        seg.append(j)
matrix=[]
for j in range(0,len(seg),292):#从0开始,len(list)结束,步长为292,一组的数据量
    matrix.append(seg[j:j+292])#每次取292个作为行
result=np.array(matrix)
fin_result=pd.DataFrame(np.array(matrix).T)#转置

输出结果为:

变量的离散化——自然断点法_第2张图片

你可能感兴趣的:(python文本处理,python,多分类)