热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Python数据分析01]Pandas数据结构之Series

#导入pandas包importpandasaspd#Pandas主要有两个数据结构:Series和DataFrame,这里我们介绍Series的使

# 导入pandas包

import pandas as pd

# Pandas主要有两个数据结构:Series和DataFrame,这里我们介绍Series的使用方法
# Series是一种类似一维数组的对象,它由一组数组(Numpy数据类型)以及一组与之相关的数据标签(索引下标)组成

obj = pd.Series([4, 7, -5, 3])

# Series的表现形式:索引下标在左边,值在右边。这里我们没有为数据指定索引,会自动创建一个0到N-1的(N为数据的长度)的整数型索引。

print(obj)

0 4
1 7
2 -5
3 3
dtype: int64

# 通过Series的index和values属性获取索引下标和数组的表现形式

obj.index

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

obj.values

array([ 4, 7, -5, 3], dtype=int64)

# 创建一个Series并未其各个数据指明索引下标

obj2 = pd.Series([4, 7, -5, 3], index=(['d', 'b', 'a', 'c']))

obj2

d 4
b 7
a -5
c 3
dtype: int64

obj2.index

Index(['d', 'b', 'a', 'c'], dtype='object')

# 与Numpy一样,我们可以通过索引下标方式选取Series中的一个或者一组值

obj2['a']

-5

obj2['d'] = 6

obj2[['c', 'a', 'd']]

c 3
a -5
d 6
dtype: int64

# Numpy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接:

obj2

d 6
b 6
a -5
c 3
dtype: int64

obj2[obj2 > 0]

d 6
b 6
c 3
dtype: int64

obj2*2

d 12
b 12
a -10
c 6
dtype: int64

import numpy as np
np.exp(obj2)

d 403.428793
b 403.428793
a 0.006738
c 20.085537
dtype: float64

# 将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。可以用在许多原本需要字典参数的函数中

'b' in obj2

True

'e' in obj2

False

# 数据存放在一个Python字典中,可以直接通过这个字典来创建Series:

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

obj3 = pd.Series(sdata)

obj3

Ohio 35000
Oregon 16000
Texas 71000
Utah 5000
dtype: int64

# 如果只传入一个字典,则结果Series中的索引下标就是原字典中的键(有序排列)

states = ['California', 'Ohio', 'Oregon', 'Texas']

obj4 = pd.Series(sdata, index=states)

obj4

California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64

# Pandas中,NaN表示缺失的值,pandas的isnull和notnull函数可用于检查缺失数据

pd.isnull(obj4)

California True
Ohio False
Oregon False
Texas False
dtype: bool

pd.notnull(obj4)

California False
Ohio True
Oregon True
Texas True
dtype: bool

# Series中最重要一个功能是:它在算数运算中会自动补齐不同索引的数据

obj3

Ohio 35000
Oregon 16000
Texas 71000
Utah 5000
dtype: int64

obj4

California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
dtype: float64

obj3+obj4

California NaN
Ohio 70000.0
Oregon 32000.0
Texas 142000.0
Utah NaN
dtype: float64

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

obj4.name = 'population'

obj4.index.name = 'state'

obj4

state
California NaN
Ohio 35000.0
Oregon 16000.0
Texas 71000.0
Name: population, dtype: float64

# Series的索引可以通过赋值的方式直接修改

obj

0 4
1 7
2 -5
3 3
dtype: int64

obj.index = ['zhejiang', 'ningbo', 'caicai', 'nbu']

obj

zhejiang 4
ningbo 7
caicai -5
nbu 3
dtype: int64


推荐阅读
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
author-avatar
手机用户2502900723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有