python组成结构_Python数据分析丨pandas基本数据结构组成

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云,作者:统计学家

目录

1引言

2 Series数组

2.1 Series数组构成

2.2 创建Series数组

2.3 Series数组常用属性

3 DataFrame数组

3.1 DataFrame数组构成

3.2 创建DataFrame数组

3.3 DataFrame数组的常用属性

4 总结

1引言

本文总结Pandas中两种常用的数据类型:

(1)Series是一种一维的带标签数组对象。

(2)DataFrame,二维,Series容器

2 Series数组

2.1 Series数组构成

Series数组对象由两部分构成:

值(value):一维数组的各元素值,是一个ndarray类型数据。索引(index):与一维数组值一一对应的标签。利用索引,我们可非常方便得在Series数组中进行取值。如下所示,我们通过字典创建了一个Series数组,输出结果的第一列就是索引,第二列就是数组的具体值。

>>> import pandas as pd

>>> a =pd.Series([102, 212, 332, 434])

>>> a

0 102

1 212

2 332

3 434

dtype: int64

也可以在创建时手动指定索引:

>>> a = pd.Series([102, 212, 332, 434], index=['第一列', '第二列', '第三列', '第四列'])

>>> a

第一列 102

第二列 212

第三列 332

第四列 434

dtype: int64

利用索引,我们可以更加方便得在数组中进行取值:

>>> a['第一列']

102

>>> a[['第一列', '第二列']]

第一列 102

第二列 212

dtype: int64

当然,你也可以使用以往的数字下标从数组中取值:

>>> a[0]

102

>>> a[[0,1]]

第一列 102

第二列 212

dtype: int64

2.2 创建Series数组

(1)通过list、tuple创建

>>> pd.Series([123, 321, 345,543]) # 传入一个list

0 123

1 321

2 345

3 543

dtype: int64

>>> pd.Series((123, 321, 345,543)) # 传入一个元组

0 123

1 321

2 345

3 543

dtype: int64

(2)通过传入一维numpy数组对象创建

>>> import numpy as np

>>> n = np.arange(3) # 创建一个一维的numpy数组

>>> pd.Series(n)

0 0

1 1

2 2

dtype: int32

注意:传入的numpy必须是一维的数组,否则会报错。

>>> n = np.arange(6).reshape((2,3))

>>> pd.Series(n)

Traceback (most recent call last):

File "", line 1, in

……

packages\pandas\core\internals\construction.py", line 729, in sanitize_array

raise Exception("Data must be 1-dimensional")

Exception: Data must be 1-dimensional

(3)通过传入字典创建

通过字典创建Series数组时,字典的key会自动被设置成Series数组的索引:

>>> pd.Series({'name':'张三', 'age':40, 'weight':140})

name 张三

age 40

weight 140

dtype: object

4)通过传入一个标量值创建

当传入一个标量值时,必须传入index索引,Series会根据传入的index参数来确定数组对象的长度:

>>> a = pd.Series(10, index=['a', 'b', 'c', 'd'])

>>> a

a 10

b 10

c 10

d 10

dtype: int64

2.3 Series数组常用属性

Series数组的属性与numpy数组属性很是类似,如下表所示:

?i=20201109211218610.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTM0NTU5MA==,size_16,color_FFFFFF,t_70#pic_center

3 DataFrame数组

3.1 DataFrame数组构成

DataFrame数组是Pandas中另一种数据结构,其数据的呈现方式类似于Excel这种二维表结构。相比于Series数组,DataFrame可以存放多维数据,所以DataFrame不仅仅有索引,还有列名,如下所示:

>>> d = {'one': [1, 2, 3, 4], 'two':['一', '二', '三', '四']}

>>> pd.DataFrame(d)

one two

0 1 一

1 2 二

2 3 三

3 4 四

>>> df.index

RangeIndex(start=0, stop=4, step=1)

>>> df.columns

Index(['one', 'two'], dtype='object')

可以看到,DataFrame数组可以包含多维数据,类似于一张二维表。与Series类似,DataFrame数组也有一个index索引,在不指定索引时,通常会自动生成从零开始步长为1的索引。此外DataFrame数组还有一个列名,索引和列名是从数组中挑选数据的重要依据。

3.2 创建DataFrame数组

(1)通过字典创建

通过字典来创建DataFrame数组时,字典的键将会自动成DataFrame数组的列名,字典的值必须是可迭代对象,例如Series、numpy数组、list、tuple等,不同Series数组中对应的缺失值pandas将自动填充NaN:

以list列表为值的字典:

>>> d = {'one': [1, 2, 3, 4], 'two':['一', '二', '三', '四']}

>>> pd.DataFrame(d)

one two

0 1 一

1 2 二

2 3 三

3 4 四

以numpy数组为值得字典:

>>> d = {'zero': np.zeros((3,)), 'ones': np.ones((3,)), 'twos':np.full((3,),2)}

>>> pd.DataFrame(d)

zero ones twos

0 0.0 1.0 2

1 0.0 1.0 2

2 0.0 1.0 2

以Series为值的字典:

>>> d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}

>>> df = pd.DataFrame(d) # 创建DataFrame数组

>>> df

one two

a 1.0 1.0

b 2.0 2.0

c 3.0 3.0

d NaN 4.0

无论是上面那种类型对象为值的字典,都可以通过下面的方式重新指定列索引:

>>> pd.DataFrame(d, index=['d', 'b', 'a'])

one two

d NaN 4.0

b 2.0 2.0

a 1.0 1.0

当然,也可以在手动指定列名,不过行索引对应的键数据才会传入新建的数组中:

>>> pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])

two three

d 4.0 NaN

b 2.0 NaN

a 1.0 NaN

(2)通过列表创建

通过列表创建DataFrame数组时,列表的每一个元素必须是字典,这样,字典的键将作为列名。

>>> d = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]

>>> pd.DataFrame(d)

a b c

0 1 2 NaN

1 5 10 20.0

>>> pd.DataFrame(d, index=['第一行', '第二行']) # 重新指定索引

a b c

第一行 1 2 NaN

第二行 5 10 20.0

(3)通过功能函数创建

我们还可以通过诸如from_dict()、from_records()这类的功能函数来创建DataFrame数组,以from_dict()为例:

>>> d = {'A': [1, 2, 3], 'B': [4, 5, 6]}

>>> pd.DataFrame.from_dict(d)

A B

0 1 4

1 2 5

2 3 6

如果需要让字典的键作为索引,重新指定列名,可以传入orient='index’参数,然后重新传入列名:

>>> pd.DataFrame.from_dict(d,orient='index', columns=['one', 'two', 'three'])

one two three

A 1 2 3

B 4 5 6

3.3 DataFrame数组的常用属性

DataFrame数组的属性与Series数据几乎一样,只是多了一个保存列名信息的columns属性,参看上面表格中的Series属性就行了。

4 总结

本文大致介绍了Pandas中的两种重要数据结构Series数组对象和DataFrame数组对象的特点、主要创建方法、属性。

想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。

标签:index,pd,Python,Series,DataFrame,索引,数组,数据结构,pandas

来源: https://www.cnblogs.com/aa1273935919/p/13950959.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java类加载顺序和创建对象加载顺序

类的加载顺序 有父子关系的类在加载时先调用父类静态初始化块,静态属性,但不包括静态方法,然后再是,子类静态初始化块,静态属性,但同样不包括静态方法 。 类什么时候被加载/类加载时机: 第一&…

spring读取properties配置文件_Spring-1

spring共四天 第一天:spring框架的概述以及spring中基于XML的IOC配置 第二天:spring中基于注解的IOC和ioc的案例 第三天:spring中的aop和基于XML以及注解的AOP配置 第四天:spring中的JdbcTemlate以及Spring事务控制 -------------…

java类加载及new对象的过程

Son son new Son(); 这句话到底做了什么事情呢? 1.javac编译.java源文件形成.class字节码文件; 2.new Sub() 对象时,先检查有没有父类,有父类,类加载器(ClassLoader)先将父类的Class文件读入内存,创建一个java.lang…

文字层一点就变红_学习观察神经网络:可视化整个模型训练中卷积层的激活

全文共3425字,预计学习时长10分钟图源:www.raincent.com深度学习是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息…

Git清除无需提交文件版本操作说明

将已提交的此类文件移动(剪切)到电脑其他位置 主要目录如下 说明:如果本地target目录已经提交,则直接删除 提交本地代码(commit)拉取远程代码(pull)将第1步中移动的文件还原到项目中指定位置将第4步中还原…

tcp out of order解决_Java解决CAS机制中ABA问题的方案

通过对atomic包的分析我们知道了CAS机制,我们在看一下CAS的公式。CAS(V,A,B)1:V表示内存中的地址2:A表示预期值3:B表示要修改的新值CAS的原理就是预期值A与内存中的值相比较,如果相同则将内存中的值改变成新值B。这样比…

java 观察者模式_重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」...

一、前言知道的越多不知道的就越多编程开发这条路上的知识是无穷无尽的,就像以前你敢说精通Java,到后来学到越来越多只想写了解Java,过了几年现在可能想说懂一点点Java。当视野和格局的扩大,会让我们越来越发现原来的看法是多么浅…

图纸管理软件_造价20万以内的农村别墅长啥样?挑选5套图纸,让城里人羡慕吧...

在老家盖房算是一件“光宗耀祖”的事情,现在的物价高,想盖一栋房随便都要几十万,对于一般家庭来说,要拿出这笔数字并不是一件容易的事,通常大家的预算都有限,希望能花最少的钱盖最好的房,这种心…

python+ BeautifulSoup抓取“全国行政区划信息查询平台”的省市区信息

全国行政区划信息查询平台地址:http://xzqh.mca.gov.cn/map 检查网页源码: 检查网页源码可以发现: 所有省级信息全部在javaScript下的json中,会在页面加载时加载json数据,填充到页面的option中。 1.第一步&#xff1…

32利用文件系统保存数据_网易技术实践|Docker文件系统实战

在本文中,我们来实战构建一个Docker镜像,然后实例化容器,在Docker的生命周期中详细分析一下Docker的文件存储情况和DockerFile优化策略。在开始实战之前,我们先介绍一个概念,联合文件系统(Union File Syste…

二叉树遍历的超简单方法(详细、简单)

二叉树遍历的超简单方法 参考链接:https://wenku.baidu.com/view/e5463e4203d8ce2f0166230a.html 已修改部分问题。 三种常见二叉树的遍历: 先序遍历的递归算法定义(简称根左右) 若二叉树非空,则依次执行如下操作&a…

怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化

大家好,我是闲水,每天更新java最新最热技术,对java感兴趣的朋友记得关注一下哦。注意 :这是SQL性能优化第三章,点击关注查看前置内容。上篇文章我们主要了解了索引优化的标尺"Explain"怎么用,这一…

java类加载顺序(spring容器下)

执行顺序:父类静态块–>子类静态块–>父类非静态块–>父类构造方法–>子类非静态块–>子类构造方法–>自动装载的方法 子类和父类均加上Service注解,将其交给spring容器管理。 父类: Service public class Father {publ…

jwt token 太长_理解 JWT 鉴权的应用场景及使用建议

JWT 介绍JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑(Compact)且自包含(Self-contained)的方式,用于在各方之间以JSON对象安全传输信息。这些信息可以通过数字签名进行验证和信任。可以使用秘密(使用HMAC算法)或使用RSA的公钥/私钥…

microsoft vbscript编译器错误怎么解决_win7系统ie应用程序错误怎么办 ie应用程序错误解决方法【详解】...

windows系统自带的ie浏览器很少用户会去使用到,它运行起来比其他的浏览器要慢很多,而且经常会出现各种各样的问题,最近有位win7系统用户,在使用ie浏览器的时候,发生了应用程序错误的情况,那么win7系统ie应用…

修改固态硬盘的物理序列号_买固态怕踩坑?收下这些软件,轻松鉴别好坏

再有半个月,就迎接年中的促销旺季。不少朋友都希望趁着各种优惠、跳楼价,组一台梦想机、升级一下自己的电脑。说到体验升级,相信就算是DIY新手和硬件小白都知道,要想电脑快,必须选固态。但是固态参数多,又是…

《常用控制电路》学习笔记——数控锁相环调速电路

序言 今天开始我将把自己学习《常用控制电路》的一些内容发到互联网上,希望能和大家交流学习。 这本书主要介绍了一系列控制电路的经典案例,进行了电路和代码的设计,我将把这本书中学习到的内容和学习的过程尽量准确的分享出来与大家交流&…

《常用控制电路》学习笔记——数字控制直流电动机调速电路

书中该节讲述的电路通过ADC芯片将电位器的阻值转换为电压量,然后使用单片机输出PWM进行电路控制。本电路也可扩展应用至需要模拟量输入与输出的场合。 目录 一、系统设计思路 二、各模块电路分析 2.1电路构成 2.2工作状态分析 三、程序分析 3.1 变量定义 3.…

《常用控制电路》学习笔记——数控直流恒流源电路

书中该项目内容设计了一个从交流220V市电作为供电电源的恒流源电路,并且此电路可由加减计数器74LS193控制输出的电流大小。 目录 一、系统方案 二、各模块电路分析 整流滤波及稳压电路 数字量控制电路 数模转换电路 数控恒流源产生电路 三、电路仿真结果 四…

图像太宽无法输出请裁剪图像或降低分辨率然后重试_真·无监督!延世大学提出图像到图像无监督模型,实验结果超SOTA...

作者 | 蒋宝尚编辑 | 丛 末图像翻译目的是用模型将源域图像转换到目标域图像,通常涉及标签图到场景图的转换、图像风格、人脸的属性变换、标签图到场景图的转换。图像翻译任务自生成对抗网络提出就得到了快速发展,例如经典的pix2pix、CycleGAN、StarGAN。…