zoukankan      html  css  js  c++  java
  • pandas中的数据结构-DataFrame

    pandas中的数据结构-DataFrame

    DataFrame是什么?

    表格型的数据结构

    • DataFrame 是一个表格型的数据类型,每列值类型可以不同
    • DataFrame 既有行索引、也有列索引
    • DataFrame 常用于表达二维数据,但可以表达多维数据

    DataFrame创建

    从字典创建

    >>> import pandas as pd
    >>> frame=pd.DataFrame(data)
    >>> data={'name':['a','b','c'],'pay':[4000,5000,7000]}
    >>> frame=pd.DataFrame(data)
    >>> frame
      name   pay
    0    a  4000
    1    b  5000
    2    c  7000
    >>> 
    

    从二维ndarray创建

    >>> import pandas as pd
    >>> import numpy as np
    >>> data=np.array([('a',4000),('b',6000),('c',9000)])
    >>> frame=pd.DataFrame(data,index=range(1,4),columns=['name','pay'])
    >>> frame
      name   pay
    1    a  4000
    2    b  6000
    3    c  9000
    

    DataFrame操作方法

    查看数据集的头和尾

    • head( 1 ) # 查看第一行
    • tail(3) #
    >>> frame
      name   pay
    1    a  4000
    2    b  6000
    3    c  9000
    >>> frame.head(1)
      name   pay
    1    a  4000
    >>> frame.tail(3)
      name   pay
    1    a  4000
    2    b  6000
    3    c  9000
    

    查看索引、列和y numpy 数组

    • .index
    • columns
    • values
    • describe()
    >>> frame.index
    RangeIndex(start=1, stop=4, step=1)
    >>> frame.columns
    Index(['name', 'pay'], dtype='object')
    >>> frames.values
    >>> frame.values
    array([['a', '4000'],
           ['b', '6000'],
           ['c', '9000']], dtype=object)
    >>> frame.describe()
           name   pay
    count     3     3
    unique    3     3
    top       b  9000
    freq      1     1
    

    修改索引index

    >>> frame.index=['x','y','z']
    >>> frame
      name   pay
    x    a  4000
    y    b  6000
    z    c  9000
    

    修改列的标题

    >>> frame.columns=['name1','pay2']
    >>> frame
      name1  pay2
    x     a  4000
    y     b  6000
    z     c  9000
    

    修改特定位置元素

    修改某一行

    >>> frame.values[0]=['d',2]
    >>> frame
      name1  pay2
    x     d     2
    y     b  6000
    z     c  9000
    

    修改某一行的值

    >>> frame.values[1][1]=9000
    >>> frame
      name1  pay2
    x     d     2
    y     b  9000
    z     c  9000
    

    选择数据

    获取某行数据

    >>> frame
      name1  pay2
    x     d     2
    y     b  9000
    z     c  9000
    >>> frame.loc['x']
    name1    d
    pay2     2
    Name: x, dtype: object
    

    按照列获取数据

    >>> frame
      name1  pay2
    x     d     2
    y     b  9000
    z     c  9000
    >>> frame['name1']
    x    d
    y    b
    z    c
    Name: name1, dtype: object
    >>> frame.pay
    1    4000
    2    6000
    3    9000
    Name: pay, dtype: object
    >>> 
    

    切片

    >>> frame.iloc[:2,1]
    1    4000
    2    6000
    Name: pay, dtype: object
    

    修改

    >>> frame['name']='admin'
    >>> frame
        name   pay
    1  admin  4000
    2  admin  6000
    3  admin  9000
    

    删除

    >>> frame
        name   pay
    1  admin  4000
    2  admin  6000
    3  admin  9000
    >>> del frame['name']
    >>> frame
        pay
    1  4000
    2  6000
    3  9000
    

    排序

    对下标排序

    sort_index () 在 指定轴上根据 索引 进行排序,默认升序

    >>> b=pd.DataFrame(np.arange(12).reshape(3,4),index=['a','b','c'])
    >>> b
       0  1   2   3
    a  0  1   2   3
    b  4  5   6   7
    c  8  9  10  11
    >>> b.sort_index(ascending=False)#行坐标降序
       0  1   2   3
    c  8  9  10  11
    b  4  5   6   7
    a  0  1   2   3
    >>> b
       0  1   2   3
    a  0  1   2   3
    b  4  5   6   7
    c  8  9  10  11
    >>> b.sort_index(axis=1,ascending=False)#列坐标降序
        3   2  1  0
    a   3   2  1  0
    b   7   6  5  4
    c  11  10  9  8
    

    对于值排序

    >>> c=b.sort_values(2,ascending=False)
    >>> c
       0  1   2   3
    c  8  9  10  11
    b  4  5   6   7
    a  0  1   2   3
    >>> c=b.sort_values('a',axis=1,ascending=False)#按照axis=1
    >>> c
        3   2  1  0
    a   3   2  1  0
    b   7   6  5  4
    c  11  10  9  8
    

    表格运算

    >>> a=pd.DataFrame(np.arange(12).reshape(3,4))
    >>> b=pd.DataFrame(np.arange(12).reshape(3,4))
    >>> a
       0  1   2   3
    0  0  1   2   3
    1  4  5   6   7
    2  8  9  10  11
    >>> b
       0  1   2   3
    0  0  1   2   3
    1  4  5   6   7
    2  8  9  10  11
    >>> a.add(b)
        0   1   2   3
    0   0   2   4   6
    1   8  10  12  14
    2  16  18  20  22
    >>> a.sub(b)
       0  1  2  3
    0  0  0  0  0
    1  0  0  0  0
    2  0  0  0  0
    >>> a.mul(b)
        0   1    2    3
    0   0   1    4    9
    1  16  25   36   49
    2  64  81  100  121
    >>> a.div(b)
         0    1    2    3
    0  NaN  1.0  1.0  1.0
    1  1.0  1.0  1.0  1.0
    2  1.0  1.0  1.0  1.0
    

    比较运算

    • 比较运算只能比较相同索引的元素,不进行 补齐
    • 采用 > < >= <= == != 等符号进行的二元运算产生
      布尔对象
  • 相关阅读:
    如何在phpstorm中安装xdebug调试工具
    php判断远程图片或文件是否存在
    在centos6.7中lnmp环境下安装swoole插件和pthreads插件
    linux中常用的命令
    PHP获取远程文件的几种方式
    TextView实现长按复制功能
    android 字体大小自适应
    Android 相机,视频录制
    转 数据存储方式
    转 String,StringBuffer与StringBuilder的区别??
  • 原文地址:https://www.cnblogs.com/mengxiaoleng/p/11672150.html
Copyright © 2011-2022 走看看