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.數(shù)據(jù)標(biāo)準化
指將數(shù)據(jù)按比例縮放转捕,使之落入到特定區(qū)間作岖,用于進行不同變量間的比較分析。
通常在綜合評價分析五芝、聚類分析痘儡、因子分析、主成分分析等分析開展之前枢步,消除各個變量由于量綱不同沉删、自身變異或者數(shù)值相差較大所引起的誤差。
0-1標(biāo)準化計算公式
屏幕快照 2018-07-03 05.32.15.png
將向量中的每個值與所在向量中的最小值的差醉途,除以所在向量中的最大值與向量中最小值的差矾瑰。
可以方便進行十分制與百分制的換算。
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()函數(shù)是保留多少位小數(shù)的意思隘擎,本例中保留2位小數(shù)
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分對應(yīng)的標(biāo)準化分數(shù)是1殴穴,是所有學(xué)生中的最高分。
#96分對應(yīng)的標(biāo)準化分數(shù)是0嵌屎,是所有學(xué)生中的最低分推正。
3.數(shù)據(jù)分組
根據(jù)數(shù)據(jù)分析對象的特征,按照一定的數(shù)值指標(biāo)宝惰,把數(shù)據(jù)分析對象劃分為不同的區(qū)間進行研究植榕,以揭示其內(nèi)在的聯(lián)系和規(guī)律性。
屏幕快照 2018-07-03 06.01.35.png
cut函數(shù)cut(series, bins, right=True, labels=NULL)
參數(shù) | 注釋 |
---|---|
series | 需要分組的數(shù)據(jù) |
bins | 分組的劃分數(shù)組 |
right | 分組的時候尼夺,右邊是否閉合 |
labels | 分組的自定義標(biāo)簽,可以不自定義 |
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
#定義分組區(qū)間
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]
#分析消費金額的分布情況寝衫,
#此處設(shè)置的最小值和最大值拐邪,并非原始的最小值和最大值慰毅,
#把分組的最小值設(shè)置為數(shù)據(jù)的最小值減一,
#把分組的最大值設(shè)置為數(shù)據(jù)的最大值加一扎阶,
#為什么設(shè)置的開始和結(jié)束值汹胃,是最小值減一和最大值加一,
#因為有時分組的時候犀农,會碰到邊界值,
#即需要分組的值等于最小值或最大值宰掉,
#會導(dǎo)致找不到范圍
#cut函數(shù)進行分組呵哨,如果不自定義標(biāo)簽,
#則默認標(biāo)簽是數(shù)學(xué)的范圍表達式轨奄,
#標(biāo)簽?zāi)J使用左開右閉
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]
#設(shè)置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)
#定義分組的標(biāo)簽
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以下