十分钟入门pandas数据结构和索引

pandas数据结构和索引是入门pandas必学的内容,这里就详细给大家讲解一下,看完本篇文章,相信你对pandas数据结构和索引会有一个清晰的认识。

一、数据结构介绍

在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame。Series类似于numpy中的一维数组,除了通吃一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用,后续会介绍到。

1、Series的创建

序列的创建主要有三种方式:

1)通过一维数组创建序列

import numpy as np, pandas as pd

arr1 = np.arange(10)

arr1

type(arr1)

s1 = pd.Series(arr1)

s1

type(s1)

2)通过字典的方式创建序列

dic1 = {’a’:10,’b’:20,’c’:30,’d’:40,’e’:50}

dic1

type(dic1)

s2 = pd.Series(dic1)

s2

type(s2)

3)通过DataFrame中的某一行或某一列创建序列

这部分内容我们放在后面讲,因为下面就开始将DataFrame的创建。

2、DataFrame的创建

数据框的创建主要有三种方式:

1)通过二维数组创建数据框

arr2 = np.array(np.arange(12)).reshape(4,3)

arr2

type(arr2)

df1 = pd.DataFrame(arr2)

df1

type(df1)

2)通过字典的方式创建数据框

以下以两种字典来创建数据框,一个是字典列表,一个是嵌套字典。

dic2 = {’a’:[1,2,3,4],’b’:[5,6,7,8],

’c’:[9,10,11,12],’d’:[13,14,15,16]}

dic2

type(dic2)

df2 = pd.DataFrame(dic2)

df2

type(df2)

dic3 = {’one’:{’a’:1,’b’:2,’c’:3,’d’:4},

’two’:{’a’:5,’b’:6,’c’:7,’d’:8},

’three’:{’a’:9,’b’:10,’c’:11,’d’:12}}

dic3

type(dic3)

df3 = pd.DataFrame(dic3)

df3

type(df3)

3)通过数据框的方式创建数据框

df4 = df3[[’one’,’three’]]

df4

type(df4)

s3 = df3[’one’]

s3

type(s3)

二、数据索引index

细致的朋友可能会发现一个现象,不论是序列也好,还是数据框也好,对象的最左边总有一个非原始数据对象,这个是什么呢?不错,就是我们接下来要介绍的索引。
在我看来,序列或数据框的索引有两大用处,一个是通过索引值或索引标签获取目标数据,另一个是通过索引,可以使序列或数据框的计算、操作实现自动化对齐,下面我们就来看看这两个功能的应用。

1、通过索引值或索引标签获取数据

s4 = pd.Series(np.array([1,1,2,3,5,8]))

s4

如果不给序列一个指定的索引值,则序列自动生成一个从0开始的自增索引。可以通过index查看序列的索引:

1. s4.index

现在我们为序列设定一个自定义的索引值:

s4.index = [’a’,’b’,’c’,’d’,’e’,’f’]

s4

序列有了索引,就可以通过索引值或索引标签进行数据的获取:

s4[3]

s4[’e’]

s4[[1,3,5]]

s4[[’a’,’b’,’d’,’f’]]

s4[:4]

s4[’c’:]

s4[’b’:’e’]

千万注意:如果通过索引标签获取数据的话,末端标签所对应的值是可以返回的!在一维数组中,就无法通过索引标签获取数据,这也是序列不同于一维数组的一个方面。

2、自动化对齐

如果有两个序列,需要对这两个序列进行算术运算,这时索引的存在就体现的它的价值了—自动化对齐.

s5 = pd.Series(np.array([10,15,20,30,55,80]),

index = [’a’,’b’,’c’,’d’,’e’,’f’])

s5

s6 = pd.Series(np.array([12,11,13,15,14,16]),

index = [’a’,’c’,’g’,’b’,’d’,’f’])

s6

s5 + s6

s5/s6

由于s5中没有对应的g索引,s6中没有对应的e索引,所以数据的运算会产生两个缺失值NaN。注意,这里的算术结果就实现了两个序列索引的自动对齐,而非简单的将两个序列加总或相除。对于数据框的对齐,不仅仅是行索引的自动对齐,同时也会自动对齐列索引(变量名)

数据框中同样有索引,而且数据框是二维数组的推广,所以其不仅有行索引,而且还存在列索引,关于数据框中的索引相比于序列的应用要强大的多,这部分内容将放在数据查询中讲解。

文章来自:数据人

时间: 2024-12-16 15:56:26

十分钟入门pandas数据结构和索引的相关文章

十分钟掌握pandas(pandas官方文档翻译)

十分钟掌握pandas 文档版本:0.20.3 这是一个对pandas简短的介绍,适合新用户.你可以在Cookbook中查看更详细的内容. 通常,我们要像下面一样导入一些包. In [1]: import pandas as pd In [2]: import numpy as np In [3]: import matplotlib.pyplot as plt 创建对象 用一个包含值的序列创建一个Series,pandas会创建一个默认的整数索引 In [4]: s = pd.Series([

十分钟掌握Pandas(上)——来自官网API

十分钟掌握Pandas(上)——来自官网API 其实不止10分钟,这么多,至少一天 一.numpy和pandas numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍. pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速便捷地处理数据的函数和方法.你很快就会发现,它是使Python成为强大而高效的数据分析环境的重

十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less))

十分钟入门less(翻译自:Learn lESS in 10 Minutes(or less)) 注:本文为翻译文章,因翻译水平有限,难免有缺漏不足之处,可查看原文. 我们知道写css代码是非常枯燥的,尤其是写重复颜色.样式的代码,这需要我们付出很多努力来保持css代码可维护,但是它本不应该是这样的. 很幸运地是,web开发社区已经解决了这个问题,我们在现在已经有了类似与less.sass和stylus这样的预处理器.它们有很多优于一般的css之处,如下所示: 变量---以至于我们可以在样式表中

Python十分钟入门

初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(CheatSheet)之间,因此只会包含一些基本概念.很显然,如果你希望真正学好一门语言,你还是需要亲自动手实践的.在此,我会假定你已经有了一定的编程基础,因此我会跳过大部分非Python语言的相关内容.本文将高亮显示重要的关键字,以便你可以很容易看到它们.另外需要注意的是,由于本教程篇幅有限,有很多内容我会

流编辑器 SED 十分钟入门全教程

这里借用一下酷壳网sed博文的图来开题,超赞的-- 1. sed 简介及原理简析 1.1 sed 简介 Sed 是什么?相信很多人都有所了解,sed 全称StreamEDitor 即流编辑器.生于1973年or 1974年by 贝尔实验室的 Lee E. McMahon(已故),是基于交互式编辑器ed("editor", 1971)的脚本功能及更早的qed(quick editor ,1965-1966)(Sed 比 awk 要大那么几岁,所以客官莫急,过几天我们再来详解 awk).S

python学习笔记一:十分钟入门

[转]为什么要自己敲呢?--学习的过程. 发展历史 简介: Python是一种动态解释型的编程语言.Python可以再Windows,UNIX,MAC等多种ca 特点: 1. python使用C语言开发,但是python不再有C语言中的指针等复杂的数据类型. 2. python具有很强的面向对象特性,而且简化了面向对象的实现.它消除了包含类型.抽象类.接口等面向对象的元素. 3.python代码块使用空格或制表符缩进的方式分隔代码. 4. python仅有31个保留字,而且没有分号.begin.

十分钟入门流处理框架Flink --实时报表场景的应用

随着业务的发展,数据量剧增,我们一些简单报表大盘类的任务,就不能简单的依赖于RDBMS了,而是依赖于数仓之类的大数据平台. 数仓有着巨量数据的存储能力,但是一般都存在一定数据延迟,所以要想完全依赖数数仓来解决实时报表问题,是困难的. 其实,所谓的实时报表,往简单了说就是: 对现在的一些数据进行加减乘除聚合后,得到的一串与时间相关的数字. 所以,这类问题的关键点应该在于这个实时数据怎么来,以及怎么处理这些实时数据. 一般地,做这类报表类工作,最基本的原则就是: 业务无侵入性,然后又要做到实时. 所

Sass初学者超强十分钟入门

ruby安装 因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby 在安装的时候,请勾选Add Ruby executables to your PATH这个选项,添加环境变量,不然以后使用编译软件的时候会提示找不到ruby环境 sass安装 安装完ruby之后,在开始菜单中,找到刚才我们安装的ruby,打开Start Command Prompt with Ruby 然后直接在命令行中输入 gem install sass 按回车键确认,等待一段时间就会

Azure IoT Hub 十分钟入门系列 (3)- 使用消息路由将原始设备数据记录存档

本文主要分享一个案例: 10分钟使用消息路由将原始设备数据记录存档 B站视频讲解:https://www.bilibili.com/video/av90223893/ 本文主要有如下内容: 1.理解什么是消息路由,为什么要用消息路由 2.消息路由的类型 3.配置一个到Storage的消息路由,将原始设备消息存储到blob 4.配置一个到Storage的消息路由,当温度>30°C时,才存储下来 图文讲解: 本文参照官网:https://docs.azure.cn/zh-cn/iot-hub/tut