categorical_data(类别型数据)预处理笔记:转化为数字

 

1、用Python转化为标准格式。

import pandas as pd
import numpy as np
from pandas import Series, DataFrame
from sklearn.preprocessing import LabelEncoder

#一般操作
#读文件:
#e:/cate_data/before/filename.txt
#1将文件读入成Dataframe数据。分隔符默认为"\t",读的时候文件中无列名(否则把第一行作为列名)。
data = pd.read_table('old_path',',',header = None)
#2类别型数据转化为数字表示。
num = data.shape[1]
for i in range(num):
    dimensional_name = data.columns[i]#第i个维度的列名。
    data[dimensional_name] = LabelEncoder().fit_transform(data[dimensional_name].values)#转化
#3将DataFrame数据写入文件。写的时候不要索引和标题。
data.to_csv('new_path',index=False,header=None)

#附加操作
data = data.drop(data.columns[1],axis = 1) #去掉第1(二)行。
length = len(data[data.columns[2]][0].split()[0])#字符串长度
data1 = DataFrame(columns=range(length))#初始化一个空的DataFrame。
for i in range(data[data.columns[1]].shape[0]):
    a = list(data[data.columns[1]][i].split())
    b = list(a[0])
    # 将字典输入给DataFrame构造器,各项会成为DataFrame的一行,字典健将成为DataFrame的列标
    dashabi = dict(zip(list(range(length)),b))
    dashabi1 = DataFrame(dashabi,index=[0])
    # 往DataFrame添加行的方式(gnore_index=True表示去掉原来的行标,重新开始编排)
    data1= data1.append(dashabi1,ignore_index=True)
    # pd.concat([data1, dashabi1, dashabi2, ...], ignore_index=True)(第二种)
data = data.drop(data.columns[1],axis = 1) #去掉第1(二)行。
data1 = pd.concat([data1,data],axis =1,ignore_index=True)#axis默认为0,列拼接。
data = data1

#额外操作
del data[0] #删除第0列,删除后列编号就没有0了。
data.columns = range(10) #给列重新编号。
data.dtypes  #查看每一列的数据类型。

输出:
0     int64
1     int64
2     int64
3     int64
4     int64
5    object #第五列含有异常值'?'。
6     int64
7     int64
8     int64
9     int64
dtype: object

#去除含有异常值的行
#1统计含有异常值的行。
j = []
for i in range(699):
    if(data[5][i] == '?'): #是字符。
        j.append(i)
#2删除行。
data = data.drop(j)
#3行重新编号。
data.index = range(len(data.index))
#4将类型转化为int64。
data[5] = pd.to_numeric(data[5])

#查看每一列的数据类型。
data.dtypes 
输出:
0     int64
1     int64
2     int64
3     int64
4     int64
5     int64 #转化完毕。
6     int64
7     int64
8     int64
9     int64
dtype: object

#mushroom(替换缺失值(异常值'?'))。
#1读入。
data = pd.read_table('e:/lxt/cate_data/before/mushroom.txt',',',header = None)
#2统计含有异常值的列。
l = []
for i in range(data.shape[1]):
    if '?' in pd.unique(data[i]):
        l.append(i)
#3随机替换异常值为值域中的值。
for i in l:
    #生成值域(pd.unique返回类型为numpy.ndarray)。
    hahaha = pd.unique(data[i])['?' != pd.unique(data[i])]
    for j in range(data.shape[0]):
        if(data[i][j] == '?'):
            #随机从值域挑选替换。
            data[i][j] = hahaha[np.random.randint(0,hahaha.shape[0])]
#转化为连续数字。
for i in range(data.shape[1]):
    dimensional_name = data.columns[i]#第i个维度的列名。
    data[dimensional_name] = LabelEncoder().fit_transform(data[dimensional_name].values)
#将类别换到最后。
label = data[0].copy()
del data[0]
data = pd.concat([data,label],axis =1,ignore_index=True)
#输出。
data.to_csv('e:/lxt/cate_data/after/mushroom.txt',index=False,header=None)
data.to_csv('e:/lxt/cate_data/after/mushroom.csv',index=False,header=None)
        

数据:UCI数据集:Soybean(small),Connect4,Promoters。

需要进行附加操作的数据:Promoters:

+,S10,		tactagcaatacgcttgcgttcggtggttaagtatgtataatgcgcgggcttgtcgt
+,AMPC,		tgctatcctgacagttgtcacgctgattggtgtcgttacaatctaacgcatcgccaa
+,AROH,		gtactagagaactagtgcattagcttatttttttgttatcatgctaaccacccggcg
+,DEOP2,	aattgtgatgtgtatcgaagtgtgttgcggagtagatgttagaatactaacaaactc
+,LEU1_TRNA,	tcgataattaactattgacgaaaagctgaaaaccactagaatgcgcctccgtggtag
+,MALEFG,	aggggcaaggaggatggaaagaggttgccgtataaagaaactagagtccgtttaggt
+,MALK,		cagggggtggaggatttaagccatctcctgatgacgcatagtcagcccatcatgaat
+,RECA,		tttctacaaaacacttgatactgtatgagcatacagtataattgcttcaacagaaca
+,RPOB,		cgacttaatatactgcgacaggacgtccgttctgtgtaaatcgcaatgaaatggttt
+,RRNAB_P1,	ttttaaatttcctcttgtcaggccggaataactccctataatgcgccaccactgaca
+,RRNAB_P2,	gcaaaaataaatgcttgactctgtagcgggaaggcgtattatgcacaccccgcgccg
+,RRNDEX_P2,	cctgaaattcagggttgactctgaaagaggaaagcgtaatatacgccacctcgcgac
+,RRND_P1,	gatcaaaaaaatacttgtgcaaaaaattgggatccctataatgcgcctccgttgaga
+,RRNE_P1,	ctgcaatttttctattgcggcctgcggagaactccctataatgcgcctccatcgaca
+,RRNG_P1,	tttatatttttcgcttgtcaggccggaataactccctataatgcgccaccactgaca
+,RRNG_P2,	aagcaaagaaatgcttgactctgtagcgggaaggcgtattatgcacaccgccgcgcc
+,RRNX_P1,	atgcatttttccgcttgtcttcctgagccgactccctataatgcgcctccatcgaca
+,TNAA,		aaacaatttcagaatagacaaaaactctgagtgtaataatgtagcctcgtgtcttgc
+,TYRT,		tctcaacgtaacactttacagcggcgcgtcatttgatatgatgcgccccgcttcccg
+,ARAC,		gcaaataatcaatgtggacttttctgccgtgattatagacacttttgttacgcgttt
+,LACI,		gacaccatcgaatggcgcaaaacctttcgcggtatggcatgatagcgcccggaagag
+,MALT,		aaaaacgtcatcgcttgcattagaaaggtttctggccgaccttataaccattaatta
+,TRP,		tctgaaatgagctgttgacaattaatcatcgaactagttaactagtacgcaagttca
+,TRPP2,	accggaagaaaaccgtgacattttaacacgtttgttacaaggtaaaggcgacgccgc
+,THR,		aaattaaaattttattgacttaggtcactaaatactttaaccaatataggcatagcg
+,BIOB,		ttgtcataatcgacttgtaaaccaaattgaaaagatttaggtttacaagtctacacc
+,FOL,		catcctcgcaccagtcgacgacggtttacgctttacgtatagtggcgacaatttttt
+,UVRBP1,	tccagtataatttgttggcataattaagtacgacgagtaaaattacatacctgcccg
+,UVRBP3,	acagttatccactattcctgtggataaccatgtgtattagagttagaaaacacgagg
+,LEXA,		tgtgcagtttatggttccaaaatcgccttttgctgtatatactcacagcataactgt
+,PORI-L,	ctgttgttcagtttttgagttgtgtataacccctcattctgatcccagcttatacgg
+,SPOT42,	attacaaaaagtgctttctgaactgaacaaaaaagagtaaagttagtcgcgtagggt
+,M1RNA,	atgcgcaacgcggggtgacaagggcgcgcaaaccctctatactgcgcgccgaagctg
+,GLNS,		taaaaaactaacagttgtcagcctgtcccgcttataagatcatacgccgttatacgt
+,TUFB,		atgcaattttttagttgcatgaactcgcatgtctccatagaatgcgcgctacttgat
+,SUBB-E,	ccttgaaaaagaggttgacgctgcaaggctctatacgcataatgcgccccgcaacgc
+,STR,		tcgttgtatatttcttgacaccttttcggcatcgccctaaaattcggcgtcctcata
+,SPC,		ccgtttattttttctacccatatccttgaagcggtgttataatgccgcgccctcgat
+,RPOA,		ttcgcatatttttcttgcaaagttgggttgagctggctagattagccagccaatctt
+,RPLJ,		tgtaaactaatgcctttacgtgggcggtgattttgtctacaatcttacccccacgta
+,PORI-R,	gatcgcacgatctgtatacttatttgagtaaattaacccacgatcccagccattctt
+,ALAS,		aacgcatacggtattttaccttcccagtcaagaaaacttatcttattcccacttttc
+,ARABAD,	ttagcggatcctacctgacgctttttatcgcaactctctactgtttctccatacccg
+,BIOA,		gccttctccaaaacgtgttttttgttgttaattcggtgtagacttgtaaacctaaat
+,DEOP1,	cagaaacgttttattcgaacatcgatctcgtcttgtgttagaattctaacatacggt
+,GALP2,	cactaatttattccatgtcacacttttcgcatctttgttatgctatggttatttcat
+,HIS,		atataaaaaagttcttgctttctaacgtgaaagtggtttaggttaaaagacatcagt
+,HISJ,		caaggtagaatgctttgccttgtcggcctgattaatggcacgatagtcgcatcggat
+,ILVGEDA,	ggccaaaaaatatcttgtactatttacaaaacctatggtaactctttaggcattcct
+,LACP1,	taggcaccccaggctttacactttatgcttccggctcgtatgttgtgtggaattgtg
+,LPP,		ccatcaaaaaaatattctcaacataaaaaactttgtgtaatacttgtaacgctacat
+,TRPR,		tggggacgtcgttactgatccgcacgtttatgatatgctatcgtactctttagcgag
+,UVRB_P2,	tcagaaatattatggtgatgaactgtttttttatccagtataatttgttggcataat
-, 867,		atatgaacgttgagactgccgctgagttatcagctgtgaacgacattctggcgtcta
-,1169,		cgaacgagtcaatcagaccgctttgactctggtattactgtgaacattattcgtctc
-, 802,		caatggcctctaaacgggtcttgaggggttttttgctgaaaggaggaactatatgcg
-, 521,		ttgacctactacgccagcattttggcggtgtaagctaaccattccggttgactcaat
-, 918,		cgtctatcggtgaacctccggtatcaacgctggaaggtgacgctaacgcagatgcag
-,1481,		gccaatcaatcaagaacttgaagggtggtatcagccaacagcctgacatccttcgtt
-,1024,		tggatggacgttcaacattgaggaaggcataacgctactacctgatgtttactccaa
-,1149,		gaggtggctatgtgtatgaccgaacgagtcaatcagaccgctttgactctggtatta
-, 313,		cgtagcgcatcagtgctttcttactgtgagtacgcaccagcgccagaggacgacgac
-, 780,		cgaccgaagcgagcctcgtcctcaatggcctctaaacgggtcttgaggggttttttg
-,1384,		ctacggtgggtacaatatgctggatggagatgcgttcacttctggtctactgactcg
-, 507,		atagtctcagagtcttgacctactacgccagcattttggcggtgtaagctaaccatt
-,  39,		aactcaaggctgatacggcgagacttgcgagccttgtccttgcggtacacagcagcg
-,1203,		ttactgtgaacattattcgtctccgcgactacgatgagatgcctgagtgcttccgtt
-, 988,		tattctcaacaagattaaccgacagattcaatctcgtggatggacgttcaacattga
-,1171,		aacgagtcaatcagaccgctttgactctggtattactgtgaacattattcgtctccg
-, 753,		aagtgcttagcttcaaggtcacggatacgaccgaagcgagcctcgtcctcaatggcc
-, 630,		gaagaccacgcctcgccaccgagtagacccttagagagcatgtcagcctcgacaact
-, 660,		ttagagagcatgtcagcctcgacaacttgcataaatgctttcttgtagacgtgccct
-,1216,		tattcgtctccgcgactacgatgagatgcctgagtgcttccgttactggattgtcac
-, 835,		tgctgaaaggaggaactatatgcgctcatacgatatgaacgttgagactgccgctga
-,  35,		catgaactcaaggctgatacggcgagacttgcgagccttgtccttgcggtacacagc
-,1218,		ttcgtctccgcgactacgatgagatgcctgagtgcttccgttactggattgtcacca
-, 668,		catgtcagcctcgacaacttgcataaatgctttcttgtagacgtgccctacgcgctt
-, 413,		aggaggaactacgcaaggttggaacatcggagagatgccagccagcgcacctgcacg
-, 991,		tctcaacaagattaaccgacagattcaatctcgtggatggacgttcaacattgagga
-, 751,		tgaagtgcttagcttcaaggtcacggatacgaccgaagcgagcctcgtcctcaatgg
-, 850,		ctatatgcgctcatacgatatgaacgttgagactgccgctgagttatcagctgtgaa
-,  93,		gcggcagcacgtttccacgcggtgagagcctcaggattcatgtcgatgtcttccggt
-,1108,		atccctaatgtctacttccggtcaatccatctacgttaaccgaggtggctatgtgta
-, 915,		tggcgtctatcggtgaacctccggtatcaacgctggaaggtgacgctaacgcagatg
-,1019,		tctcgtggatggacgttcaacattgaggaaggcataacgctactacctgatgtttac
-,  19,		tattggcttgctcaagcatgaactcaaggctgatacggcgagacttgcgagccttgt
-,1320,		tagagggtgtactccaagaagaggaagatgaggctagacgtctctgcatggagtatg
-,  91,		cagcggcagcacgtttccacgcggtgagagcctcaggattcatgtcgatgtcttccg
-, 217,		ttacgttggcgaccgctaggactttcttgttgattttccatgcggtgttttgcgcaa
-, 957,		acgctaacgcagatgcagcgaacgctcggcgtattctcaacaagattaaccgacaga
-, 260,		ggtgttttgcgcaatgttaatcgctttgtacacctcaggcatgtaaacgtcttcgta
-, 557,		aaccattccggttgactcaatgagcatctcgatgcagcgtactcctacatgaataga
-,1355,		agacgtctctgcatggagtatgagatggactacggtgggtacaatatgctggatgga
-, 244,		tgttgattttccatgcggtgttttgcgcaatgttaatcgctttgtacacctcaggca
-, 464,		tgcacgggttgcgatagcctcagcgtattcaggtgcgagttcgatagtctcagagtc
-, 296,		aggcatgtaaacgtcttcgtagcgcatcagtgctttcttactgtgagtacgcaccag
-, 648,		ccgagtagacccttagagagcatgtcagcctcgacaacttgcataaatgctttcttg
-, 230,		cgctaggactttcttgttgattttccatgcggtgttttgcgcaatgttaatcgcttt
-,1163,		tatgaccgaacgagtcaatcagaccgctttgactctggtattactgtgaacattatt
-,1321,		agagggtgtactccaagaagaggaagatgaggctagacgtctctgcatggagtatga
-, 663,		gagagcatgtcagcctcgacaacttgcataaatgctttcttgtagacgtgccctacg
-, 799,		cctcaatggcctctaaacgggtcttgaggggttttttgctgaaaggaggaactatat
-, 987,		gtattctcaacaagattaaccgacagattcaatctcgtggatggacgttcaacattg
-,1226,		cgcgactacgatgagatgcctgagtgcttccgttactggattgtcaccaaggcttcc
-, 794,		ctcgtcctcaatggcctctaaacgggtcttgaggggttttttgctgaaaggaggaac
-,1442,		taacattaataaataaggaggctctaatggcactcattagccaatcaatcaagaact

 2、用R语言读入。

#函数(自己写)
read_data <- function(file_path,header = FALSE){
    data_list = read.csv(file = file_path,header = header)
    dimensional_num = length(data_list)
    data_num = length(data_list[[1]])
    dataset = list()
    data_set = matrix(0,dimensional_num-1,data_num)
    for (i in 1:(dimensional_num-1)) {
        data_set[i,] = data_list[[i]]
    }
    dataset$data = data_set
    dataset$label = data_list[[dimensional_num]]
    dataset$hidden_clusters = Hidden_clusters(dataset$label)
    return(dataset)
}
#label生成(原分类)
Hidden_clusters <- function(data_labels){
    uni = unique(data_labels)
    num = length(data_labels)
    hidden_clusters = list()
    i = 1
    for(j in uni){
        hidden_clusters[[i]] = (1:num)[data_labels == j]
        i = i + 1
    }
    return(hidden_clusters)
}
#读入(例子)
Soybean = read_data(file_path = "e:\\lxt\\cate_data\\after\\soybean.txt")

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import pandas as pd import tkinter as tk from tkinter import filedialog from sklearn.preprocessing import StandardScaler # 定义全局变量 file_path = "" def import_csv_data(): global file_path file_path = filedialog.askopenfilename() # 读取CSV文件并显示在Text控件上 data = pd.read_csv(file_path) # 获取前5行数据 top_5 = data.head() # 将前5行数据插入到Text控件 txt_data.insert(tk.END, top_5) # 处理缺失值 def handle_missing_values(): global file_path # 修改2:使用全局变量 # 读取CSV文件 data = pd.read_csv(file_path) # 处理缺失值 data.fillna(0, inplace=True) # 显示前10行数据 text_output.insert(tk.END, "处理缺失值成功,前10行数据如下:\n") text_output.insert(tk.END, str(data.head(10))) # 标准化数值数据 def normalize_numeric_data(): global file_path # 读取CSV文件 data = pd.read_csv(file_path) # 提取数值数据 numeric_data = data.select_dtypes(include=['float64', 'int64']) # 标准化数据 scaler = StandardScaler() normalized_data = scaler.fit_transform(numeric_data) # 将处理后的数据写回原数据data.loc[:, numeric_data.columns] = normalized_data # 显示前10行数据 text_output.insert(tk.END, "标准化数值数据成功,前10行数据如下:\n") text_output.insert(tk.END, str(data.head(10))) 这段代码后的def encode_categorical_data(): # 读取CSV文件 data = pd.read_csv("file.csv") # 提取类别数据 categorical_data = data.select_dtypes(include=['object']) # 编码数据 encoder = LabelEncoder() encoded_data = categorical_data.apply(encoder.fit_transform) # 将处理后的数据写回原数据data.loc[:, categorical_data.columns] = encoded_data # 显示前10行数据 text_output.insert(tk.END, "编码类别数据成功,前10行数据如下:\n") text_output.insert(tk.END, str(data.head(10)))这段代码怎么改能跑通
05-28

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值