文章目录
二、Pandas对象简介
1.Pandas的Series对象
Pandas 的 Series 对象是一个带索引数据构成的一维数组。
(注意Series中S大写)
Series 对象将一组数据和一组索引绑定在一起
和 NumPy 数组一样,数据可以通过 Python 的中括号索引标签获取
Pandas 的 Series 对象比它模仿的一维 NumPy 数组更加通用、灵活。
1).Serise是通用的NumPy数组
NumPy 数组通过隐式定义的整数索引获取数值,而 Pandas 的Series 对象用一种显式定义的索引与数值关联。显式索引的定义让 Series 对象拥有了更强的能力。
pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
- 自定义索引
2). Series是特殊的字典
Series 对象其实是一种将类型键映射到一组类型值的数据结构。类型至关重要,使得它在某些操作上比Python 的字典更高效。
索引默认按照顺序排列。典型的字典数值获取方式仍然有效。
3). 创建Series对象
pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
data : array-like, dict, or scalar value
Contains data stored in Series
index 是一个可选参数, data 参数支持多种数据类型。
上述可知,data可以是列表、numpy数组、字典来创建Series对象。data本身是一个Series对象也没问题。
另外,data还可以是标量,创建 Series 对象时会重复填充到每个索引上
每一种形式都可以通过显式指定索引筛选需要的结果。
2.Pandas的DataFrame对象
和Series 对象一样, DataFrame既可以作为一个通用型 NumPy 数组,也可以看作特殊的 Python 字典。
(注意DataFrame中D和F大写)
1). DataFrame是通用的NumPy数组
DataFrame 可以看作是一种既有灵活的行索引,又有灵活列名的二维数组。可以把 DataFrame 看成是有序排列的若干 Series 对象。
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
取索引名和列名
2). DataFrame是特殊的字典
字典是一个键映射一个值,而 DataFrame 是一列映射一个 Series 的数据。
切片取值见下一节。
3).创建DataFrame对象
pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
data : numpy ndarray (structured or homogeneous), dict, or DataFrame
Dict can contain Series, arrays, constants, or list-like objects
可见创建DataFrame的方法有很多种
-
单个Series
-
字典列表
-
Series对象字典
上文中的DataFrame对象states就是用Series 对象字典un_dict构造的 -
NumPy 二维数组
dataframe二维数据(矩阵):
x=df.values
.values可以使得series或dataframe转array
- NumPy 结构化数组
- 其他列表样式对象
3. Pandas的Index对象
Series 和 DataFrame 对象都使用便于引用和调整的显式索引。可以将Index 对象看作是一个不可变数组或有序集合(实际上是一个多集,因为 Index 对象可能会包含重复值)。
(注意Index中I大写)
1).将Index看作不可变数组
可以通过标准 Python 的取值方法获取数值,也可以通过切片获取数值
与 NumPy 数组相似的属性,但 Index 对象的索引是不可变的,Index 对象的不可变特征使得多个 DataFrame 和数组之间进行索引共享时更加安全
2).将Index看作有序集合
Index 对象遵循 Python 标准库的集合(set)数据结构的许多习惯用法,包括并集、交集、差集等
备注:
tolist()序列转列表
df_hx['核心品类'].tolist()