Pandas - DataFrame类型的对象 - 2. 相关属性

相关属性

  • index
  • columns
  • values
  • shape
  • ndim
  • dtypes

说明:

  • 可以通过index访问行索引,columns访问列索引,values访问数据,其中index与columns也可以进行设置(修改)。
  • 可以为DataFrame的index与columns属性指定name属性值。
  • DataFrame的数据不能超过二维。
# df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], index=["a", "b"], columns=["e", "f", "g"])
# index 返回DataFrame的行索引。
# df.index
# 修改行索引。
# df.index = ["a1", "b1"]
# columns 返回DataFrame的列索引。
# df.columns = ["e1", "f1", "g1"]
# 我们也可以自己先创建Index对象(也可以指定name属性)。
row_index = pd.Index(["a", "b"], name="行索引")
col_index = pd.Index(["e", "f", "g"], name="列索引")
df = pd.DataFrame([[1, 2, 3], [4, 5.3, 6]], index=row_index, columns=col_index)
# df
# values 返回DataFrame所关联的ndarray数组。
# df.values
# shape 返回DataFrame的形状。也就是返回DataFrame所关联的ndarray数组的形状。df.values.shape
# df.shape
# ndim 返回DataFrame维度数。
# df.ndim
# dtypes 返回DataFrame中每一列的数据类型。
# DataFrame与ndarray在数据类型上的体现是不同的。对于ndarray,数组中所有元素的类型都是相同的(整个数组只有一种类型)。如果
# 数组中元素类型不一致,则会找出一种最兼容的类型,来作为ndarray数组的总体类型。对于DataFrame,每个列都可以具有不同的数据类型,
# 这点类似于数据库中的数据表。
# display(df.dtypes)
# display(df)

# DataFrame的数据结构不能超过2维。
# 错误。
# df = pd.DataFrame(np.ones(shape=(3, 3, 3)))

1. index

获得,修改DataFrame的行索引,
没有指定,现在是2行。
Pandas - DataFrame类型的对象 - 2. 相关属性
现在指定a b,
注意:因为不是数值类型了,而是index object类型。
Pandas - DataFrame类型的对象 - 2. 相关属性
修改行索引
Pandas - DataFrame类型的对象 - 2. 相关属性

2. Columns

修改列索引
Pandas - DataFrame类型的对象 - 2. 相关属性

3. 指定 改变 用变量形式

pd.Index 大写
Pandas - DataFrame类型的对象 - 2. 相关属性

4. 设索引名称,加Name

Pandas - DataFrame类型的对象 - 2. 相关属性

5. Values

返回DataFrame所关联的ndarray数组
Pandas - DataFrame类型的对象 - 2. 相关属性

6. Shape

返回DataFrame所关联的数组的形状,
形状,要注意:
意义不在于表面上的形状,
真正的意义在于获得每个维度的长度。

因为shape返回的是一个元组,从高维到低维,每个维度的长度,
知道有多少行,多少列。
Pandas - DataFrame类型的对象 - 2. 相关属性
Df.shape[0] df.shape[1] 行数,列数

Pandas - DataFrame类型的对象 - 2. 相关属性

7. Ndim

返回DataFrame维度数,
没什么意思,因为DataFrame就是二维的。
Pandas - DataFrame类型的对象 - 2. 相关属性

8. Dtypes

Df每一列可以是不同类型
Pandas - DataFrame类型的对象 - 2. 相关属性
对于ndarray而言,我们元素类型必须是相同的,
即使不同,也会兼容 选一种作为总体。

而DataFrame 列里面必须相同 列与列之间可以不同。

如果说数组中元素类型不一致,比如float int,
Ndarray会找到一种最兼容的类型,来作为ndarray数组的总体类型,
而对于DataFrame,某一列内的数据类型要求一样,但列之间不要求一样,
这一点类似于数据库中的数据表 table 每一个字段里面要求相同。

Pandas - DataFrame类型的对象 - 2. 相关属性
Pandas - DataFrame类型的对象 - 2. 相关属性
Pandas - DataFrame类型的对象 - 2. 相关属性
Pandas - DataFrame类型的对象 - 2. 相关属性

9. Ndarray为什么数据类型必须一致?

因为采用紧凑式存储,
要想访问第n个元素,先定位地址,
如何定位,
起始地址+ n * 单个元素的长度。

如果每个元素的长度不一样,就不能快速定位,
Ndarray要求快。

Pandas - DataFrame类型的对象 - 2. 相关属性

DataFrame为什么可以不一样?
字典是以键值对储存,完全不需要挨在一起,
键值对,绑定。

他们两个根本就是不用的键值对,所以不要求一直,
这一列里面要求一直。
5.3 意味着 2 要变成2.0

Pandas - DataFrame类型的对象 - 2. 相关属性

Pandas - DataFrame类型的对象 - 2. 相关属性

10. DataFrame能为3维的吗?

不能
Pandas - DataFrame类型的对象 - 2. 相关属性