📅  最后修改于: 2023-12-03 15:38:46.098000             🧑  作者: Mango
在数据分析中,我们常常需要将字符串转换为类别或整数类型,以方便后期分析处理。本文将介绍如何用 Python 将字符串转换为类别或整数类型,并将其应用于数据框中。
将字符串转换为类别的方法是使用 pandas 中的 Categorical 类型。Categorical 类型将字符串转换为类别,并在存储时只存储唯一值,减小了存储空间,并提高了性能。
import pandas as pd
# 创建一个字符串列表
color_list = ['red', 'green', 'blue', 'red', 'green', 'blue']
# 将字符串列表转换为 pandas 的 Categorical 类型
color_cat = pd.Categorical(color_list)
# 打印类别列表
print(color_cat)
输出:
[red, green, blue, red, green, blue]
Categories (3, object): [blue, green, red]
可以看到,Categorical 类型将字符串转换为类别,并自动去重,只保留唯一值。
将字符串转换为整数可以使用字典映射的方法,将每个字符串映射到一个唯一的整数。
# 创建一个字符串列表
fruit_list = ['apple', 'banana', 'orange', 'apple', 'banana', 'mango']
# 创建一个字典,将每个字符串映射为一个唯一的整数
fruit_to_id = {fruit: i for i, fruit in enumerate(set(fruit_list))}
# 将每个字符串映射为整数
fruit_int = [fruit_to_id[fruit] for fruit in fruit_list]
# 打印整数列表
print(fruit_int)
输出:
[1, 2, 0, 1, 2, 3]
可以看到,每个字符串被映射为一个唯一的整数。
现在将上述方法应用于数据框中,将其中的字符串列转换为类别或整数类型。
# 创建一个数据框
df = pd.DataFrame({
'fruit': ['apple', 'banana', 'orange', 'apple', 'banana', 'mango'],
'color': ['red', 'yellow', 'orange', 'red', 'yellow', 'green'],
})
# 将 fruit 列转换为类别
df['fruit_cat'] = pd.Categorical(df['fruit'])
# 将 color 列转换为整数
color_to_id = {color: i for i, color in enumerate(set(df['color']))}
df['color_int'] = [color_to_id[color] for color in df['color']]
# 打印数据框
print(df)
输出:
fruit color fruit_cat color_int
0 apple red apple 0
1 banana yellow banana 1
2 orange orange orange 2
3 apple red apple 0
4 banana yellow banana 1
5 mango green mango 3
可以看到,fruit 列被转换为了类别类型,color 列被转换为了整数类型,数据框中的字符串列得到了有效的转换,方便数据分析和处理。