Pandas 数据框中的字符串值

数据挖掘 机器学习 Python 数据清理 熊猫 喀拉斯
2022-02-18 12:54:18

假设我有一个这样的数据框:

Hospital_name    State    Employees    ......
Fortis           Delhi    5000         ......
AIIMS            Delhi    1000000      ......
SuperSpeciality  Chennai  1000         ......

现在我想用这个数据框来构建一个机器学习模型来进行预测分析。为此,我必须将字符串转换为浮点值。此外,Hospital_name 和 State 中的某些列包含“NAN”值。在这种情况下,我应该如何准备我的数据以在 Keras 中构建模型?

4个回答

要在 pandas 中从字符串转换为浮点数(假设您要转换员工并使用 df 加载数据框),您可以使用:

df['Employees'].apply(lambda x:float(x))

您没有提供有关您的输入和预期输出的足够信息。因此,让我们假设作为模型输入的医院名称或任何相关内容是nan. 您想将其从数据集中删除,因为从 ' nan' 中提取特征没有意义。除此之外,如果它们只是其他外围功能,那可能没问题。在这种情况下,如果您希望将它们转换为空白,请使用:

df.replace(np.nan,' ', regex=True)`

否则,如果您想删除该框架,您可以使用this检查 nan 。

处理类型的最佳方法是在摄取文件时指定它:

pandas.read_csv(file_name, dtype={"Employees": float})

如何处理 Keras 中的缺失数据取决于您自己。您可以进一步详细说明,因为它实际上取决于您的计划。

我不明白你为什么要将字符串映射到浮点数。我建议使用一种热编码将字符串分类为布尔值 1 或 0。

在熊猫中,这将是:

import pandas as pd
s = pd.Series(list('abca'))
pd.get_dummies(s)

   a  b  c
0  1  0  0
1  0  1  0
2  0  0  1
3  1  0  0

您还可以添加pd.get_dummies(l, dummy_na=True)处理 NaN 值。

一种更直接的转换Employees方式float

df.Employees = df.Employees.astype(float)

您没有指定要对 NaN 做什么,但可以使用以下方法将它们替换为不同的值(int 或 string):

df = df.fillna(value_to_fill)

如果要删除其中的行,请NaN使用:

df = df.dropna()