Pandas 如何自动转换为最佳数据类型
Pandas是Python中流行的数据处理库,用于清洗和转换数据。它提供了各种功能来转换数据类型,例如astype()方法。然而,手动转换数据类型可能耗时且容易出错。
为了解决这个问题,Pandas在1.0版本引入了一个名为convert_dtypes()的新功能,它可以根据列中的数据自动将列转换为最适合的数据类型。这个功能消除了手动类型转换的需要,并确保数据格式正确。
将Pandas Series的数据类型转换为
考虑下面的代码,在这个例子中,我们将转换Pandas Series的数据类型。
示例
import pandas as pd
# Create a Series with mixed data types
data = pd.Series(['1', '2', '3.1', '4.0', '5'])
# Print the data types of the Series
print("Original data types:")
print(data.dtypes)
# Convert the Series to the best data type automatically
data = pd.to_numeric(data, errors='coerce')
# Print the data types of the Series after conversion
print("\nNew data types:")
print(data.dtypes)
# Print the updated Series
print("\nUpdated Series:")
print(data)
解释
- 使用import语句导入Pandas库。
-
创建一个名为data的Pandas Series,其中包含混合数据类型,包括整数和字符串。
-
使用dtypes属性打印Series的原始数据类型。
-
使用pd.to_numeric()方法自动将Series转换为最佳数据类型。
-
将错误参数的值设置为’coerce’,以强制将任何无效值转换为NaN。
-
使用dtypes属性打印Series的新数据类型。
-
打印更新后的Series。
要运行上述代码,我们需要运行下面显示的命令。
命令
python3 main.py
输出
Original data types:
object
New data types:
float64
Updated Series:
0 1.0
1 2.0
2 3.1
3 4.0
4 5.0
dtype: float64
将Pandas DataFrame的数据类型转换为其他类型进行考虑。考虑以下代码示例:
import pandas as pd
# create a sample dataframe with mixed data types
data = {'name': ['John', 'Marry', 'Peter', 'Jane', 'Paul'],
'age': [25, 30, 40, 35, 27],
'gender': ['Male', 'Female', 'Male', 'Female', 'Male'],
'income': ['500', '1000', '1200', '800', '600']}
df = pd.DataFrame(data)
# print the original data types of the dataframe
print("Original data types:\n", df.dtypes)
# convert 'age' column to float
df['age'] = df['age'].astype(float)
# convert 'income' column to integer by removing the dollar sign
df['income'] = df['income'].str.replace('', '').astype(int)
# print the new data types of the dataframe
print("\nNew data types:\n", df.dtypes)
print("\nDataFrame after conversion:\n", df)
说明
- 首先,我们导入必要的库:Pandas。
-
我们创建一个包含混合数据类型(包括对象、int64和字符串值)的示例DataFrame。
-
我们使用dtypes属性打印DataFrame的原始数据类型。
-
我们使用astype()方法将’age’列转换为浮点数,该方法将列的数据类型转换为指定的类型。
-
我们使用str.replace()方法删除’$’符号,然后使用astype()方法将字符串转换为整数将’income’列转换为整数。
-
我们使用dtypes属性打印DataFrame的新数据类型,以确认数据类型转换。
-
最后,我们打印整个DataFrame以查看转换后的数据类型。
注意: astype()方法用于将Series转换为指定的数据类型,而DataFrame的astype()方法用于将多列的数据类型进行转换。
输出
Original data types:
name object
age int64
gender object
income object
dtype: object
New data types:
name object
age float64
gender object
income int64
dtype: object
DataFrame after conversion:
name age gender income
0 John 25.0 Male 500
1 Marry 30.0 Female 1000
2 Peter 40.0 Male 1200
3 Jane 35.0 Female 800
4 Paul 27.0 Male 600
结论
总之,数据类型转换是数据分析和处理中的重要任务。Pandas为我们提供了各种方法来转换数据类型,比如在加载数据时指定数据类型、使用astype()方法来转换Series或DataFrame,以及使用infer_objects()方法自动检测每列的最佳数据类型。
选择适当的数据类型来优化内存使用和提高数据分析性能是非常重要的。