1.简单计算
指通过已有字段进行四则运算得出新的字段
import pandas
data = pandas.read_csv(
'/users/bakufu/desktop/4.13/data.csv',
sep = '|'
)
Out[3]:
name price num
0 A 6058 408
1 B 1322 653
2 C 7403 400
3 D 4911 487
4 E 3320 56
5 F 3245 475
6 G 4881 746
7 H 8035 980
8 I 6772 316
9 J 4050 661
10 K 2673 783
11 L 2787 975
12 M 2839 221
13 N 331 480
data['total'] = data.price * data.num
Out[5]:
name price num total
0 A 6058 408 2471664
1 B 1322 653 863266
2 C 7403 400 2961200
3 D 4911 487 2391657
4 E 3320 56 185920
5 F 3245 475 1541375
6 G 4881 746 3641226
7 H 8035 980 7874300
8 I 6772 316 2139952
9 J 4050 661 2677050
10 K 2673 783 2092959
11 L 2787 975 2717325
12 M 2839 221 627419
13 N 331 480 158880
2.数据标准化
指将数据按比例缩放,使之落入到特定区间,用于进行不同变量间的比较分析。
通常在综合评价分析、聚类分析、因子分析、主成分分析等分析开展之前,消除各个变量由于量纲不同、自身变异或者数值相差较大所引起的误差。
0-1标准化计算公式
将向量中的每个值与所在向量中的最小值的差,除以所在向量中的最大值与向量中最小值的差。
可以方便进行十分制与百分制的换算。
import pandas
data = pandas.read_csv(
'/users/bakufu/desktop/4.14/data.csv'
)
Out[8]:
class name score
0 一班 朱志斌 120
1 一班 朱凤 122
2 一班 郑丽萍 140
3 一班 郭杰明 131
4 一班 许杰 122
5 二班 郑芬 119
6 二班 林龙 96
7 二班 林良坤 135
8 二班 黄志红 105
9 三班 方小明 114
10 三班 陈丽灵 115
11 三班 方伟君 136
12 三班 庄艺家 119
#round()函数是保留多少位小数的意思,本例中保留2位小数
data['scale'] = round(
(
data.score - data.score.min()
)/(
data.score.max() - data.score.min()
),
2
)
Out[11]:
class name score scale
0 一班 朱志斌 120 0.55
1 一班 朱凤 122 0.59
2 一班 郑丽萍 140 1.00
3 一班 郭杰明 131 0.80
4 一班 许杰 122 0.59
5 二班 郑芬 119 0.52
6 二班 林龙 96 0.00
7 二班 林良坤 135 0.89
8 二班 黄志红 105 0.20
9 三班 方小明 114 0.41
10 三班 陈丽灵 115 0.43
11 三班 方伟君 136 0.91
12 三班 庄艺家 119 0.52
#140分对应的标准化分数是1,是所有学生中的最高分。
#96分对应的标准化分数是0,是所有学生中的最低分。
3.数据分组
根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间进行研究,以揭示其内在的联系和规律性。
cut函数cut(series, bins, right=True, labels=NULL)
参数 | 注释 |
---|---|
series | 需要分组的数据 |
bins | 分组的划分数组 |
right | 分组的时候,右边是否闭合 |
labels | 分组的自定义标签,可以不自定义 |
import pandas
data = pandas.read_csv(
'/users/bakufu/desktop/4.15/data.csv',
sep = '|'
)
Out[30]:
tel cost
0 166424556600 2.0
1 166424557199 5.0
2 166424561768 75.3
3 166424569696 20.0
4 166424569924 97.3
5 166424579238 3.0
6 166424581334 100.0
7 166424589730 77.0
8 166424591167 5.5
9 166424598020 50.0
10 166424598259 28.6
11 166424606270 10.8
12 166424632819 76.7
13 166424635250 84.6
14 166424641824 10.0
#定义分组区间
bins = [
min(data.cost)-1, 20, 40, 60,
80, 100, max(data.cost)+1
]
Out[32]: [1.0, 20, 40, 60, 80, 100, 101.0]
#分析消费金额的分布情况,
#此处设置的最小值和最大值,并非原始的最小值和最大值,
#把分组的最小值设置为数据的最小值减一,
#把分组的最大值设置为数据的最大值加一,
#为什么设置的开始和结束值,是最小值减一和最大值加一,
#因为有时分组的时候,会碰到边界值,
#即需要分组的值等于最小值或最大值,
#会导致找不到范围
#cut函数进行分组,如果不自定义标签,
#则默认标签是数学的范围表达式,
#标签默认使用左开右闭
data['cut'] = pandas.cut(
data.cost,
bins
)
Out[34]:
tel cost cut
0 166424556600 2.0 (1.0, 20.0]
1 166424557199 5.0 (1.0, 20.0]
2 166424561768 75.3 (60.0, 80.0]
3 166424569696 20.0 (1.0, 20.0]
4 166424569924 97.3 (80.0, 100.0]
5 166424579238 3.0 (1.0, 20.0]
6 166424581334 100.0 (80.0, 100.0]
7 166424589730 77.0 (60.0, 80.0]
8 166424591167 5.5 (1.0, 20.0]
9 166424598020 50.0 (40.0, 60.0]
10 166424598259 28.6 (20.0, 40.0]
11 166424606270 10.8 (1.0, 20.0]
12 166424632819 76.7 (60.0, 80.0]
13 166424635250 84.6 (80.0, 100.0]
14 166424641824 10.0 (1.0, 20.0]
#设置right=False后变成左闭右开
data['cut'] = pandas.cut(
data.cost,
bins,
right=False
)
Out[36]:
tel cost cut
0 166424556600 2.0 [1.0, 20.0)
1 166424557199 5.0 [1.0, 20.0)
2 166424561768 75.3 [60.0, 80.0)
3 166424569696 20.0 [20.0, 40.0)
4 166424569924 97.3 [80.0, 100.0)
5 166424579238 3.0 [1.0, 20.0)
6 166424581334 100.0 [100.0, 101.0)
7 166424589730 77.0 [60.0, 80.0)
8 166424591167 5.5 [1.0, 20.0)
9 166424598020 50.0 [40.0, 60.0)
10 166424598259 28.6 [20.0, 40.0)
11 166424606270 10.8 [1.0, 20.0)
12 166424632819 76.7 [60.0, 80.0)
13 166424635250 84.6 [80.0, 100.0)
14 166424641824 10.0 [1.0, 20.0)
#定义分组的标签
labels = [
'20以下', '20到40', '40到60',
'60到80', '80到100', '100以上'
]
Out[38]:
['20以下', '20到40',
'40到60', '60到80',
'80到100', '100以上']
data['cut'] = pandas.cut(
data.cost, bins,
right=False, labels=labels
)
Out[40]:
tel cost cut
0 166424556600 2.0 20以下
1 166424557199 5.0 20以下
2 166424561768 75.3 60到80
3 166424569696 20.0 20到40
4 166424569924 97.3 80到100
5 166424579238 3.0 20以下
6 166424581334 100.0 100以上
7 166424589730 77.0 60到80
8 166424591167 5.5 20以下
9 166424598020 50.0 40到60
10 166424598259 28.6 20到40
11 166424606270 10.8 20以下
12 166424632819 76.7 60到80
13 166424635250 84.6 80到100
14 166424641824 10.0 20以下