问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

pandas教程03---DataFrame的创建及索引

提问网友 发布时间:2025-01-19 05:33
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2025-01-19 06:16
欢迎关注公众号【Python开发实战】,免费领取Python学习电子书!工具-pandas

pandas库提供了高性能、易于使用的数据结构和数据分析工具。其主要数据结构是DataFrame,可以将DataFrame看做内存中的二维表格,如带有列名和行标签的电子表格。许多在Excel中可用的功能都可以通过编程实现,例如创建数据透视表、基于其他列计算新列的值、绘制图形等。还可以按照列的值对行进行分组,或者像SQL中那样连接表格。pandas也擅长处理时间序列。

但是介绍pandas之前,需要有numpy的基础,如果还不熟悉numpy,可以查看

导入pandas

Dataframe对象

一个DataFrame对象表示一个电子表格,带有单元格值、列名和行索引标签。可以定义表达式基于其他列计算列的值、创建数据透视表、按行分组、绘制图形等。可以将DataFrame视为Series的字典。

创建Dataframe

可以通过传递一个Series对象的字典来创建DataFrame。

输出:

需要注意:

可以根据列名访问DataFrame,会返回Series对象。

输出:

也可以一次性访问多列, 会返回一个DataFrame。

输出:

如果在创建DataFrame时,参数columns和index分别被传入一个列表,则会保证这些列和这些行将按照列表中的顺序存在,不会存在其他的列和行。

输出:

输出:

另一个创建DataFrame的实用方法是传入由所有值组成的ndarray或嵌套列表,并指定列名和行索引标签。

输出:

对于缺失值,可以使用np.nan,也可以使用numpy的屏蔽数组。

输出:

还可以传递一个DataFrame对象,而不是传递一个ndarray。

输出:

还可以使用字典来创建DataFrame。

输出:

多级索引

如果所有的列都是大小相同的元组,则会被理解陈给多级列索引。行索引标签也是如此。

输出:

可以非常简单地获取到包含所有public列的DataFrame。

输出:

输出:

多级索引降级

输出:

输出:

输出:

可以看到d6有两级列索引和行索引,现在可以通过调用droplevel()删除一级列索引(行索引也是如此)。

输出:

堆叠和拆分多级索引

调用stack()方法会将最低级的列索引放到最低级的行索引之后。

输出

上面的结果中出现了许多NaN值,这是有道理的,因为许多新的组合以前不存在,比如伦敦没有bob。 现在调用unstack()将会实现的相反的效果,也会再次创建许多NaN值。

输出:

如果在上面的结果上再次调用unstack(),将会得到一个Series对象。

输出:

stack()和unstack()方法可以通过设置level参数来选择想要堆叠和拆分的索引级别,设置可以同时堆叠和拆分多个级别。

输出:

大多数方法返回修改过的副本

从stack()和unstack()的结果已经发现,这些方法不会修改应用的对象,而使处理应用对象的副本并返回这个副本。在pandas中,大多数方法都是这样的。

访问行

输出:

loc属性是按行索引访问行,不是按列访问。它的结果是一个Series对象,DataFrame的列名会被映射为Series的行标签。

输出:

iloc属性是按整数位置来访问行。

输出:

对按行进行切片,会返回一个DataFrame对象。

输出:

还可以传递一个布尔数组来获得匹配的行,类似于ndarray的布尔索引。

输出:

这与布尔表达式(条件运算)结合使用时非常有用。

输出:

添加和移除列

通常,可以将DataFrame看做是由Series组成的字典,所以下面的方法可以正常运行。

输出:

输出:

在添加一个新列时,其行数必须和DataFrame相同。缺少的行将会用NaN填充,多余的行会被忽略。

输出:

在添加新列时,默认会添加在末尾 (右端),可以使用insert()方法在其他任何位置插入新列。

输出:

布置新列

还可以通过调用assign()方法来创建新列。但是需要注意的是,这个方法会返回一个新的DataFrame对象,原来的DataFrame不会被修改。

输出:

需要注意的是,无法访问在同一布置中创建的列。

输出:

解决上面问题的方案是将上面的布置任务拆分为两个连续的任务。

输出:

上面的解决方案中创建了一个临时变量d12,这不是很方便。你可以想链式调用assign,但是不会起作用,因为第一个assign实际上没有修改people对象。

输出:

简单的解决方案是将一个函数传递给assign()方法,通常是lambda函数,该函数将会把DataFrame作为参数调用。

输出:

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

保姆级教程!Pandas 万字入门指南,建议收藏 十级工伤赔偿金标准? 我国工伤鉴定十级赔偿标准 游戏手机拯救者有什么功能vivox60游戏魔盒中游戏伴侣是什么 我的手机是u83t今天一开机就显示的加密失败这要怎么? 为什么出现加密失败,要求重置?为什么重置也没用?为什么关机后,再... 一加3t和一加3外观区别一加手机3t和一加手机3哪里不一样了 一加手机3v参数配置表详解一加手机3v参数配置表详解图 一加手机3T到11哪个最好一加手机3t到11哪个最好用 投诉95511打什么电话 ...不多:是一个女生穿越的,然后小说内容一个情节是男女主出去打猎_百 ... 09江苏公务员考试,补报是怎么回事,如何才能补报? 阳泉2010中考补报志愿 玩游戏闪退怎么办苹果6 王者荣耀 iphone6plus玩王者闪退怎么解决? 科三变更车道和超车有什么区别 科三超车需要变回原车道吗 请教下格力空调的生产日期怎么看啊 射精带黄有时会有血精是怎么回事 射精带血是什么问题 射精里面带我血液是怎么回事 【Pandas 教程】6.Pandas 数据清洗 Pandas基础教程五_多重索引 Pandas教程 | Merge数据合并图文详解 Pandas图解教程来啦,秒懂这些操作! pandas入门教程:图解数据合并merge函数 怎样找回自己邮箱和新浪微博 怎样停止开通qq会员功能 为什么我用财富通买了几百块钱东西、拍拍钻不能点亮? 我在拍拍买了衣服为什么彩砖没有亮 为什么我已经在拍拍网买东西了,可是还是不能点亮彩钻? 我在拍拍买了东西为什么还不能点亮彩砖 fc2服务器在哪? 红白FLASH合战官方网站 小学生的学习动机是什么 中午念什么佛最旺财运最好 20a断路器用多少漏保 请推荐几集好看的柯南求大神帮助 三国志乱世枭雄攻略张铁林宁静拍的电视剧乱世英雄吕不韦的激情戏在第... 洛克王国超进化宠物洛克王国中宠物超进化有啥效果求大神帮助 硬盘数据线插电脑电脑的硬盘和其数据线在那
Top