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相关推荐

  1. Pandas基础复习-DataFrame

    数据类型-DataFrame DataFrame是由多个Series数据列组成的表格数据类型,每行Series值都增加了一个共用的索引 既有行索引,又有列索引 行索引,表明不同行,横向索引,叫inde ...

  2. dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...

    一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...

  3. pandas基础(part2)--DataFrame

    学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 数据框DateFrame 数据结构操作(举例) 列访问 列添加 列删除 行访问 行添加 行删除 修改DataFrame中的数据 Dat ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主

    利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...

  5. Pandas基础:文件读取与写入、Series和Dataframe、常用基本函数、排序

    文章目录 一.文件读取与写入 1.读取 (a)csv格式 (b)txt格式 (c)xls或xlsx格式 2. 写入 (a)csv格式 (b)xls或xlsx格式 二.基本数据结构 1.Series ( ...

  6. 快乐学习Pandas入门篇:Pandas基础

    Datawhale学习 作者:杨煜,Datawhale成员 寄语:本文对Pandas基础内容进行了梳理,从文件读取与写入.Series及DataFrame基本数据结构.常用基本函数及排序四个模块快速入 ...

  7. pandas object转float_数据分析篇 | Pandas基础用法6【完结篇】

    这是最后一篇,至此Pandas系列终于连载完了,有需要的也可以看看前面6篇,尽请收藏. 数据分析篇 | Pandas 概览 数据分析篇 | Pandas基础用法1数据分析篇 | Pandas基础用法2 ...

  8. Numpy与Pandas基础

    Numpy与Pandas基础 Cyczz 计算机小白 ​关注他 1 人赞同了该文章 本文包括: 一维数据分析 二维数据分析 一.一维数组 Numpy的一维数组(array) 创建一个一维数组,参数传入 ...

  9. Pandas简明教程:二、Pandas基本数据结构-DataFrame与Series

    文章目录 1.什么是表格? 2.DataFrame类型 3.Series类型 本系列教程教程完整目录: 1.什么是表格? 月份 姓名 性别 应发工资 实发工资 职位 0 1 张三 男 2000 150 ...

  10. 【Python】Pandas基础:结构化数据处理

    python:Pandas基础:结构化数据处理 目录: 文章目录 @[toc] 一 pandas及其重要性 二 pandas的数据结构介绍 1 Series 2 DataFrame 3 索引对象 三 ...

最新文章

  1. python django web项目的构建步骤(一)
  2. c语言中if条件语句说课内容,if语句-ppt-说课--试讲-C语言.ppt
  3. MFC COMBO-BOX最详细教程
  4. 计算机视觉中 RNN 应用于目标检测
  5. 【已验证】帝国cms 里 栏目列表模板获取同级栏目
  6. Transformer的学习笔记
  7. 拓端tecdat|R语言中使用多重聚合预测算法(MAPA)进行时间序列分析
  8. projecteuler_problem12
  9. android 打开微信代码,微信跳转浏览器或提示手机端打开HTML代码
  10. JAVA性能优化权威指南 读书笔记(一)
  11. 【数据结构入门】顺序表(SeqList)详解(初始化、增、删、查、改)
  12. CrossApp 设置App启动页(无任何黑屏白屏,显示完启动画面之间到显示出首页界面)
  13. 基于STM32和ESP8266的智能灌溉系统【土壤湿度监测继电器OLED显示WIFI控制器APP水泵】
  14. go日志收集系统项目简介
  15. FTP探测-挖掘鸡2014免费版
  16. Android开发笔记01-TextView01
  17. windows pagefile.sys配置调整
  18. 【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解
  19. 联通查询套餐及名下联通卡
  20. 【Unity】Obi插件系列(六)—— Obi Cloth

热门文章

  1. 2022-2028年中国毛纺行业研究及前瞻分析报告
  2. 提高班第五周周记(国庆第二天)
  3. SpringBoot (六) :SpringBoot定时器实现(简单入门)
  4. LeetCode简单题之删列造序
  5. 编译ONNX模型Compile ONNX Models
  6. 面部表情视频中进行远程心率测量:ICCV2019论文解析
  7. 2021年大数据Flink(四十八):扩展阅读  Streaming File Sink
  8. HarmonyOS ListContainer 实现列表
  9. java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
  10. Android Studio 引入aar文件