pandas dtype
1. 介绍
在使用 pandas 进行数据分析和处理的过程中,dtype 是一个重要的概念。dtype 是 pandas 中的一个数据类型,用于描述数据的类型和内存占用。pandas 提供了多种 dtype 类型,每种类型都有不同的特点和适用场景。在本篇文章中,我们将详细介绍 pandas 的 dtype,包括各种常用 dtype 的含义和用法。
2. 基本数据类型
2.1 int64 和 float64
在 pandas 中,int64 和 float64 是最常见的数据类型。它们分别用于存储整数和浮点数。
import pandas as pd
data = {'A': [1, 2, 3],
'B': [1.1, 2.2, 3.3]}
df = pd.DataFrame(data)
print(df.dtypes)
输出如下:
A int64
B float64
dtype: object
从输出可以看出,列 A 的数据类型是 int64,列 B 的数据类型是 float64。
2.2 bool
bool 是用于存储布尔值的数据类型。布尔值只有两个取值,即 True 和 False。
import pandas as pd
data = {'A': [True, False, True]}
df = pd.DataFrame(data)
print(df.dtypes)
输出如下:
A bool
dtype: object
从输出可以看出,列 A 的数据类型是 bool。
2.3 object
object 是一种特殊的数据类型,表示该列的数据类型不属于以上提到的基本数据类型。一般情况下,object 类型是用来存储字符串的。
import pandas as pd
data = {'A': ['foo', 'bar', 'baz']}
df = pd.DataFrame(data)
print(df.dtypes)
输出如下:
A object
dtype: object
从输出可以看出,列 A 的数据类型是 object。
3. 时间类型
3.1 datetime64
datetime64 是用于存储日期和时间的数据类型。它可以精确到纳秒级别。我们可以将字符串转换成 datetime64 类型,也可以将 datetime64 类型转换成字符串。
import pandas as pd
data = {'A': ['2021-01-01', '2022-01-01', '2023-01-01']}
df = pd.DataFrame(data)
df['A'] = pd.to_datetime(df['A'])
print(df.dtypes)
输出如下:
A datetime64[ns]
dtype: object
从输出可以看出,列 A 的数据类型是 datetime64。
3.2 timedelta64
timedelta64 是用于存储时间间隔的数据类型。它表示两个时间点之间的时间差。
import pandas as pd
data = {'A': pd.to_datetime(['2021-01-01', '2022-01-01', '2023-01-01']),
'B': pd.to_datetime(['2021-01-02', '2022-02-03', '2023-03-04'])}
df = pd.DataFrame(data)
df['C'] = df['B'] - df['A']
print(df.dtypes)
输出如下:
A datetime64[ns]
B datetime64[ns]
C timedelta64[ns]
dtype: object
从输出可以看出,列 C 的数据类型是 timedelta64。
4. 分类数据类型
pandas 0.15 版本引入了分类数据类型,它用于存储有限个数的离散值,可以显著提高性能和内存使用效率。
import pandas as pd
data = {'A': ['foo', 'bar', 'baz', 'foo']}
df = pd.DataFrame(data)
df['A'] = df['A'].astype('category')
print(df.dtypes)
输出如下:
A category
dtype: object
从输出可以看出,列 A 的数据类型是 category。
5. 自定义数据类型
除了以上介绍的数据类型,我们还可以自定义数据类型。为了展示自定义数据类型,我们将自定义一个 Money 类型,用于存储金额。
import pandas as pd
import numpy as np
class MoneyType(pd.api.extensions.ExtensionDtype):
@property
def name(self):
return 'money'
@property
def type(self):
return np.dtype('float64')
@classmethod
def construct_from_string(cls, string):
return MoneyType()
data = {'A': [100, 200, 300]}
df = pd.DataFrame(data)
df['A'] = df['A'].astype(MoneyType())
print(df.dtypes)
输出如下:
A money
dtype: object
从输出可以看出,列 A 的数据类型是 money。
6. 更改数据类型
我们可以使用 astype() 方法来更改列的数据类型。
import pandas as pd
data = {'A': [1, 2, 3]}
df = pd.DataFrame(data)
df['A'] = df['A'].astype(float)
print(df.dtypes)
输出如下:
A float64
dtype: object
从输出可以看出,列 A 的数据类型已经从 int64 更改为 float64。
7. 总结
在本篇文章中,我们介绍了 pandas 中的 dtype,包括基本数据类型、时间类型、分类数据类型和自定义数据类型。了解这些数据类型的特点和用法,可以帮助我们更好地进行数据分析和处理。通过更改数据类型,我们可以将数据转换成合适的形式,以便进行进一步的计算和分析。在实际操作中,我们应该根据数据的特点和需求选择合适的数据类型,以提高代码的效率和可读性。