如何在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转换为最佳数据类型。

  • 将`errors`参数的值设置为`'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。

  • 我们创建一个包含混合数据类型的示例DataFrame,包括对象、int64和字符串值。

  • 我们使用`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()`方法自动检测每列的最佳数据类型。

为每列选择合适的数据类型对于优化内存使用和提高数据分析性能至关重要。

更新于:2023年8月3日

浏览量:1000+

启动您的职业生涯

完成课程获得认证

开始学习
广告