Pandas将字符串类型的Pandas Series转换为唯一的整数ID

Pandas将字符串类型的Pandas Series转换为唯一的整数ID

在本文中,我们将介绍如何将Pandas Series中的字符串类型转换为唯一的整数ID。这可以在数据分析和机器学习中非常有用,特别是在建模之前需要将数据进行预处理的情况下。
阅读更多:Pandas 教程

代码示例

首先,我们将使用以下代码生成一个简单的Pandas Series:

import pandas as pd

data = pd.Series(['apple', 'banana', 'orange', 'banana', 'orange'])

接下来,我们需要将这个Series中的字符串类型转换为唯一的整数ID。我们可以使用Pandas中的pd.factorize()函数实现这一目的。此函数将字符串类型转换为整数类型,并返回两个值:第一个值是转换后的整数类型Series,第二个值是转换后的唯一字符串列表。

data_encoded, data_categories = pd.factorize(data)

通过这种方法,我们获得了一个唯一的整数类型Series data_encoded,其中每个字符串类型都被转换成了一个整数ID。同时,变量data_categories包含唯一字符串列表,每个字符串都与一个唯一的整数ID相关联。
我们可以用以下代码输出这些结果:

print(data_encoded)

# Output:
# [0 1 2 1 2]

print(data_categories)

# Output:
# ['apple', 'banana', 'orange']

因此,我们可以看到,唯一的整数ID序列是[0, 1, 2, 1, 2],对应的唯一字符串列表是['apple', 'banana', 'orange']

如何在DataFrame中使用

如果我们要在DataFrame中使用这个唯一的整数ID序列,我们可以使用pd.DataFrame()函数将其转换为一个新的DataFrame列:

df = pd.DataFrame(data, columns=['fruits'])
df['fruits_id'] = data_encoded

这将在DataFrame中创建一个新的列fruits_id,其中包含了Pandas Series中字符串类型的唯一整数ID。

处理缺失值

如果我们的Pandas Series包含了一些缺失值,我们可以使用pd.Categorical()函数将其转换为包含缺失值的唯一字符串列表:

data_with_missing = pd.Series(['apple', 'banana', 'orange', None, 'orange'])
data_encoded, data_categories = pd.factorize(pd.Categorical(data_with_missing))

这样做将生成一个包括NaN的唯一字符串列表,并将其转换为整数类型。

转换多列数据

如果我们需要转换整个DataFrame中多列数据的字符串类型为整数类型的唯一ID,我们可以使用以下代码:

df = pd.DataFrame({'fruits': ['apple', 'banana', 'orange', 'banana', 'orange'],
                   'vegetables': ['carrot', 'potato', 'celery', 'onion', 'celery']})

categories = {}
for column in df.columns:
    encoded, categories[column] = pd.factorize(df[column])

    df[column + '_id'] = encoded

print(df)

这将生成一个新的DataFrame,其中包括原始列和每列对应的整数类型列。

总结

通过使用pd.factorize()函数,我们可以将Pandas Series中的字符串类型转换为唯一的整数ID。这对于处理数据集和进行机器学习建模非常有用。该技巧还可以扩展到DataFrame中的多列数据的预处理。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程