Pandas核心数据结构
Series
Series 是一维带标签的数组,数组里可以放任意的数据(整数,浮点数,字符串,Python Object)。其基本的创建函数是:
s = pd.Series(data, index=index)
其中 index 是一个列表,用来作为数据的标签。data 可以是不同的数据类型:
- Python 字典
- ndarray 对象
- 一个标量值,如 5
从 ndaray 创建
从字典创建
从标量创建
Series 是类 ndarray 对象
熟悉 numpy 的同学对下面的操作应该不会陌生。我们在 numpy 简介里也介绍过下面的索引方式。
Series 是类字典对象
标签对齐操作
name属性
DataFrame
DataFrame 是二维带行标签和列标签的数组。可以把 DataFrame 想你成一个 Excel 表格或一个 SQL 数据库的表格,还可以相像成是一个 Series 对象字典。它是 Pandas 里最常用的数据结构。
创建 DataFrame 的基本格式是:
df = pd.DataFrame(data, index=index, columns=columns)
其中 index 是行标签,columns 是列标签,data 可以是下面的数据:
- 由一维 numpy 数组,list,Series 构成的字典
- 二维 numpy 数组
- 一个 Series
- 另外的 DataFrame 对象
从字典创建
从结构化数据中创建
从字典列表创建
从元组字典创建
了解其创建的原理,实际应用中,会通过数据清洗的方式,把数据整理成方便 Pandas 导入且可读性好的格式。最后再通过 reindex/groupby 等方式转换成复杂数据结构。
从 Series 创建
特性:
列选择/增加/删除
使用 assign() 方法来插入新列
更方便地使用 methd chains 的方法来实现
索引和选择
对应的操作,语法和返回结果
- 选择一列 -> df[col] -> Series
- 根据行标签选择一行 -> df.loc[label] -> Series
- 根据行位置选择一行 -> df.iloc[label] -> Series
- 选择多行 -> df[5:10] -> DataFrame
- 根据布尔向量选择多行 -> df[bool_vector] -> DataFrame
数据对齐
DataFrame 在进行数据计算时,会自动按行和列进行数据对齐。最终的计算结果会合并两个 DataFrame。
使用 numpy 函数
Pandas 与 numpy 在核心数据结构上是完全兼容的
Panel
Panel 是三维带标签的数组。实际上,Pandas 的名称由来就是由 Panel 演进的,即 pan(el)-da(ta)-s。Panel 比较少用,但依然是最重要的基础数据结构之一。
- items: 坐标轴 0,索引对应的元素是一个 DataFrame
- major_axis: 坐标轴 1, DataFrame 里的行标签
- minor_axis: 坐标轴 2, DataFrame 里的列标签