使用LabelEncoder 和 OneHotEncoder将csv文件列标签为A1,A4,A5,A6的英文标签自动替换成不同数字
时间: 2024-03-25 09:36:01 浏览: 44
修改数据标签
假设我们有一个csv文件,其中包含四列,分别以A1、A4、A5和A6作为列标签,我们需要将这四列的英文标签自动替换成不同数字,可以使用如下代码:
```python
import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# 读取csv文件
df = pd.read_csv('your_file.csv')
# 实例化LabelEncoder和OneHotEncoder
le_A1 = LabelEncoder()
le_A4 = LabelEncoder()
le_A5 = LabelEncoder()
le_A6 = LabelEncoder()
ohe = OneHotEncoder()
# 将英文标签替换成数字
df['A1'] = le_A1.fit_transform(df['A1'])
df['A4'] = le_A4.fit_transform(df['A4'])
df['A5'] = le_A5.fit_transform(df['A5'])
df['A6'] = le_A6.fit_transform(df['A6'])
# 将数字编码转换成独热编码
A1_encoded = ohe.fit_transform(df['A1'].values.reshape(-1, 1)).toarray()
A4_encoded = ohe.fit_transform(df['A4'].values.reshape(-1, 1)).toarray()
A5_encoded = ohe.fit_transform(df['A5'].values.reshape(-1, 1)).toarray()
A6_encoded = ohe.fit_transform(df['A6'].values.reshape(-1, 1)).toarray()
# 将独热编码添加到原数据中
df_encoded = pd.concat([
df.drop(['A1', 'A4', 'A5', 'A6'], axis=1),
pd.DataFrame(A1_encoded),
pd.DataFrame(A4_encoded),
pd.DataFrame(A5_encoded),
pd.DataFrame(A6_encoded),
], axis=1)
# 将转换后的数据保存到新的csv文件中
df_encoded.to_csv('new_file.csv', index=False)
```
其中,我们对每一列分别实例化了一个LabelEncoder对象,并使用fit_transform函数进行转换。然后,我们使用OneHotEncoder对每一列进行独热编码,并将独热编码添加到原数据中。最后,使用concat函数将所有列连接起来,生成新的DataFrame对象,并使用to_csv函数保存到新的csv文件中。
阅读全文