相关文章推荐
谈吐大方的拐杖  ·  How do i...using ...·  4 月前    · 
憨厚的课本  ·  java tts 离线 ...·  1 年前    · 
爱听歌的猴子  ·  React ...·  1 年前    · 
读研的水煮鱼  ·  {Day25}DataStore-Proto ...·  1 年前    · 

数据框类似于二维的关系表,包含一组有序的列,列与列之间的数据类型可以是不同的,但是单个列的数据类型是相同的。数据框的每一列或每一行都可以认为是一个Series。

DataFrame中面向行和面向列的操作基本上是相同的,把行和列称作轴(axis),DataFrame是按照轴进行操作的,axis=0表示行轴;axis=1 表示列轴。

在操作DataFrame的函数中,通常有沿着轴来进行操作,沿着axis=0,表示对一列(column)的数据进行操作;沿着axis=1,表示对一行(row)的数据进行操作。

axis{0 or ‘index’, 1 or ‘columns’}, default 0
Axis along which the function is applied:

  • 0 or ‘index’: apply function to each column.
  • 1 or ‘columns’: apply function to each row.
  • DataFrame对象既有行索引(index),也有列索引(columns),行索引也叫做行标签,列索引也叫做列标签/列名。在DataFrame的构造函数中,columns参数用于设置列索引,index用于设置行索引,都属于Index类型。Index对象既可以使用位置(整数)来表示,也可以使用标签(字符串)来表示,位置的起始值是0,标签是通过列表来指定的。

    一,创建数据框

    数据框的基础构造函数是DataFrame,从array-like的结构中构造数据框:

    pandas.DataFrame(data=None, index=None, columns=None)

    参数注释:

  • data:ndarray、list 或dict
  • index:行索引
  • columns:列名列表
  • 除了基础构造函数之外,还有 DataFrame.from_records DataFrame.from_dict ,专门用于从元组 和 字典中创建数据框。

    通常情况下,我们使用pd.DataFrame()函数来创建数据框,当然也可以根据需要使用pd.DataFrame.from_dict()函数来创建数据框。

    1,使用 字典 来创建数据框

    通过等长的字典来创建数据框,并可以设置数据框的列名和行索引。字典存储的是每列的数据:

    >>> data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
    ...     'year': [2000, 2001, 2002, 2001, 2002],
    ...     'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
    >>> row_index = ['one', 'two', 'three', 'four', 'five']
    >>> col_names=['year', 'state', 'pop']
    >>> df=pd.DataFrame(data,columns=col_names,index=row_index)
           year   state  pop
    one    2000    Ohio  1.5
    two    2001    Ohio  1.7
    three  2002    Ohio  3.6
    four   2001  Nevada  2.4
    five   2002  Nevada  2.9

    2,使用列表(列表项是List)来创建数据框

    列表项是列表,把该列表转换为DataFrame:

    students = [ ['jack', 34, 'Sydeny'] ,
                 ['Riti', 30, 'Delhi' ] ,
                 ['Aadi', 16, 'New York'] ]
    df = pd.DataFrame(students) 

    3,使用列表(列表项是元组)来创建数据框

    列表项是元组,把该列表转换为DataFrame:

    students = [ ('jack', 34, 'Sydeny') ,
                 ('Riti', 30, 'Delhi' ) ,
                 ('Aadi', 16, 'New York') ]
    df = pd.DataFrame(students) 

    4,使用from_dict创建数据框

    data是一个字典结构,字典的Key是列名,Value是一个列表,通过这种格式创建数据框:

    >>> data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
    >>> pd.DataFrame.from_dict(data)
       col_1 col_2
    0      3     a
    1      2     b
    2      1     c
    3      0     d

    5,DataFrame和Series之间可以相互转换

    从DataFrame中获取一行或一列,获得的对象是一个序列。

    Series可以通过to_frame()函数转换为DataFrame类型,但是之前的列名变成了索引。可以通过T转置把行索引转置成列标签:

    s=df.iloc[0]
    df_1row=s.to_frame().T

    二,数据框的属性

    数据框的属性主要是索引、列名、数据类型和值,对于一下数据框

    1,轴标签

    通过index属性来访问数据框的行标签,通过columns属性访问数据框的列标签:

    >>> df.index
    Index(['one', 'two', 'three', 'four', 'five'], dtype='object')
    >>> df.columns
    Index(['year', 'state', 'pop'], dtype='object')

    2,数据类型

    查看数据框各列的数据类型

    >>> df.dtypes
    year       int64
    state     object
    pop      float64
    dtype: object

    查看数据框中某一列的数据类型:

    df['col_name'].dtypes
    df.col_name.dtypes

    3,数据框的值

    values属性以数组形式显示数据框的值:

    >>> df.values
    array([[2000, 'Ohio', 1.5],
           [2001, 'Ohio', 1.7],
           [2002, 'Ohio', 3.6],
           [2001, 'Nevada', 2.4],
           [2002, 'Nevada', 2.9]], dtype=object)

    4,数据框的轴和形状

    >>> df.axes
    [Index(['one', 'two', 'three', 'four', 'five'], dtype='object'), Index(['year', 'state', 'pop'], dtype='object')]
    >>> df.shape
    (5, 3)

    三,轴操作

    1,追加列

    通过为一个新列赋值来向数据框中追加新列,新列始终处于列名序列的末尾:

    >>> df['new']='a'

    2,插入列

    要指定新列的位置,需要使用insert()函数,该函数向数据框中插入一列,并制定新列的位置:

    DataFrame.insert(loc, column, value)

    参数注释:

  • loc:插入列的位置,该位置索引必须0 <= loc <= len(columns)
  • column:插入列的名称
  • value:插入列的值,可以是单个标量值,插入列的值都是相同的;可以是序列或array-like,为每一行的列设置一个值。
  • 举个例子,向df的末尾插入一列,列值都是a:

    >>> df.insert(3,'new','a')

    3,删除列或行

    使用drop()函数来删除行或列:

    DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

    参数注释:

  • labels 和 axis:labels参数指定要删除的标签,如果axis=0 或 'index',表示行标签;如果axis=1 或 'columns',表示列标签。axis的默认值是0。
  • index:设置index 等价于设置 labels 和axis=0;
  • columns:设置columns等价于设置 labels和 axis=1;
  • 举个例子,把df的列new删除:

    >>> df.drop(labels='new',axis=1)

    四,列数据类型转换

    astype(dtype) 函数用于把数据框的列转换为特定的类型,dtype可以是pandas支持的类型,也可以是numpy.dtype,也可以是Python类型:

    把数据框的列改变为字符串类型,str是python类型,'object'是pandas支持的字符串类型:

    df['col_name'].astype(str)
    df['col_name'].astype('object')

    其他转换类型的函数

    使用Pandas提供的函数如to_numeric()、to_datetime()

    参考文档:

    pandas DataFrame

    作者 悦光阴
    本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。