
import numpy as npimport pandas as pdprint(df.dtypes)
Pandas 是基于 NumPy 的,它继承了 NumPy 的数据类型系统,并且添加了一些特殊的数据类型,专门用于处理表格数据。以下是 Pandas 中常用的数据类型(dtype)简介:
整型 (int)
表示整数,有不同的大小,例如 int8, int16, int32, int64。
浮点型 (float)
表示浮点数,也有不同的精度,如 float16, float32, float64。
复数型 (complex)
表示复数,包含实部和虚部。
布尔型 (bool)
表示布尔逻辑值 True 或 False。
字符串型 (str)
用于存储文本数据。Pandas 0.23.0 版本以后,字符串型被明确定义。
分类型 (category)
用于存储有限数量的重复文本标签,可以大大节省内存。
日期时间型 (datetime64, datetime)
用于存储日期和时间信息。
时间差型 (timedelta64, timedelta)
表示两个日期或时间点之间的差值。
布尔型(逻辑型)(logical, bool8)
从 Pandas 1.0.0 版本开始,bool 类型被 logical 或 bool8 取代,以提供更准确的布尔值表示。
泛型类型 (object)
用于存储 Python 对象,通常是字符串或混合类型的数据。
稀疏类型 (Sparse)
用于存储稀疏数据,可以是任何 dtype,但只占用很少的存储空间。
区间型 (interval)
用于存储数据的区间范围。
周期型 (Period, period)
用于时间序列分析,表示固定频率的周期。
索引类型 (Index, MultiIndex)
用于 Pandas 索引对象,MultiIndex 用于多级索引。
选择数据类型 (select_dtypes)
一个函数,用于选择具有特定数据类型的列。
| Pandas 类型 | Python 类型 | NumPy类型 | 使用场景 |
|---|---|---|---|
| object | str or mixed | string, unicode, mixed types | 文本或者混合数字 |
| int64 | int | int_, int8, int16, int32, int64, uint8, uint16, uint32, uint64 | 整型数字 |
| float64 | float | float_, float16, float32, float64 | 浮点数字 |
| bool | bool | bool_ | True/False 布尔型 |
| datetime64[ns] | nan | datetime64[ns] | 日期时间 |
| timedelta[ns] | nan | nan | 两个时间之间的距离,时间差 |
| category | nan | nan | 有限文本值,枚举 |
| object | nan | nan | 对象类型,通常用于存储 Python 对象,但主要用于字符串。 |
| complex | nan | nan | 复数类型,用于存储复数值。 |
| interval | nan | nan | 区间类型,用于存储数据的区间范围。 |
| Sparse | nan | nan | 稀疏类型,用于存储稀疏数据,节省内存。 |
import pandas as pdimport numpy as np# 创建数据字典data = {'int_col': [1, 2, np.nan], # 整数列'float_col': [1.1, 2.2, 3.3], # 浮点数列'bool_col': [True, False, True], # 布尔列'str_col': ['apple', 'banana', 'cherry'], # 字符串列'cat_col': pd.Categorical(['red', 'blue', 'red'], categories=['red', 'blue', 'green']), # 分类列'datetime_col': pd.to_datetime(['2021-01-01', '2021-01-02', '2021-01-03']), # 日期时间列'timedelta_col': pd.to_timedelta([1, 2, 3], unit='D'), # 时间差列'complex_col': [1+2j, 3+4j, 5+6j], # 复数列'interval_col': pd.IntervalIndex([pd.Interval(0, 1), pd.Interval(2, 3), pd.Interval(4, 5)]), # 区间列# 'period_col': pd.PeriodIndex(["2021-01", "2021-02", "2021-03"], freq='M'), # 周期列 (不再支持)'index_col': [100, 101, 102], # 索引列}# 创建 DataFramedf = pd.DataFrame(data)# 打印 DataFrameprint(df)
RangeIndex: 3 entries, 0 to 2Data columns (total 10 columns):# Column Non-Null Count Dtype--- ------ -------------- -----0 int_col 2 non-null float641 float_col 3 non-null float642 bool_col 3 non-null bool3 str_col 3 non-null object4 cat_col 3 non-null category5 datetime_col 3 non-null datetime64[ns]6 timedelta_col 3 non-null timedelta64[ns]7 complex_col 3 non-null complex1288 interval_col 3 non-null interval[int64]9 index_col 3 non-null int64dtypes: bool(1), category(1), complex128(1), datetime64[ns](1), float64(2), int64(1), interval(1), object(1), timedelta64[ns](1)memory usage: 478.0+ bytesNone