3-Pandas基础知识
3.Pandas基础知识
注:本教程使用 pandas 2.1.1版本作为示例,不同版本有一些方法可能存在不同,检查pandas版本 :
import pandas |
3.1 pandas 数据结构
- Series
Series 是Pandas库中的一维数据结构,类似于Python中的列表和Numpy中的Ndarray对象。在具体实践中,我们往往视Series为一列数据。Series可以保存任何类型的数据,如整数、浮点数、字符串、Python对象等。如下图所示:
- 左边红色框中是Series的索引(标签),称为index,可以理解为这个Series列数据中,某一行代表的意义;
右边蓝色框是Series的值,可见里面的数据类型可以是各种。
注意:索引只是起到定位,解释数据的作用,而Series的值才是真正存储的数据。如果没有索引,一般会默认从0开始生成整数索引。
Series的索引可以通过 Series.index 属性获取,而Series对应的值可以通过 Series.loc[index名] 或者 Series.iloc[数字]方法获取。
- DataFrame
DataFrame 是Pandas库中的 二维数据结构 ,类似于Excel表格,可以保存多种数据类型。如下图所示:
DataFrame的索引包括:红框中所示行索引(index)和绿框中所示列索引(columns),行索引和列索引都是标签。蓝色框中才是DataFrame的数据,可见里面的数据类型可以是各种类型。
DataFrame的行索引同样可以通过 DataFrame.index 属性获取,
行数据通过 DataFrame.loc[行索引名] 和 DataFrame.iloc[行序号] 方法获取:DataFrame的列名可以通过 DataFrame.columns 属性获取,
列数据可以通过 DataFrame[列名] 或者 DataFrame.列名
或者 DataFrame.loc[: , 列名] 或者 DataFrame.iloc[: , 列序号] 方法获取:
Index
Index 是 pandas 中的索引对象,上面在介绍 Series 和 DataFrame 时,已经多次提到了索引对象。
它是一种特殊的序列,用于标记数据集中的行(index)和列(columns)。在没有特别指定的情况下,一般都是默认 从 0 开始取整数序号。
常见的 Index 类型有如下几种,不用全部掌握,遇到不会的只需要去查官方文档即可:
RangeIndex:
单调整数范围的索引
官方文档:RangeIndexpd.RangeIndex(-10, 10, 2)
Int64Index:
整数索引
注意,这个方法可能会在未来被舍弃,应尽量使用 pandas.Index 方法代替:pd.RangeIndex(-10, 10, 2)
使用 pandas.Index 替代:
pd.Index([-1, -2, 3, 4], dtype='int64')
UInt64Index:
非负数整数索引
注意,这个方法可能会在未来被舍弃,应尽量使用 pandas.Index 方法代替:pd.UInt64Index([1,2,3,4])
使用 pandas.Index 替代:
pd.Index([1, 2, 3, 4], dtype='uint64')
Float64Index:
浮点数索引
注意,这个方法可能会在未来被舍弃,应尽量使用 pandas.Index 方法代替:pd.Float64Index([1.0,2.0,3.0,4.0])
使用 pandas.Index 替代:
pd.Index([1.0, 2.0, 3.0, 4.0], dtype='float64')
MultiIndex:
多个层次且有归属关系的索引。
官方文档:MultiIndexarrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))CategoricalIndex:
类别索引,可以理解为其他语言中的枚举类型。
官方文档:CategoricalIndexpd.CategoricalIndex(["a", "b", "c", "a", "b", "c"])
IntervalIndex
官方文档:IntervalIndex
间隔索引,代表数值or时间的区间,一般应用于分箱(桶)数据。pd.IntervalIndex.from_arrays([1, 3, 5], [4, 6, 8])
DatetimeIndex
时间索引,标注时序数据的时间,时序数据是算是一种较为特殊的数据吧,因为要求数据带有时间戳,比如股票的数据;所以这个时间索引基本上也就在处理这种数据的时候用到。
官方文档:DatetimeIndexpd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
"2/1/2020 11:00:00+00:00"])TimedeltaIndex
时间差索引,时间长度的数据。
官方文档:TimedeltaIndex不太常用,可以自行参考官方文档。
PeriodIndex
周期索引,表示一定周期的时间点。
官方文档:PeriodIndex不太常用,可以自行参考官方文档。
3.2 pandas 数据类型
在Pandas中,存储的数据支持的数据类型主要有以下几种:
名称 | 释义 | 例子 |
---|---|---|
浮点数(float) | 用于存储浮点实数。 | 1.0、2.234、3.4E-6 |
整数(int) | 用于存储整数。 | 1、2、3、4 |
布尔值(bool) | 用于存储真假值。 | True、False |
时间和日期类型(timedelta[ns], datetime64[ns]) | 用于存储时间间隔和日期时间。 | 2019-01-01 12:00:00 |
字符串(object) | pandas用object存储字符串。 当一列中含多种类型的数据时,该列的数据类型通常为object。 | ‘hello’、’world’ |
复合数据类型(object) | pandas也用object存储复杂的数据结构,如(list, dict, tuple)。 | [1, 2, 3]、{‘a’: 1, ‘b’: 2}、(1, 2, 3) |
关于数据类型,大概知道以上表格内容基本就能应付大多数情况了,如果想要知道更多的细节内容,可以点此参考官方文档。
假设有 DataFrame 对象 dft,可以通过 dft.dtypes 属性获取 df 中所有列的数据类型。如下所示: