一个机器学习竞赛中,题目大意如下,本文主要记录数据处理过程,为了模型训练,第一步需要将中文数据集处理为数值类别数据集保存。

基于大数据的运营商投诉与故障关联分析

  目标:原始数据集是含大量中文的xls格式的表格,目标处理为数值类别的csv表格。

  原始数据集部分切片,如下格式:

  

  目标数据集为,处理成对应的数值类别格式,如下:

  解决思路:(处理中文需要注意编码)

  总体分两步,1.提取每一列的值(含中文),作为key关键字,value为自增的整数,构造字典。利用了字典的key唯一的特性。

        2.根据上一部提取的字典,对照字典,将数据集的中文key,替换为对应的value,即可。

  源码如下:

from pandas import DataFrame
import pandas as pd
import matplotlib.pyplot as plt
import xlrd

fd = pd.read_excel("complain.xls", encoding='utf-8',header=None)
# fd[fd.notnull()]#查看缺失值情况 newdf = pd.DataFrame()#保存处理后的数据集 keydf = pd.DataFrame()#保存中文对照表 for i in range(len(fd.columns)): newdata = {}#利用字典的key唯一特性,去除重复的文字,并利用value index = #累加数值 rowline = [] keylist = [] rowdf = pd.DataFrame() ,len(fd)):#.提取关键字字典,key为中文,value为累加整型 key = fd.iloc[j,i] if key not in newdata.keys(): newdata[key] = index index += keylist.append(key)#将中文提取出来,方便对照 rowdf = pd.DataFrame({i: keylist})#保存中文对照表 keydf = pd.concat([keydf, rowdf], axis=, ignore_index=True) , len(fd)):#.根据对照表,将中文替换成对应的数值 rowline.append(newdata[fd.iloc[k,i]]) rowdf = pd.DataFrame({i: rowline})#保存处理后的表 newdf = pd.concat([newdf, rowdf], axis=, ignore_index=True) print newdf.info() newdf.to_csv('newdata.csv') keydf.to_csv('keylist.csv', encoding='gbk')

具体,pandas的DataFrame表的创建和联表操作,需要查看官方文档:http://pandas.pydata.org/pandas-docs/stable/merging.html

继续更新关联规则挖掘和决策树对数据做模型处理。

Pandas将中文数据集转换为数值类别型数据集的更多相关文章

  1. linux把时间类型值转换为数值型

    字符及字符串处理函数:字符及字符串处理函数的处理对象均为字符型数据,但其返回值类型各异.1.取子串函数:格式:substr(c,n1,n2)功能:取字符串C第n1个字符起的n2个字符.返回值类型是字符 ...

  2. js中字符串转换为数值的两种方法的区别

    在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt()   //将字符串转换为整型 parseFloat()  //将字符串转换为浮点型 转换函数在 ...

  3. Spark Mllib里的本地向量集(密集型数据集和稀疏型数据集概念、构成)(图文详解)

    不多说,直接上干货! Local  vector : 本地向量集 由两类构成:稀疏型数据集(spares)和密集型数据集(dense) (1).密集型数据集 例如一个向量数据(9,5,2,7),可以设 ...

  4. Spark Mllib里如何将trainDara训练数据的分类特征字段转换为数值字段(图文详解)

    不多说,直接上干货! 字段3 是分类特征字段,但是呢,在分类算法里不能直接用.所以,必须要转换为数值字段才能够被分类算法使用. 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的 ...

  5. C# 阿拉伯数字转换为中文数字/中文数字转换为阿拉伯数字

    项目中经常会格式化数据,转换数字的使用情况比较多,记录一下数字转换的方法! 如果需要转换为繁体中文,将数组里的汉字换成繁体中文即可. 1.阿拉伯数字转换为中文数字 /// <summary> ...

  6. 【ABAP系列】SAP ABAP中将字符格式的金额转换为数值的函数

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中将字符格式的金 ...

  7. 数据集转换为Json

    数据集转换为Json 第一步:新建一个类对象  通常我会写三个属性:状态.返回信息.数据集 第二步:新建一个JSON转换类 第三步:把类对象当做参数传入JSON转换类 ———————————————— ...

  8. mormot 数据集转换为JSON字串

    mormot 数据集转换为JSON字串 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph ...

  9. 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:

    无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...

随机推荐

  1. 使用shell操作mysql(转)

    在linux平台下,为避免每次操作数据库(mysql)都要进入Mysql命令模式下,可以使用Shell命令直接操作数据库. 一.直接写sql语句 if [ $# -ne 1 ] then        ...

  2. sencha怎么在control层调用按钮

    暂时在这里总结了3种方法: config: { refs: { sendMaint: 'sendMaint', basicinfolist:'basicinfolist',refreshButton: ...

  3. LaTex Font Size 字体大小命令

    LaTex中字体大小有很多中等级,分别由下列命令控制: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE ...

  4. [LintCode] Copy Books 复印书籍

    Given an array A of integer with size of n( means n books and number of pages of each book) and k pe ...

  5. ACM Steps 2.1.8

    小数化分数2   Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)  Total Sub ...

  6. c#语句 类

    知识点: 1.string类 2.Math类 3.DateTime  获取时间 for穷举 1.羽毛球拍15元,球3元,水2元.现有200元,每种至少买一个,共有多少种可能.

  7. .net 新闻点击量修改,避免恶意刷新

    DataTable dt = bll.GetNewsByID(id);//根据ID获取的新闻详细内容 if (dt != null && dt.Rows.Count > 0) { ...

  8. 怎么配置Java环境变量?

    右键计算机 -> 属性 -> 高级系统设置 -> 环境变量,   在系统环境变量添加以下三条变量. 1. PATH, 配置JDK命令文件的位置. 输入“%JAVA_HOME%\bin ...

  9. 实现服务器端与客户端的实时通信 SignalR(1)

    一.本文出处:SignalR 实例介绍 (建议看原著里面有DEMO下载) 二.这篇文章介绍如何利用 VS2012 创建一个简单的实时聊天系统,建好后的样子如下(模拟三个在线用户):    三.Demo ...

  10. C# 拷贝数组的几种方法

    已知数组如下: int[] array = { 1, 5, 9, 3, 7, 2, 8 ,6, 4}; (1).引用复制,易引起错误,不推荐 int[] copy = array; (2).遍历拷贝 ...