Pandas DataFrame中的转换函数

Pandas DataFrame中的转换函数

Pandas是Python中最强大的库之一,提供了高性能的数据处理和分析工具,它允许我们使用DataFrame来处理表格数据,如电子表格、CSV和SQL数据。

DataFrame是一个二维带标签的数据结构,它以行和列的形式表示数据。每列中的数据可能具有不同的数据类型。

DataFrame:
    Integers    Floats      Strings Dates
0   1.0     1.300       p       2023-05-07
1   2.0     NaN         y       2023-05-14
2   5.0     4.600       t       2023-05-21
3   3.0     1.020       h       2023-05-28
4   6.0     0.300       o       2023-06-04
5   NaN     0.001       n       2023-06-11

上面示范的DataFrame具有6行和4列,并且每行中的数据具有不同的数据类型。

并且, 转换函数 用于将DataFrame对象中的元素的数据类型转换。在本文中,我们将讨论Pandas DataFrame中的不同类型转换函数。

输入输出场景

让我们看一下输入输出场景,以了解如何使用转换函数进行类型转换。

假设我们有一个包含几列不同数据类型的DataFrame,并且在输出中,我们将看到具有更新的列数据类型的DataFrame。

Input DataFrame:
   ints strs  ints2  floats
0     1    x   10.0     NaN
1     2    y    NaN   100.5
2     3  NaN   20.0   200.0

Data Types of the each column is: 
ints        int64
strs       object
ints2     float64
floats    float64

Output DataFrame:
   ints  strs  ints2  floats
0     1     x     10    <NA>
1     2     y   <NA>   100.5
2     3  <NA>     20   200.0

Data Types of the resultant DataFrame is: 
ints        Int64
strs       string
ints2       Int64
floats    Float64

DataFrame.convert_dtypes() 函数

pandas DataFrame.convert_dtypes() 函数用于将列的数据类型转换为最适合的类型,使用支持 pd.NA 的 dtypes,并返回一个具有更新 dtypes 的新 DataFrame 对象。

语法

DataFrame.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True)

参数

所有参数的默认值都为True。这些参数用于指示是否应将对象的数据类型转换为最佳的数据类型。

示例

在这个示例中,我们将使用.convert_dtypes()方法来转换DataFrame列的数据类型。

import pandas as pd
import numpy as np

df = pd.DataFrame({"a":[1, 2, 3],
   "b": ["x", "y", "z"],
   "c": [True, False, np.nan],
   "d": ["h", "i", np.nan],
   "e": [10, np.nan, 20],
   "f": [np.nan, 100.5, 200]})
print("Input DataFrame:")
print(df)
print('Data Types of the each column is: ')
print(df.dtypes)

# Convert the data type of columns
result = df.convert_dtypes()
print("Output DataFrame:")
print(result)
print('Data Types of the resultant DataFrame is: ')
print(result.dtypes)

输出

Input DataFrame:
   a  b      c    d     e      f
0  1  x   True    h  10.0    NaN
1  2  y  False    i   NaN  100.5
2  3  z    NaN  NaN  20.0  200.0

Data Types of the each column is: 
a      int64
b     object
c     object
d     object
e    float64
f    float64
dtype: object

Output DataFrame:
   a  b      c     d     e      f
0  1  x   True     h    10   
1  2  y  False     i    100.5
2  3  z         20  200.0

Data Types of the resultant DataFrame is: 
a      Int64
b     string
c    boolean
d     string
e      Int64
f    Float64
dtype: object

最初,我们使用dtypes()方法检查DataFrame列的数据类型。然后使用convert_dtypes()方法将列“b”的数据类型转换为字符串,c转换为布尔值,“d”转换为字符串,以及将“e”转换为int64。

DataFrame.astype()函数

pandas的DataFrame.astype()函数用于将pandas对象的数据类型转换为指定的dtype。以下是语法-

DataFrame.astype(dtype, copy, errors)

参数

  • dtype:数据类型,或者字典 {col: dtype, …},其中col是列标签,dtype是numpy.dtype或Python类型,用于将DataFrame的一个或多个列转换为特定的数据类型。

  • copy:默认值为True,指示是在原始DataFrame中进行更改(False)还是创建副本(True)。

  • errors:默认值为’raise’。指示在错误上忽略错误还是引发异常的参数。

示例

在这个示例中,我们将使用astype()函数将所有列的数据类型转换为对象类型。

import pandas as pd
df = pd.DataFrame({'Integers':[1, 2, 5, 3, 6, 0],
   'Floats': [1.3, None, 4.6, 1.02, 0.3, 0.001],
   'Strings': ['p', 'y', 't', 'h', 'o', 'n'],
   'Dates': pd.date_range('2023-05-04', periods=6, freq='W')})
print("Input DataFrame:")
print(df)
print('Data Types of each column is: ')
print(df.dtypes)

# Convert the data type of columns
result = df.astype('object')
print("Output DataFrame:")
print(result)
print('Data Types of the resultant DataFrame is: ')
print(result.dtypes)

输出

Input DataFrame:
   Integers  Floats Strings      Dates
0         1   1.300       p 2023-05-07
1         2     NaN       y 2023-05-14
2         5   4.600       t 2023-05-21
3         3   1.020       h 2023-05-28
4         6   0.300       o 2023-06-04
5         0   0.001       n 2023-06-11

Data Types of each column is: 
Integers             int64
Floats             float64
Strings             object
Dates       datetime64[ns]
dtype: object

Output DataFrame:
  Integers Floats Strings                Dates
0        1    1.3       p  2023-05-07 00:00:00
1        2    NaN       y  2023-05-14 00:00:00
2        5    4.6       t  2023-05-21 00:00:00
3        3   1.02       h  2023-05-28 00:00:00
4        6    0.3       o  2023-06-04 00:00:00
5        0  0.001       n  2023-06-11 00:00:00

Data Types of the resultant DataFrame is: 
Integers    object
Floats      object
Strings     object
Dates       object
dtype: object

将所有列的数据类型转换为对象类型。

示例

让我们通过使用字典来转换几列的数据类型,再看一个示例。

import pandas as pd
df = pd.DataFrame({'Integers':[1, 2, 5, 3, 6, 0],
   'Floats': [1.3, None, 4.6, 1.02, 0.3, 0.001],
   'Strings': ['p', 'y', 't', 'h', 'o', 'n'],
   'Dates': pd.date_range('2023-05-04', periods=6, freq='W')})
print("Input DataFrame:")
print(df)
print('Data Types of each column is: ')
print(df.dtypes)

# Convert the data type of columns
result = df.astype({'Floats':'object', 'Strings': 'category'})
print("Output DataFrame:")
print(result)
print('Data Types of the resultant DataFrame is: ')
print(result.dtypes)

输出

Input DataFrame:
   Integers  Floats Strings      Dates
0         1   1.300       p 2023-05-07
1         2     NaN       y 2023-05-14
2         5   4.600       t 2023-05-21
3         3   1.020       h 2023-05-28
4         6   0.300       o 2023-06-04
5         0   0.001       n 2023-06-11

Data Types of each column is: 
Integers             int64
Floats             float64
Strings             object
Dates       datetime64[ns]
dtype: object

Output DataFrame:
   Integers Floats Strings      Dates
0         1    1.3       p 2023-05-07
1         2    NaN       y 2023-05-14
2         5    4.6       t 2023-05-21
3         3   1.02       h 2023-05-28
4         6    0.3       o 2023-06-04
5         0  0.001       n 2023-06-11

Data Types of the resultant DataFrame is: 
Integers             int64
Floats              object
Strings           category
Dates       datetime64[ns]
dtype: object

“Floats”和“Strings”两列被转换为object和category dtypes类型。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 精选笔记