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

比较运算

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

    布尔对象

pandas中的数据结构-DataFrame的更多相关文章

  1. Python之Pandas中Series、DataFrame

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  2. Python之Pandas中Series、DataFrame实践

    Python之Pandas中Series.DataFrame实践 1. pandas的数据结构Series 1.1 Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一 ...

  3. Pandas中Series和DataFrame的索引

    在对Series对象和DataFrame对象进行索引的时候要明确这么一个概念:是使用下标进行索引,还是使用关键字进行索引.比如list进行索引的时候使用的是下标,而dict索引的时候使用的是关键字. ...

  4. [Python] Pandas 中 Series 和 DataFrame 的用法笔记

    目录 1. Series对象 自定义元素的行标签 使用Series对象定义基于字典创建数据结构 2. DataFrame对象 自定义行标签和列标签 使用DataFrame对象可以基于字典创建数据结构 ...

  5. Pandas中Series与Dataframe的区别

    1. Series Series通俗来讲就是一维数组,索引(index)为每个元素的下标,值(value)为下标对应的值 例如: arr = ['Tom', 'Nancy', 'Jack', 'Ton ...

  6. pandas中series和dataframe之间的区别

    series结构有索引,和列名组成,如果没有,那么程序会自动赋名为None series的索引名具有唯一性,索引可以数字和字符,系统会自动将他们转化为一个类型object. dataframe由索引和 ...

  7. pandas中数据框DataFrame获取每一列最大值或最小值

    1.python中数据框求每列的最大值和最小值 df.min() df.max()

  8. Pandas中Series与Dataframe的初始化

    (一)Series初始化 1.通过列表,index自动生成 se = pd.Series(['Tom', 'Nancy', 'Jack', 'Tony']) print(se) 2.通过列表,指定in ...

  9. Pandas 数据结构Dataframe:基本概念及创建

    "二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值.字符串.布尔值等. Dataframe中的数据以一个或多个二维块存放,不是列表.字 ...

随机推荐

  1. Python初记

    ------Python是一个优雅的大姐姐 我是通过<老男孩Python>学习Python,根据我手上的资源学习Python,资料不齐,但是这个是最好的,边学习边寻找有没有相同的类型. 在 ...

  2. 【杂题】[AGC034D] Manhattan Max Matching【费用流】

    Description 有一个无限大的平面,有2N个位置上面有若干个球(可能重复),其中N个位置是红球,N个位置是蓝球,红球与蓝球的总数均为S. 给出2N个位置和上面的球数,现要将红球与蓝球完美匹配, ...

  3. Linux压缩工具

    一.gzip/gunzip/zcat gzip, gunzip, zcat - compress or expand files gzip [ option .... ] [ filenames .. ...

  4. [笔记]mongodb一

    一.MongoDB介绍 MongoDB是一个由c++编写的基于分布式文件存储的数据库.MongoDB介于关系型数据库和非关系型数据库之间,是非关系型数据库中功能最丰富,最接近关系型数据库.具有高性能, ...

  5. spring-boot 中实现标准 redis 分布式锁

    一,前言 redis 现在已经成为系统缓存的必备组件,针对缓存读取更新操作,通常我们希望当缓存过期之后能够只有一个请求去更新缓存,其它请求依然使用旧的数据.这就需要用到锁,因为应用服务多数以集群方式部 ...

  6. JavaScript_AMD规范

    JavaScript_AMD规范 一.总结 一句话总结: Asynchronous Module Definition:AMD是"Asynchronous Module Definition ...

  7. golang网络通信超时设置

    网络通信中,为了防止长时间无响应的情况,经常会用到网络连接超时.读写超时的设置. 本文结合例子简介golang的连接超时和读写超时设置. 1.超时设置 1.1 连接超时 func DialTimeou ...

  8. leetcode 172. Factorial Trailing Zeroes(阶乘的末尾有多少个0)

    数字的末尾为0实际上就是乘以了10,20.30.40其实本质上都是10,只不过是10的倍数.10只能通过2*5来获得,但是2的个数众多,用作判断不准确. 以20的阶乘为例子,造成末尾为0的数字其实就是 ...

  9. latexdiff中的大坑:字符编码问题

    最近用latex写文章,要用到修订模式,于是采用latexdiff命令生成修订版pdf.这原本是一个非常简单方便的方法,却隐藏着字符编码的问题,初次用可能会遇到意想不到的问题,让人很烦,比如,生成出来 ...

  10. JavaScript日常学习4

    JavaScript事件 1.<button id="btn1" onclick="document.getElementById("btn1" ...