pandas 字符转数字
引言
在数据处理和分析过程中,我们经常会遇到一些包含字符的数据,而这些数据常常需要转换为数字以便于进行计算和分析。例如,一个包含销售金额的数据列,可能会以字符串的形式呈现,我们需要将其转换为数字型数据进行统计和分析。在 Python 语言中,使用 Pandas 库可以非常方便地将字符串数据转换为数字型数据,并进行进一步的处理和分析。本文将详细介绍使用 Pandas 进行字符转数字的方法和技巧。
字符串类型数据的转换概述
在 Python 中,Pandas 使用astype()
函数将字符串类型数据转换为其他类型数据。在将字符串转换为数字的过程中,我们通常会遇到以下情况和问题:
- 字符串中包含其他非数字字符:某些数据中包含了不仅仅是数字的字符,例如”¥1,000″、”23kg”等。在转换为数字的过程中,我们通常需要剔除这些非数字字符。
- 字符串类型数据被错误地加载为对象类型:有时候在 Pandas 读取数据时,由于数据中包含了一些异常值,或是 Pandas 库在读取数据时的一些问题,导致本应为数字型的数据被错误地加载成了对象(object)类型。在此情况下,需要将对象类型转换为数字类型。
- 需要处理缺失值:数据中可能包含缺失值,例如”NaN”、”NA”、空字符串等。在进行字符转数字的过程中,需要特殊处理这些缺失值。
下面将分别对上述情况进行详细解释和演示。
1. 字符串中包含其他非数字字符
当数据中包含其他非数字字符时,我们需要先剔除这些非数字字符,然后再将剩余的数字字符转换为数字型数据。
1.1 剔除非数字字符
在 Pandas 中,可以使用str.replace()
函数来替换字符串中的字符。例如,我们要将字符串”¥1,000″中的非数字字符”¥”和”,”剔除,可以使用如下代码:
import pandas as pd
# 创建一个包含非数字字符的 Series
s = pd.Series(['¥1,000', '¥2,000', '¥3,000'])
# 剔除非数字字符
s = s.str.replace('[¥,]', '', regex=True)
print(s)
运行上述代码,输出如下:
0 1000
1 2000
2 3000
dtype: object
通过正则表达式[¥,]
,将字符串中的”¥”和”,”替换为空字符串,从而将非数字字符剔除。
1.2 转换为数字型数据
剔除非数字字符后,将剩余的数字字符转换为数字型数据。在 Pandas 中,可以使用astype()
函数将字符串类型数据转换为数字类型。例如,我们将上文中剔除非数字字符后的 Series 转换为整数类型(int):
# 转换为数字型数据
s = s.astype(int)
print(s)
运行上述代码,输出如下:
0 1000
1 2000
2 3000
dtype: int64
通过astype(int)
将剩余的数字字符转换为整数类型。
2. 字符串类型数据被错误地加载为对象类型
在使用 Pandas 读取数据时,有时候会出现将本应为数字型数据加载成对象(object)类型的情况。对于这种情况,我们需要将对象类型转换为数字类型。
2.1 查看数据类型
首先,我们需要查看数据的类型,判断是否存在将数字型数据错误地加载为对象类型的情况。可以使用dtype
属性查看数据类型。例如,我们读取一个包含数字和字符串的 CSV 文件,并查看数据类型:。
# 读取 CSV 文件
df = pd.read_csv('data.csv')
# 查看数据类型
print(df.dtypes)
运行上述代码,输出为各列的数据类型信息。
2.2 转换为数字型数据
如果发现有列被错误地加载为对象类型,我们可以使用astype()
函数将其转换为数字类型。例如,我们将名为amount
的列转换为浮点数类型(float):
# 将 `amount` 列转换为浮点数类型
df['amount'] = df['amount'].astype(float)
print(df.dtypes)
运行上述代码,输出为转换后的数据类型信息。
3. 处理缺失值
在字符转换数字的过程中,我们常常需要处理数据中的缺失值。Pandas 会将不同类型的缺失值表示为 NaN(Not a Number)。如果数据中包含缺失值,可以使用fillna()
函数将缺失值替换为其他特定值,例如0
、平均值、中位数等。
3.1 替换缺失值
在 Pandas 中,使用fillna()
函数来替换缺失值。例如,我们将数据中的缺失值替换为0
:
# 将缺失值替换为 0
df = df.fillna(0)
print(df)
运行上述代码,输出为缺失值被替换为0
后的数据。
3.2 计算缺失值的个数
在处理缺失值时,有时候需要统计缺失值的个数。可以使用isnull()
函数和sum()
函数来计算缺失值的个数。
# 计算缺失值的个数
count = df.isnull().sum()
print(count)
运行上述代码,输出为各列缺失值的个数。
结论
本文介绍了使用 Pandas 进行字符转数字的方法和技巧。首先,我们了解了字符串中包含其他非数字字符的情况,并演示了剔除非数字字符和转换为数字型数据的方法。其次,我们学习了将字符串类型数据转换为数字型数据的方法,以及处理缺失值的技巧。这些方法和技巧能够帮助我们在数据分析和处理过程中,更加高效地处理和转换字符数据。