import numpy as np
import pandas as pd
print(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 pd
import 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], # 索引列
}
# 创建 DataFrame
df = pd.DataFrame(data)
# 打印 DataFrame
print(df)
RangeIndex: 3 entries, 0 to 2
Data columns (total 10 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 int_col 2 non-null float64
1 float_col 3 non-null float64
2 bool_col 3 non-null bool
3 str_col 3 non-null object
4 cat_col 3 non-null category
5 datetime_col 3 non-null datetime64[ns]
6 timedelta_col 3 non-null timedelta64[ns]
7 complex_col 3 non-null complex128
8 interval_col 3 non-null interval[int64]
9 index_col 3 non-null int64
dtypes: bool(1), category(1), complex128(1), datetime64[ns](1), float64(2), int64(1), interval(1), object(1), timedelta64[ns](1)
memory usage: 478.0+ bytes
None