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

比较运算

  • 比较运算只能比较相同索引的元素,不进行 补齐
  • 采用 > < >= <= == != 等符号进行的二元运算产生
    布尔对象
原文地址:https://www.cnblogs.com/mengxiaoleng/p/11672150.html