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

比较运算

  • 比较运算只能比较相同索引的元素,不进行 补齐
  • 采用 > < >= <= == != 等符号进行的二元运算产生
    布尔对象

版权声明:本文为mengxiaoleng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/mengxiaoleng/p/11672150.html