python資料預處理之將類別資料轉換為數值的方法

2021-08-19 19:15:35 字數 1780 閱讀 3845

在進行python資料分析的時候,首先要進行資料預處理。

有時候不得不處理一些非數值類別的資料,嗯, 今天要說的就是面對這些資料該如何處理。

目前了解到的大概有三種方法:

1,通過labelencoder來進行快速的轉換;

3,通過get_dummies方法來轉換。

import pandas as pd

from io import stringio

csv_data = '''a,b,c,d

1,2,3,4

5,6,,8

0,11,12,'''

df = pd.read_csv(stringio(csv_data))

print(df)

#統計為空的數目

print(df.isnull().sum())

print(df.values)

#丟棄空的

print(df.dropna())

print('after', df)

from sklearn.preprocessing import imputer

# axis=0 列 axis = 1 行

imr = imputer(missing_values='nan', strategy='mean', axis=0)

imr.fit(df) # fit 構建得到資料

imputed_data = imr.transform(df.values) #transform 將資料進行填充

print(imputed_data)

df = pd.dataframe([['green', 'm', 10.1, 'class1'],

['red', 'l', 13.5, 'class2'],

['blue', 'xl', 15.3, 'class1']])

df.columns =['color', 'size', 'price', 'classlabel']

print(df)

print(df)

## 遍歷series

for idx, label in enumerate(df['classlabel']):

print(idx, label)

#1, 利用labelencoder類快速編碼,但此時對color並不適合,

#看起來,好像是有大小的

from sklearn.preprocessing import labelencoder

class_le = labelencoder()

color_le = labelencoder()

df['classlabel'] = class_le.fit_transform(df['classlabel'].values)

#df['color'] = color_le.fit_transform(df['color'].values)

print(df)

#2, 對映字典將類標轉換為整數

import numpy as np

print('2,', df)

#3,處理1不適用的

#利用建立乙個新的虛擬特徵

from sklearn.preprocessing import onehotencoder

pf = pd.get_dummies(df[['color']])

df = pd.concat([df, pf], axis=1)

df.drop(['color'], axis=1, inplace=true)

print(df)

Python資料預處理

1.匯入資料檔案 excel,csv,資料庫檔案等 df read table file,names 列名1,列名2,sep encoding file是檔案路徑,names預設為檔案的第一行為列名,sep為分隔符,預設為空,表示預設匯入為一列 encoding設定檔案編碼,匯入中文時,需設定utf...

python資料預處理

scikit learn 提供的binarizer能夠將資料二元化 from sklearn.preprocessing import binarizer x 1,2,3,4,5 5,4,3,2,1 3,3,3,3,3 1,1,1,1,1 print before transform x binar...

python資料預處理

import pandas as pd 缺失值處理 df pd.read excel users caizhengjie desktop a.xlsx print df 直接呼叫info方法就會返回每一列的缺失值 print df.info print isnull方法判斷哪個是缺失值 print ...