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深度学习是机器学习领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息…

Maven的作用

Maven 主要用处一:相同的项目结构 使用Maven管理的Java 项目都有着相同的项目结构 1. 有一个pom.xml 用于维护当前项目都用了哪些jar包 2. 所有的java代码都放在 src/main/java 下面 3. 所有的测试代码都放在src/test/java 下面 Maven 主要用处二:统一…

python函数可以提高运行效率吗_python 多进程如何提高函数效率?

1 如何利用multiprocessing 库提高单个函数的执行效率2 代码如下:def f():urls [http://yanbao.stock.hexun.com/listnews1_{}.shtml.format(i) for i in range(1,5)]d {}l1 []l2 []for url in urls:con requests.get(url).textsoup BeautifulSoup(con, lxml)…

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

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

python怎么发送邮件_Python面试题之如何用Python来发送邮件?

1 #! /usr/bin/env python2 #codingutf-83 import sys4 import time5 import poplib6 import smtplib7 #邮件发送函数8 def send_mail():9 try:10 handle smtplib.SMTP(smtp.126.com,25)11 handle.login(XXXX126.com,**********)12 msg To: XXXXqq.com\r\nFrom:XXXX126.com\r…

MySQL通过父id递归查询子节点

1.业务需求,需要选择二级节点后,获取他的所有子节点数据 2.思路通过Mysql的递归查询来获取子节点数据 SELECTpd.id,pd.parent_id,pd.name FROM( SELECT * FROM p_document_directory_record WHERE parent_id IS NOT NULL ) pd,( SELECT pid : 父id ) a…

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

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

request.setCharacterEncoding(“utf-8“) 失效问题

指定后可以通过request.getParameter()获取自己想要的字符串,如果没有提前指定,则会按照服务器端默认的“iso-8859-1”来进行编码;该方法只对post请求有效,对get请求无效;对于get请求,应该在server.xml中指定&#xff…

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

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

python中使用什么来实现异常捕捉_Python异常原理及异常捕捉实现过程解析

关于选课程序,最近着实有点忙,没机会复习os、pickle两部分模块,所以数据储存和字典读取成为了一个问题,大致原理知道,但是具体操作可能还是得返回去再好好看看,所以目前就提前开始学习新的知识了&#xff0…

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

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

python读取文件内容操作_Python 3.6 读取并操作文件内容

下面为大家分享一篇Python 3.6 读取并操作文件内容的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧所使用python环境为最新的3.6版本Python中几种对文件的操作方法:将A文件复制到B文件中去(保持原来格式)读取文件中的内容,返回…

python scikit learn 关闭开源_慕课|Python调用scikit-learn实现机器学习(一)

一、机器学习介绍及其原理1.什么是人工智能?机器对人的思维信息过程的模拟,让它能相认一样思考。a.输入 b.处理 c.输出根据输入信息进行模型建构、权重更新,实现最终优化。特点:信息处理、自我学习,优化升级2.人工智能…

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

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

风变编程python论文_如何看待风变编程的 Python 网课?

作为风变推出的python课程的一名学员,很幸运能与风变相遇,更庆幸自己选择学习python,我学习的是python基础课程和爬虫精进课程,目前已经学完了python基础课程,不得不说对我的感触很深,非常想要继续学下去&a…

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

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

POI读取word文件,(支持HSSF和XSSF两种方式)

POI读取word文件&#xff0c;&#xff08;支持HSSF和XSSF两种方式&#xff09; 参考&#xff1a;HSSF&#xff0c;XSSF&#xff0c;SXSSF三种方式 1.引用maven&#xff08;版本必须一致&#xff09; <dependency><groupId>org.apache.poi</groupId><art…