Skip to content
Starslayerx edited this page Mar 18, 2021 · 29 revisions

green-pi
Pandas(panel data)基于Numpy,其主要数据类型为Series和DataFrame,分别为一维和二维数据表,还有Panel类型,用于三维甚至更高维的数据,但很少使用。 pandas_dataframe

import pandas as pd

Pandas基础数据类型

  • Series
    Series是一维的数组型对象,内部嵌套了一个一维的ndarry类型,并含有数据标签index。 分别可以通过valuesindex属性来获取数据值和标签.
    此外还有deype属性表示数据类型,Series.index和Series本身都有有name属性表示其名称
    Series
    (交互式环境下索引在左,值在右) $ \ $
    Series可以执行numpy中的数组运算,运算会作用在values即其内嵌的ndarray上。 生存Series序列主要有以下几种方法:
  1. 使用一维ndarray生成Series
    # index默认从0开始,也可以自行指定
    pd.Series(np.arange(5), index=['a', 'b', 'c', 'd', 'e'])
  2. 使用列表或元组构建
    pd.Series([1,2,3,...])
    pd.Series((4,5,6,...))
  3. 使用字典构建
    $$ 键 \rightarrow index \ 值 \rightarrow values $$
    pd.Series({},index=...)

若修改index后,多出的index对应的值为NaN,缺少的index及其对应的值会消失

  1. 使用DataFrame类型中的某一列构建
    将DataFrame中的一列提取出来就是一个Series类型。frame[column]这样取后原来的column列索引就是获得的Series的name,原来的index也就是之后Series的index。

若要检查Series的缺失值,可以使用isnull()notnull()函数,返回一个对应的布尔数组型的Series


  • DataFrame
    DataFrame为二维数据,行和列分别有索引'index'和'columns',他们都有name属性,但不同于Series其本身并没有name属性。DataFrame也有dtype属性,values为一个二维的ndarray类型。
    pd.DataFrame(data=2d_array, index=[行索引], columns=[列索引], dtype='...')
    DataFrame
    • 列: 通过frame[column]frame.column都可以获取列,但后则只有在列名为python变量名时才有效,前者还可以用来添加一列。 若要删除列,可以使用del语句del frame[column]
    • 行: 行可以通过位置特殊属性loc进行选取 此外,还可以对行列进行转置frame.T,index将会和column交换

  • Index
    Index为索引对象,Series和DataFrame都有索引对象,但不一定就是Index,还可能为RangeIndex Int64Index等多种形式,但他们都是索引类型。
一些索引对象的方法 描述
append 将额外索引粘贴到原索引,产生一个新索引
difference 两个索引的差集
intersection 交集
union 并集
isin 每个值是否在传入容器中
delete 将i位置元素删除,产生新索引
drop 删除指定的元素,产生新索引
insert 在i位置插入元素,产生新索引
is_monotonic 是否递增
is_unique 索引是否唯一
unique 去除重复索引

元素索引

  • 重建索引
    DataFrame.reindex()函数可以重建索引

    DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)

    reindex方法的参数

    参数 描述
    index 可以为索引类型或者py其他数据结构,替换index(新的index的值不会继承原来位置的值,默认为Nan)
    columns 替换columns索引
    method 'fill'向前填充, 'bfill'向后填充(对str类型没有用,str类型无法比大小)
    fill_value 用于填充Nan
    limit 向前后填充时填充的最大行数
    copy True总是复制底层数据
  • 删除行列

    pd.drop([], axis=0/1, inplace=True)

    axis: 删除指定的index行或columns列
    inplace: 表示是否改变原对象

  • 选择数据 使用loc和iloc选择数据

    # 使用索引名选取数据
    DataFrame.loc[[index], [columns]]
    
    # 按索引顺序选取数据
    DataFrame.iloc[[index_number], [columns_number]]

    下面是DataFrame索引选项表

    类型 描述
    df[val] 访问列
    df.loc[] 访问单或多
    df.iloc[] $\uparrow$
    df.loc[:, n] 访问单或多
    df.iloc[:, n] $\uparrow$
    df.at[label_i, label_j ] 根据行列访问单个元素
    df.iat[label_i, label_j ] $\uparrow$
    get_value set_value 根据行和列设置单个值

Clone this wiki locally