在我們處理資料時,需要設定啞變數或者將連續值按照某個標準劃分為幾類,例如將性別中的男,女替換為0和1,將bmi值劃分為偏瘦、正常、偏胖和肥胖四類
資料集
#data
import pandas as pd
dict_data =
df = pd.dataframe(dict_data)
print
(df)
#data_result
id_card *** bmi
0111 f 31.0
1222 m 17.5
2333 m 24.5
3444 f 23.0
4555 m 18.8
5666 f 26.0
6777 f 30.0
7888 f 25.0
#python新版本 dataframe移除了 .ix
df.loc[df[
'***']==
'f',
'***']=
0df.loc[df[
'***']==
'm',
'***']=
1print
(df)
#result
id_card *** bmi
0111
031.0
1222
117.5
2333
124.5
3444
023.0
4555
118.8
5666
026.0
6777
030.0
7888
025.0
* map對映方法# ways-1 字典
# df['***'] = df['***'].map()
# ways-2 函式
df['***'
]= df[
'***'].
map(
lambda x:
0if x ==
'f'else1)
# result
id_card *** bmi
0111
031.0
1222
117.5
2333
124.5
3444
023.0
4555
118.8
5666
026.0
6777
030.0
7888
025.0
分類
bmi(kg/m2)
偏瘦<18.5
正常18.5~24
偏胖24~28肥胖≥
\geq
≥ 28
keys:利用布林型索引或者利用.index.to_list()拿出對應的行索引
#布林型索引
pan_1 = df[
'bmi'
]<
18.5
pan_2 =
(df[
'bmi'
]>=
18.5)&
(df[
'bmi'
]<24)
pan_3 =
(df[
'bmi'
]>=24)
&(df[
'bmi'
]<28)
pan_4 = df[
'bmi'
]>=
28df.loc[pan_1,
'bmi']=
'偏瘦'
df.loc[pan_2,
'bmi']=
'正常'
df.loc[pan_3,
'bmi']=
'偏胖'
df.loc[pan_4,
'bmi']=
'肥胖'
#.index.to_list()
pan_1 = df[df[
'bmi'
]<
18.5
].index.to_list(
)pan_2 = df[
(df[
'bmi'
]>=
18.5)&
(df[
'bmi'
]<24)
].index.to_list(
)pan_3 = df[
(df[
'bmi'
]>=24)
&(df[
'bmi'
]<28)
].index.to_list(
)pan_4 = df[df[
'bmi'
]>=28]
.index.to_list(
)df.loc[pan_1,
'bmi']=
'偏瘦'
df.loc[pan_2,
'bmi']=
'正常'
df.loc[pan_3,
'bmi']=
'偏胖'
df.loc[pan_4,
'bmi']=
'肥胖'
#result
print
(df)
id_card *** bmi
0111
0 肥胖
1222
1 偏瘦
2333
1 偏胖
3444
0 正常
4555
1 正常
5666
0 偏胖
6777
0 肥胖
7888
0 偏胖
pandas 資料處理
pandas中資料可以分為series,dataframe,panel分別表示一維至三維資料。其中在構造時,index表示行名,columns表示列名 構造方式 s pd.series data index index s pd series np random randn 5 index a b ...
pandas資料處理
dataframe.duplicated subset none,keep first 判斷dataframe中的資料是否有重複 必須一行中所有資料都重複才算重複,只能判斷行,不能判斷列 返回series dataframe.drop duplicates subset none,keep firs...
Pandas資料處理
資料處理 pandas from sklearn.preprocessing import minmaxscaler data 1,2 0.5,6 0.10 1,18 將 numpy 轉換成 pd 表 pd.dataframe data 歸一化 0,1 之間 scaler minmaxscaler ...