Pandas 基础 (2)—— DataFrame
1. DataFrame 介绍
DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。
DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共用一个索引)。
DataFrame 中的数据是以一个或者多个二维块存放的(而不是列表、字典或者别的一维数据结构)
2. DataFrame 使用
2.1 创建 DataFrame
最常用的方法是直接传入一个由等长列表或者 NumPy 数组组成的字典
In [153]: data = {'city':['beijing','shanghai','guangzhou','shenzhen','chongqing'],...: 'year':[2000,2001,2002,2003,2004],...: 'people':[1.5,1.7,3.6,2.4,2.9]}In [154]: frame = DataFrame(data)In [155]: frameOut[155]: city people year0 beijing 1.5 20001 shanghai 1.7 20012 guangzhou 3.6 20023 shenzhen 2.4 20034 chongqing 2.9 2004
可以指定列的显示顺序
In [159]: frame = DataFrame(data,columns=['year','people','city'])In [160]: frameOut[160]: year people city0 2000 1.5 beijing1 2001 1.7 shanghai2 2002 3.6 guangzhou3 2003 2.4 shenzhen4 2004 2.9 chongqing
如果传入的列找不到,就会产生 NaN 值
In [161]: frame = DataFrame(data,columns=['year','people','city','area'])In [162]: frameOut[162]: year people city area0 2000 1.5 beijing NaN1 2001 1.7 shanghai NaN2 2002 3.6 guangzhou NaN3 2003 2.4 shenzhen NaN4 2004 2.9 chongqing NaNIn [163]: frame.columnsOut[163]: Index([u'year', u'people', u'city', u'area'], dtype='object')
通过类似字典标记的方式或属性的方式,可以将 DataFrame 的列获取为一个 Series
In [164]: frame['city']Out[164]: 0 beijing1 shanghai2 guangzhou3 shenzhen4 chongqingName: city, dtype: objectIn [165]: frame.peopleOut[165]: 0 1.51 1.72 3.63 2.44 2.9Name: people, dtype: float64
列可以通过赋值的方式进行修改
In [166]: frame.area = np.arange(5)In [167]: frameOut[167]: year people city area0 2000 1.5 beijing 01 2001 1.7 shanghai 12 2002 3.6 guangzhou 23 2003 2.4 shenzhen 34 2004 2.9 chongqing 4
将列表或者数组赋值给某个列时,其长度必须跟 DataFrame 的长度相匹配。如果赋值的是一个 Series,就会精确匹配 DataFrame 的索引,所有的空位都将被填上缺失值。
In [168]: val = Series([100,200,300],index=[0,2,4])In [169]: frame['area'] = valIn [170]: frameOut[170]: year people city area0 2000 1.5 beijing 100.01 2001 1.7 shanghai NaN2 2002 3.6 guangzhou 200.03 2003 2.4 shenzhen NaN4 2004 2.9 chongqing 300.0
为不存在的列赋值会创建出一个新列,可以使用关键字 del 删除列
In [171]: frame['bool_value'] = frame.city == 'shenzhen'In [172]: frameOut[172]: year people city area bool_value0 2000 1.5 beijing 100.0 False1 2001 1.7 shanghai NaN False2 2002 3.6 guangzhou 200.0 False3 2003 2.4 shenzhen NaN True4 2004 2.9 chongqing 300.0 FalseIn [173]: del frame.bool_value---------------------------------------------------------------------------AttributeError Traceback (most recent call last)<ipython-input-173-cc8fbbe0efd2> in <module>()----> 1 del frame.bool_valueAttributeError: bool_valueIn [174]: del frame['bool_value']In [175]: frame.columnsOut[175]: Index([u'year', u'people', u'city', u'area'], dtype='object')
另外一种常见的数据形式是嵌套字典,将一个嵌套字典传给 DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引。
In [180]: people = {'beiijng':{2000:1.5,2001:1.7,2002:3.6},...: 'shanghai':{2000:1.2,2001:1.3,2002:1.8}}In [181]: frame2 = DataFrame(people)In [182]: frame2Out[182]: beiijng shanghai2000 1.5 1.22001 1.7 1.32002 3.6 1.8# 对其进行转置In [183]: frame2.TOut[183]: 2000 2001 2002beiijng 1.5 1.7 3.6shanghai 1.2 1.3 1.8
如果设置了 DataFrame 的 index 和 columns 的 name 属性,则这些信息会显示出来
In [187]: frame2.index.name = 'year'In [188]: frame2.columns.name = 'city'In [189]: frame2Out[189]: city beiijng shanghaiyear 2000 1.5 1.22001 1.7 1.32002 3.6 1.8# values 属性会以二维 ndarray 形式返回 DataFrame 中的数据In [190]: frame2.valuesOut[190]: array([[1.5, 1.2],[1.7, 1.3],[3.6, 1.8]])
下图给出了 DataFrame 构造函数所能接受的各种数据
2.2 索引对象
构建 Series 或 DataFrame 时,所用到的任何数组或其他序列的标签都会转换成一个 index
In [191]: obj = Series(range(3), index=['a','b','c'])In [192]: index = obj.indexIn [193]: indexOut[193]: Index([u'a', u'b', u'c'], dtype='object')In [194]: index[1:]Out[194]: Index([u'b', u'c'], dtype='object')
index 对象必须是不可修改的,这样才能保证 index 对象在多个数据结构之间安全共享
In [195]: index = pd.Index(np.arange(3))In [196]: indexOut[196]: Int64Index([0, 1, 2], dtype='int64')In [197]: obj2 = Series(range(3), index=index)In [198]: obj2Out[198]: 0 01 12 2dtype: int64In [199]: obj2.index is indexOut[199]: True
In [200]: frame2Out[200]: city beiijng shanghaiyear 2000 1.5 1.22001 1.7 1.32002 3.6 1.8In [202]: 'shanghai' in frame2.columnsOut[202]: TrueIn [203]: 2003 in frame2.indexOut[203]: False
Pandas 基础 (2)—— DataFrame相关推荐
- Pandas基础复习-DataFrame
数据类型-DataFrame DataFrame是由多个Series数据列组成的表格数据类型,每行Series值都增加了一个共用的索引 既有行索引,又有列索引 行索引,表明不同行,横向索引,叫inde ...
- dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...
一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...
- pandas基础(part2)--DataFrame
学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 数据框DateFrame 数据结构操作(举例) 列访问 列添加 列删除 行访问 行添加 行删除 修改DataFrame中的数据 Dat ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...
- Pandas基础:文件读取与写入、Series和Dataframe、常用基本函数、排序
文章目录 一.文件读取与写入 1.读取 (a)csv格式 (b)txt格式 (c)xls或xlsx格式 2. 写入 (a)csv格式 (b)xls或xlsx格式 二.基本数据结构 1.Series ( ...
- 快乐学习Pandas入门篇:Pandas基础
Datawhale学习 作者:杨煜,Datawhale成员 寄语:本文对Pandas基础内容进行了梳理,从文件读取与写入.Series及DataFrame基本数据结构.常用基本函数及排序四个模块快速入 ...
- pandas object转float_数据分析篇 | Pandas基础用法6【完结篇】
这是最后一篇,至此Pandas系列终于连载完了,有需要的也可以看看前面6篇,尽请收藏. 数据分析篇 | Pandas 概览 数据分析篇 | Pandas基础用法1数据分析篇 | Pandas基础用法2 ...
- Numpy与Pandas基础
Numpy与Pandas基础 Cyczz 计算机小白 关注他 1 人赞同了该文章 本文包括: 一维数据分析 二维数据分析 一.一维数组 Numpy的一维数组(array) 创建一个一维数组,参数传入 ...
- Pandas简明教程:二、Pandas基本数据结构-DataFrame与Series
文章目录 1.什么是表格? 2.DataFrame类型 3.Series类型 本系列教程教程完整目录: 1.什么是表格? 月份 姓名 性别 应发工资 实发工资 职位 0 1 张三 男 2000 150 ...
- 【Python】Pandas基础:结构化数据处理
python:Pandas基础:结构化数据处理 目录: 文章目录 @[toc] 一 pandas及其重要性 二 pandas的数据结构介绍 1 Series 2 DataFrame 3 索引对象 三 ...
最新文章
- python django web项目的构建步骤(一)
- c语言中if条件语句说课内容,if语句-ppt-说课--试讲-C语言.ppt
- MFC COMBO-BOX最详细教程
- 计算机视觉中 RNN 应用于目标检测
- 【已验证】帝国cms 里 栏目列表模板获取同级栏目
- Transformer的学习笔记
- 拓端tecdat|R语言中使用多重聚合预测算法(MAPA)进行时间序列分析
- projecteuler_problem12
- android 打开微信代码,微信跳转浏览器或提示手机端打开HTML代码
- JAVA性能优化权威指南 读书笔记(一)
- 【数据结构入门】顺序表(SeqList)详解(初始化、增、删、查、改)
- CrossApp 设置App启动页(无任何黑屏白屏,显示完启动画面之间到显示出首页界面)
- 基于STM32和ESP8266的智能灌溉系统【土壤湿度监测继电器OLED显示WIFI控制器APP水泵】
- go日志收集系统项目简介
- FTP探测-挖掘鸡2014免费版
- Android开发笔记01-TextView01
- windows pagefile.sys配置调整
- 【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解
- 联通查询套餐及名下联通卡
- 【Unity】Obi插件系列(六)—— Obi Cloth
热门文章
- 2022-2028年中国毛纺行业研究及前瞻分析报告
- 提高班第五周周记(国庆第二天)
- SpringBoot (六) :SpringBoot定时器实现(简单入门)
- LeetCode简单题之删列造序
- 编译ONNX模型Compile ONNX Models
- 面部表情视频中进行远程心率测量:ICCV2019论文解析
- 2021年大数据Flink(四十八):扩展阅读 Streaming File Sink
- HarmonyOS ListContainer 实现列表
- java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
- Android Studio 引入aar文件