合并 多个dataframe_什么是Pandas的DataFrame?

9e7967c2098f529ddf568f3c3ae80c20.png

1. 什么是DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被看做由series组成的字典(共用同一个索引)

2. DateFrame特点

DataFrame中面向行和面向列的操作基本是平衡的。

DataFrame中的数据是以一个或多个两维块存放的(而不是列表、字典或别的一维数据结构)。

3. 创建DataFrame

最常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:

In [33]: data={'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],'year':[2000,2001,2002,2001,2002],'pop':[1.5,1.7,3.6,2.4,2.9]}

In [34]: frame=DataFrame(data)

#结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序排列

In [35]: frame

Out[35]:

pop state year

0 1.5 Ohio 2000

1 1.7 Ohio 2001

2 3.6 Ohio 2002

3 2.4 Nevada 2001

4 2.9 Nevada 2002

4. 指定列顺序

#使用clolumns指定列顺序

In [36]: DataFrame(data,columns=['year','state','pop'])

Out[36]:

year state pop

0 2000 Ohio 1.5

1 2001 Ohio 1.7

2 2002 Ohio 3.6

3 2001 Nevada 2.4

4 2002 Nevada 2.9

5. NA值

跟Series一样,如果传入的列在数据中找不到,就会产生NA值:

In [37]: DataFrame(data,columns=['year','state','pop','debt'],index=['one','two','three','four','five'])

Out[37]:

year state pop debt

one 2000 Ohio 1.5 NaN

two 2001 Ohio 1.7 NaN

three 2002 Ohio 3.6 NaN

four 2001 Nevada 2.4 NaN

five 2002 Nevada 2.9 NaN

6. 类似字典(或属性)标记

通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:

In [39]: frame['state'] #或frame.state

Out[39]:

0 Ohio

1 Ohio

2 Ohio

3 Nevada

4 Nevada

Name: state, dtype: object

7. 索引字段ix(行)

注意,返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应地设置好了。行也可以通过位置或名称的方式进行获取,比如用索引字段ix:

In [44]: frame2.ix['one']

Out[44]:

year 2000

state Ohio

pop 1.5

debt NaN

Name: one, dtype: object

8. 通过赋值修改列

列可以通过赋值的方式进行修改。例如,可以给那个空的‘debt’列赋上一个标量值或一组值:

In [45]: frame2['debt']=16.5 #或frame2.debt

In [46]: frame2

Out[46]:

year state pop debt

one 2000 Ohio 1.5 16.5

two 2001 Ohio 1.7 16.5

three 2002 Ohio 3.6 16.5

four 2001 Nevada 2.4 16.5

five 2002 Nevada 2.9 16.5

In [50]: frame2.debt=np.arange(5.)

In [51]: frame2

Out[51]:

year state pop debt

one 2000 Ohio 1.5 0.0

two 2001 Ohio 1.7 1.0

three 2002 Ohio 3.6 2.0

four 2001 Nevada 2.4 3.0

five 2002 Nevada 2.9 4.0

将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值:

In [52]: val=Series([-1.2,-1.5,-1.7],index=['two','four','five'])

In [53]: frame2['debt']=val

In [54]: frame2

Out[54]:

year state pop debt

one 2000 Ohio 1.5 NaN

two 2001 Ohio 1.7 -1.2

three 2002 Ohio 3.6 NaN

four 2001 Nevada 2.4 -1.5

five 2002 Nevada 2.9 -1.7

9. 关键字del删除列

为不存在的列赋值会创建出一个新列。关键字del用于删除列

In [55]: frame2['eastern']=frame2.state=='Ohio'

In [56]: frame2

Out[56]:

year state pop debt eastern

one 2000 Ohio 1.5 NaN True

two 2001 Ohio 1.7 -1.2 True

three 2002 Ohio 3.6 NaN True

four 2001 Nevada 2.4 -1.5 False

five 2002 Nevada 2.9 -1.7 False

In [57]: del frame2['eastern']

In [58]: frame2.columns

Out[58]: Index(['year', 'state', 'pop', 'debt'], dtype='object')

警告:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何就地修改全都会反映到源DataFrame上。通过Series的copy方法即可显示地赋值列。

10. 嵌套字典

嵌套字典(也就是字典的字典):

In [62]: pop={'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:17,2002:3.6}}

#如果将它传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引:

In [63]: frame3=DataFrame(pop)

In [64]: frame3

Out[64]:

Nevada Ohio

2000 NaN 1.5

2001 2.4 17.0

2002 2.9 3.6

内层字典的键会被合并、排序以形成最终的索引。如果显式指定了索引,则不会这样:

In [66]: DataFrame(pop,index=[2001,2002,2003])

Out[66]:

Nevada Ohio

2001 2.4 17.0

2002 2.9 3.6

2003 NaN NaN

由Series组成的字典差不多也是一样的用法:

In [68]: pdata={'Ohio':frame3['Ohio'][:-1],'Nevada':frame3['Nevada'][:2]}

In [69]: DataFrame(pdata)

Out[69]:

Nevada Ohio

2000 NaN 1.5

2001 2.4 17.0

11. 转置

In [65]: frame3.T

Out[65]:

2000 2001 2002

Nevada NaN 2.4 2.9

Ohio 1.5 17.0 3.6

12.索引对象

Pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。

Index对象是不可修改的(immutable),因此用户不能对其进行修改。

不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享。

注意:虽然大部分用户都不需要知道太多关于Index对象的细节,但它们确实是pandas数据模型的重要组成部分。

「亲,如果笔记对您有帮助,收藏的同时,记得给点个赞、加个关注哦!感谢!」

「文中代码均亲测过,若有错误之处,欢迎批评指正,一起学习,一起成长!」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux部署python web项目 详细_在linux服务器下部署python工程(爬虫)

---恢复内容开始---这两天 部署 这个 工程 ,真的是 心力交瘁惹。如果有用到爬虫的话,python环境 先配好,如果是 python3的话 beautifulsoup 可以参见http://www.cnblogs.com/clover-xuqi/p/7155496.html 正题:简单来说 &#xff…

jap sql 保存_【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中...

【转】用CSS代码写出的各种形状图形的方法一共收集整理了图形20个,比较实用,同时也为了熟悉CSS的代码.整合了一下,有错误欢迎指出. 1.正方形 #square {width: 100px;height: 100px;background: ...转 -android:程序无响应,你该如何定位问题?如…

web td不对齐_珍稀干货!阿里 Web 音视频开发趟坑指南

作者 | 阿里文娱前端技术专家 归影责编 | 夕颜出品 | CSDN(ID:CSDNnews)这不是一篇基于MSE开发Web播放器的入门文章,而是围绕Web播放器开发遇到的常见问题与解决方案,毕竟入门文章常有而趟坑干货不常有。如果您有Web播放开发经验和音视频技术基础&#x…

mysql57数据库命令_MySQL 5.7 mysql command line client 使用命令详解

MySQL 5.7MySQL command line client 使用命令1.输入密码:******2.ues mysql;使用Mysql3.show databases;显示数据库4.use register;使用数据库名为register5.show tables;显示register数据库中的表6.describe user;对表user进行操作:insert into user(u…

subscribe error不执行_你不知道的redis:第三方jar无封装命令我们该怎么执行?

redis的基本操作指令就不多说了,今天对redis的进阶操作给大家介绍一下,以及对于jedis和redisTemplate等工具包没有封装的命令我们该如何使用?相信大家读了本篇对redis的整体会有更深的认知。一、Pipelin模式介绍1、redis的通常使用方式大多数…

阿里云mysql 分布式_MySQL大型分布式集群

本套课程将通过分布式集群和分库分表两部分内容进行讲解1、主要解决针对大型网站架构中持久化部分中,大量数据存储以及高并发访问所带来是数据读写问题。分布式是将一个业务拆分为多个子业务,部署在不同的服务器上。集群是同一个业务,部署在多…

子窗体 记录选择_如何设计一个简单的Access登录窗体(1)

Access是一个对数据库新手相当友好的软件。Access的窗体功能确实是一种独一无二的前端设计平台,很多常见的人机交互用法,可以用Access的窗体来轻松实现,同时Access的查询和计算功能,也需要窗体的配合才能获得最佳的表达效果。 一、…

mysql 5.6.14 win32_mysql-5.6.14-win32为免安装解压缩版

mysql-5.6.14-win32为免安装解压缩版,安装版(http://dev.mysql.com/downloads/installer/5.5.html#downloads)存在很多弊端。mysql 5.6.14 win7 32位免安装版配置1.下载mysql 5.6.14;下载地址:http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14-wi…

网页javascript加载不出_写给初学者的JavaScript异步编程和背后思想

导读:对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程。为什么顺序执行程序就不行了呢?非要使用异步回…

mysql 货币显示_在MySQL中以正确的格式显示USD货币记录

FORMAT()在MySQL中使用,以正确的格式显示USD货币记录。让我们首先创建一个表-mysql> create table DemoTable-> (-> Amount DECIMAL(15,4)-> );使用插入命令在表中插入一些记录-mysql> insert into DemoTable values(90948484);mysql> insert int…

js监听iframe关闭_Node.js文档NET[翻译]

Node.js v12.0.0 Documentation​nodejs.orgNet模块提供一个异步的网络API,这个API可以创建基于流的TCP,或者IPC服务器(net.createServer()),和客户端(net.createConnection())。它可以这样访问…

mysql 主键倒序查询速度慢_一亿条数据order by主键降序速度很慢

我用sysbench造了1亿条数据,mysql用了30分钟,tidb总共花了3个小时,感觉tidb在批量插入时比较慢,如果后面程序做分页查询会很慢的.count总数、降序排序也比mysql慢。tidb 执行时间,count 一亿条数据用了1分22秒多&#…

python切片逆序_Python 的逆序同时切片如何操作?

Python 的切片,语法是这样的a[[start]:[end][:[step]]]其中索引为 end 的元素不会被包括进来。start、end、step 和 step 前面的冒号都可以省略。这么多可以省略的,那么解释器是怎么设置默认值的呢?解释器对正序和逆序切片的默认值设置是不一…

camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...

老师您好,我对流程实例有两个问题:创建流程实例的方法,视频中给出的是ProcessInstance processInstance runtimeService.startProcessInstanceByKey("Process_1", "business_id");请问这个方法和如下所示的方法有什么区…

静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!

引言近期和学弟交流了一下找实习的相关的话题,谈到了简历这块。虽然近期没有找工作的打算,但还是会不定期的更新自己的简历。于是将自己的简历分享了一下,没想到得到了这样的评价,心里还是挺高兴的。简历的形式是一个在线的静态网…

mysql代码不熟_mysql存储过程的错误,语法不熟,找了好久没找到错误。。。

CREATEPROCEDUREupdate_pointer()begin/*done为1执行异常,停止执行*/DECLAREDoneINTDEFAULT0;DECLAREnowtimeINT;DECLAREyuefloat;DECLAREuidint;DECLAREyqmoneyfloat;DECLAREsummone...CREATE PROCEDURE update_pointer()begin/*done为1执行异常,停止执…

python axes_浅谈matplotlib.pyplot与axes的关系

最近在学习数据可视化,梳理一下其中一些诸如pandas绘图、matplotlib绘图、pyplot(plt)、axes等概念。重要的事情说三遍:axes不是axis!axes不是axis!axes不是axis!重要的事情说三遍:pyplot是接口不是对象&am…

protobuf2和3同时安装_安装protobuf可能遇到的问题

http://code.google.com/p/protobuf/downloads/list安装:unzip protobuf-2.3.0.zipcd protobuf-2.3.0./configuremakemake checkmake install1.每步在执行过程中注意权限问题,有的命令不sudo执行会出问题。./configuremakemake checkmake install2. 执行…

python制作考试系统_Python系统学习 - Pytest单元测试框架

哈咯,大家,我们今天来学习pytest单元测试框架,这个框架要比unittest更加易于使用,结构性也更加好,希望大家能够从中学习到有用的东西,然后在下一章,我们来使用pytest单元测试框架来搭建一个web自…

python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法

我在用Python在Twitter上做一个关于用户社交关系的研究。在问题是“什么是最快的方式抓取某个用户的关注者信息”我搜索了很多信息,目前正在使用Tweepy:c tweepy.Cursor(api.followers_ids, idcentre, count5000).items()while True:try:followers_ids_…