08-pandas 入门-pandas的数据结构

这篇具有很好参考价值的文章主要介绍了08-pandas 入门-pandas的数据结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要使用pandas,你首先就得熟悉它的两个主要数据结构:Series和DataFrame。虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。

一、Series

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成

08-pandas 入门-pandas的数据结构,数据分析,pandas

Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。

通过Series 的values和index属性获取其数组表示形式和索引对象:

08-pandas 入门-pandas的数据结构,数据分析,pandas

创建series

  • 通过指定index索引创建:

08-pandas 入门-pandas的数据结构,数据分析,pandas

  • 通过字典创建:

08-pandas 入门-pandas的数据结构,数据分析,pandas

如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。你可以传入排好序的字典的键以改变顺序:

08-pandas 入门-pandas的数据结构,数据分析,pandas

在这个例子中,sdata中跟states索引相匹配的那3个值会被找出来并放到相应的位置上,但由于"California"所对应的sdata值找不到,所以其结果就为NaN(即“非数字”(not a number),在pandas中,它用于表示缺失或NA值)。因为‘Utah’不在states中,它被从结果中除去。

我将使用缺失(missing)或NA表示缺失数据。pandas的isnull和notnull函数可用于检测缺失数据:

08-pandas 入门-pandas的数据结构,数据分析,pandas

Series也有类似的实例方法:

obj4.isnull()

series的索引

使用NumPy函数或类似NumPy的运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引值的链接:

08-pandas 入门-pandas的数据结构,数据分析,pandas

对于许多应用而言,Series最重要的一个功能是,它会根据运算的索引标签自动对齐数据:

08-pandas 入门-pandas的数据结构,数据分析,pandas

数据对齐功能将在后面详细讲解。如果你使用过数据库,你可以认为是类似join的操作。

Series的索引可以通过赋值的方式就地修改:

08-pandas 入门-pandas的数据结构,数据分析,pandas

Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切:

08-pandas 入门-pandas的数据结构,数据分析,pandas

二、DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。

DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。

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

笔记:虽然DataFrame是以二维结构保存数据的,但你仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是pandas中许多高级数据处理功能的关键要素,我们会在第8章讨论这个问题)。

创建DataFrame

普通字典创建

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

如果指定了列序列,则DataFrame的列就会按照指定顺序进行排列:

08-pandas 入门-pandas的数据结构,数据分析,pandas

如果传入的列在数据中找不到,就会在结果中产生缺失值:

08-pandas 入门-pandas的数据结构,数据分析,pandas

嵌套字典创建

另一种常见的数据形式是嵌套字典:

08-pandas 入门-pandas的数据结构,数据分析,pandas

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

表5-1列出了DataFrame构造函数所能接受的各种数据。

08-pandas 入门-pandas的数据结构,数据分析,pandas

获取列/行数据(series)

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

frame2[column]适用于任何列的名,但是frame2.column只有在列名是一个合理的Python变量名时才适用。

注意,返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应地设置好了(默认设置为列索引名称)。

行也可以通过位置或名称的方式进行获取,比如用loc属性(稍后将对此进行详细讲解):

08-pandas 入门-pandas的数据结构,数据分析,pandas

修改列数据

列可以通过赋值的方式进行修改。

例如,我们可以给那个空的"debt"列赋上一个标量值或一组值:

08-pandas 入门-pandas的数据结构,数据分析,pandas

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

08-pandas 入门-pandas的数据结构,数据分析,pandas

为不存在的列赋值会创建出一个新列

08-pandas 入门-pandas的数据结构,数据分析,pandas

注意:不能用frame2.eastern创建新的列。

del方法可以用来删除这列:

08-pandas 入门-pandas的数据结构,数据分析,pandas

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

如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来:

08-pandas 入门-pandas的数据结构,数据分析,pandas

跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据:

08-pandas 入门-pandas的数据结构,数据分析,pandas

如果DataFrame各列的数据类型不同,则值数组的dtype就会选用能兼容所有列的数据类型:

08-pandas 入门-pandas的数据结构,数据分析,pandas

三、索引对象

pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index:

08-pandas 入门-pandas的数据结构,数据分析,pandas

Index对象是不可变的,因此用户不能对其进行修改

08-pandas 入门-pandas的数据结构,数据分析,pandas

不可变可以使Index对象在多个数据结构之间安全共享:

08-pandas 入门-pandas的数据结构,数据分析,pandas

注意:虽然用户不需要经常使用Index的功能,但是因为一些操作会生成包含被索引化的数据,理解它们的工作原理是很重要的。

除了类似于数组,Index的功能也类似一个固定大小的集合,与python的集合不同,pandas的Index可以包含重复的标签,选择重复的标签,会显示所有的结果。

08-pandas 入门-pandas的数据结构,数据分析,pandas

每个索引都有一些方法和属性,它们可用于设置逻辑并回答有关该索引所包含的数据的常见问题。表5-2列出了这些函数。

08-pandas 入门-pandas的数据结构,数据分析,pandas文章来源地址https://www.toymoban.com/news/detail-678380.html

到了这里,关于08-pandas 入门-pandas的数据结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中List类型数据结构广泛应用于各种场景中。然而,在数据分析和可视化过程中,经常需要将List转换为Pandas的DataFrame对象。那么如何将...

    Python中List类型数据结构广泛应用于各种场景中。然而,在数据分析和可视化过程中,经常需要将List转换为Pandas的DataFrame对象。那么如何将List转换为DataFrame对象呢?本文将介绍如何使用Python中Pandas库将List转换为DataFrame,并进一步将其转换为字符串。 将Python List转换为Pandas D

    2024年02月15日
    浏览(40)
  • 【数据分析 - 基础入门之pandas篇①】- pandas介绍

    pandas 是 Python 的 核心数据分析支持库 ,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。 pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具 ,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具。经过多年

    2024年02月13日
    浏览(29)
  • 【数据分析入门】人工智能、数据分析和深度学习是什么关系?如何快速入门 Python Pandas?

    本文详细介绍了人工智能、数据分析和深度学习之间的关系,并就数据分析所需的Pandas库做了胎教般的入门引导。祝读得开心!   本文是原 《数据分析大全》 、现改名为 《数据分析》 专栏的第二篇,我在写这篇文章的时候突然意识到—— 单靠我是不可能把数据分析的方

    2024年02月14日
    浏览(59)
  • 使用Pandas进行数据处理和分析的入门指南

    摘要:本文将介绍如何使用Python的Pandas库进行数据处理和分析,包括数据导入、数据清洗、数据转换和简单分析等方面的内容。 在数据科学和数据分析领域,数据处理是一个关键的步骤。Python的Pandas库提供了强大且易于使用的工具,使数据处理变得简单和高效。本文将引导您

    2024年02月10日
    浏览(64)
  • 数据结构与算法设计分析—— 数据结构及常用算法

    1、顺序表与链表 线性表是 线性结构 ,是包含n个数据元素的有限序列,通过顺序存储的线性表称为 顺序表 ,它是将线性表中所有元素按照其逻辑顺序,依次存储到指定存储位置开始的一块连续的存储空间里;而通过链式存储的 链表 中,每个结点不仅包含该元素的信息,还

    2024年02月07日
    浏览(43)
  • 源码分析——ConcurrentHashMap源码+底层数据结构分析

    1. 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦 初始化就不能改变 ,默认 Segment 的个数是 16 个,你也可以认为 ConcurrentH

    2024年02月13日
    浏览(38)
  • 大数据分析组件Hive-集合数据结构

    Hive是一个基于Hadoop的数据仓库基础设施,用于处理大规模分布式数据集。它提供了一个类似于SQL的查询语言(称为HiveQL),允许用户以类似于关系型数据库的方式查询和分析存储在Hadoop集群中的数据。 Hive常作为离线数仓的分析工具,当面临Json数据时,Hive需要用到其数据结

    2024年01月25日
    浏览(31)
  • 【Python爬虫与数据分析】基本数据结构

    目录 一、概述 二、特性 三、列表 四、字典 Python基本数据结构有四种,分别是列表、元组、集合、字典 ,这是Python解释器默认的数据结构,可以直接使用,无需像C语言那样需要手搓或像C++那样需要声明STL头文件。 Python的数据结构非常灵活,对数据类型没有限制,即一个数

    2024年02月11日
    浏览(38)
  • Pandas库:从入门到应用(一)--数据结构及基础函数

    一、Pandas简介 pandas是 Python 的核⼼数据分析⽀持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas是Python进⾏数据分析的必备⾼级⼯具。 pandas的主要数据结构是 Series (⼀维数据)与 DataFrame (⼆维数据),这两种数据结构⾜以处理⾦融、

    2024年02月13日
    浏览(26)
  • 【分析git 的数据结构】

    Blob对象:每个 Blob 对象代表一个文件的数据,它只包含文件的数据,不包含文件的元数据(如文件名、路径、格式等)。 Tree对象:每个 Tree 对象代表一个目录的信息,它包含了此目录下的 Blob 对象和子 Tree 对象(对应于子目录),以及其他元数据,如文件名、路径等。对于

    2024年03月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包