数据转换的目的是将数据转换为需要的数据格式,便于后续的分析
1. 离散化:数据划分面元
通常情况下,数据集中可能存在两种类型的特征:
- 连续特征
连续特征的值用数值(整数或浮点数)表示,有测量单位,可进行加减、比较大小等运算。 - 分类特征
分类特征是按等级划分的,取值于一个有限或无限的集合,例如,性别、专业是分类特征,性别的值取自于集合{‘男’,‘女’}。
从连续变量到分类变量:
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=‘raise’)
参数 | 说明 |
---|---|
x | 要处理的连续值数据,可以是数组、列表等,但必须是一维的 |
bins | 整数或列表。如果bins是整数,表示传入面元的数量,根据数据的最小值和最大值计算等长面元;如果bins是列表,定义了面元的边界。 |
right | 缺省为False,面元包含区间的左端,但不包含右端。设置为True,则面元包含区间的右端不包含区间的左端。 |
labels | 定义面元的名称,可以是数组、列表 |
retbins | bool,缺省为False。是否返回面元。如果为True,cut将有两个返回值。 |
precision | 小数精度,默认为3 |
include_lowest | 第一个面元初始值是否包含在内。 |
例1 将总成绩划分数据面元
import pandas as pd
url = 'students-info.csv'
students = pd.read_csv(url,encoding='gbk')
In [1]:
bins=[0,60,70,80,90,101]
lbls=['不及格','及格','中','良','优']
In [2]: students
Out[2]:
姓名 性别 专业 期中成绩 期末成绩 平时成绩 总成绩
0 张海 男 交通工程 90 88 90 89
1 段霞 女 金融学 88 95 92 92
2 敬卫华 男 土木工程 91 87 90 89
3 李明 男 交通工程 54 70 70 65
4 王丹 女 金融学 67 75 70 72
5 王真花 女 土木工程 58 82 85 75
6 穆桂英 女 交通工程 78 90 92 87
7 王小田 男 交通工程 86 75 78 79
8 杨丽珍 女 交通工程 47 70 70 63
9 孙振英 男 金融学 95 90 90 92
10 蒋学军 女 金融学 91 86 88 88
11 吴俊 男 金融学 83 88 90 87
In [3]: students['等级'