如何将pandas数据框中的字符串值转换为数字值

2024-10-03 02:40:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集。它有一些字符串列。我想转换这些字符串列。我正在用这个数据集开发一个神经网络。但是由于数据集有一些字符串值,我无法训练我的神经网络。将这些字符串值转换为神经网络可读格式的最佳方法是什么?在

这是我拥有的数据集

type,amount,nameOrig,oldbalanceOrg,newbalanceOrig,nameDest,oldbalanceDest,newbalanceDest,isFraud,isFlaggedFraud
PAYMENT,9839.64,C1231006815,170136.0,160296.36,M1979787155,0.0,0.0,1,0
PAYMENT,1864.28,C1666544295,21249.0,19384.72,M2044282225,0.0,0.0,0,0
TRANSFER,181.0,C1305486145,181.0,0.0,C553264065,0.0,0.0,0,1

我想把那些类型、nameOrig、nameDest字段转换成神经网络可读格式。在

我用了下面的方法。但我不知道这是对是错。在

^{pr2}$

我已经讨论了以下问题。但大多数都不是为我工作的

How to convert string based data frame to numeric

converting non-numeric to numeric value using Panda libraries

converting non-numeric to numeric value using Panda libraries


Tags: to数据方法字符串value格式神经网络payment
3条回答

您需要将字符串值编码为数字值。在这种情况下,我通常是通过一个非数字特征来创建一个表,所创建的表包含该特性的所有可能值。然后,在训练模型时使用相应特征表中的值的索引。在

示例:

type_values = ['PAYMENT', 'TRANSFER']

在本例中,您可以使用pandas的数据类型category将字符串映射到索引(请参见categorical data)。所以没有必要使用LabelEncoderOneHotEncoderscikit-learn。在

import pandas as pd

df = pd.read_csv('54055554.csv', header=0, dtype={
    'type': 'category',  # < 
    'amount': float,
    'nameOrig': str,
    'oldbalanceOrg': float,
    'newbalanceOrig': float,
    'nameDest': str,
    'oldbalanceDest': float,
    'newbalanceDest': float,
    'isFraud': bool,
    'isFlaggedFraud': bool
})

print(dict(enumerate(df['type'].cat.categories)))
# {0: 'PAYMENT', 1: 'TRANSFER'}

print(list(df['type'].cat.codes))
# [0, 0, 1]

来自CSV的数据:

^{pr2}$

转化

首先需要使用LableEncoder类转换这三列。在

分类数据编码

这里你有类型作为范畴值。为此,您可以使用sklearn.preprocessing中提供的OneHotEncoder类。在

避免伪变量陷阱

然后,您需要通过删除任何一个用于表示类型的列来避免伪变量陷阱。在

代码

这里我把示例代码放在这里供您参考。在

import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

dataset = pd.read_csv('cs.csv')
X = dataset.iloc[:].values

labelencoder = LabelEncoder()

X[:, 0] = labelencoder.fit_transform(X[:, 0])
X[:, 2] = labelencoder.fit_transform(X[:, 2])
X[:, 5] = labelencoder.fit_transform(X[:, 5])

onehotencoder = OneHotEncoder(categorical_features=[0])
X = onehotencoder.fit_transform(X).toarray()

# Avoiding the Dummy Variable Trap
X = X[:, 1:]

相关问题 更多 >