Python——pandas模块—Series数据结构

    • Python——pandas模块—Series数据结构
  • pandas
  • Series
    • 创建Series
      • 没有指定索引列时,自动创建:0~~(N-1)(N:数组长度)的整数型索引
      • 指定索引列index(数字,字符串)这点与数组不同,数组中的元素类型要相同
      • 使用列表、数组构建Series
      • 通过字典/字典对象的方式创建Series
    • 访问Sreies
      • Series.head()从前访问
      • Series.tail()从后访问
      • Sreies.index查看索引列
      • Sreies.values查看数据列
      • Series.dtype查看数据类型
    • Series的使用
      • 使用一个Series创建另一个Series
      • 缺失值检测
      • 非缺失值检测
      • 练习
    • 查找Series(索引)
      • [索引名]
      • [索引位置下标]
    • 切片操作
      • 索引位置切片 [索引位置:索引位置:步长]
      • 索引值切片[索引值:索引值]
    • 索引列重新赋值
    • Series的运算
      • 一个Series与数值做运算
      • 两个Series运算
  • 总结:

Python——pandas模块—Series数据结构

pandas

Numpy更适合处理统一的数值数组数据
pandas是专门为处理表格和混杂数据设计的
panda有两种数据结构:

  1. Series
  2. DataFrame

Series

  1. Series数据类型能够保存 任何类型的数据(整数,字符串,浮点数,Python对象等)的一维标记数组轴标签统称为索引,每个元素都带有一个索引
  2. Series表现形式:索引在左边,值在右边
  3. 可以通过Series的属性:
    index ——获取——索引列
    values——获取——数据列

可以这样想:每一个元素可以类似的看成一个字典,整个Series可以类似的看成一个二维数组

如图:

创建Series

没有指定索引列时,自动创建:0~~(N-1)(N:数组长度)的整数型索引

import pandas as pd
#通过传入一个列表用Series函数创建
obj = pd.Series([4,7,-5,3])
print('创建的Series对象为')
print(obj)

自动添加整数索引 0~~4(数组长度为4)

指定索引列index(数字,字符串)这点与数组不同,数组中的元素类型要相同

#指定索引列创建Series对象
obj = pd.Series([4,2,-5,3],index=[2,1,1,'r_4'])
print('指定索引列创建Series对象')
print(obj)

使用列表、数组构建Series

lis = [1,2,3,4,5,6,7]
array = np.arange(7)
Series_lis = pd.Series(lis)
Series_array = pd.Series(array)
print('通过列表创建的Series')
print(Series_lis)
print('通过数组创建的Series')
print(Series_array)

同样,还是自动添加索引列

通过字典/字典对象的方式创建Series

不同的是,在字典里的key不可重复
但是在Series中index是可以重复的

#创建一个字典对象方式
dic = dict(zip(lis,array))
#zip打包zip(lis,array)操作之后形成一个元组列表
Series_dict = pd.Series(dic)
print('通过字典对象创建的Series对象:')
print(Series_dict)
#直接传入字典方式
Series_dict2 = pd.Series({'a':1,'b':2,'c':3,'d':4})
print('直接传入字典的方式创建的Series')
print(Series_dict2)

访问Sreies

再来看一个字典构建Series实例

dic = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
a = pd.Series(dic)
print(a)

Series.head()从前访问

默认访问前5个元素

print(a.head(2))

Series.tail()从后访问

默认访问后5个元素

print(a.tail(2))

Sreies.index查看索引列

print(a.index)

Sreies.values查看数据列

print(a.values)

Series.dtype查看数据类型

print(a.dtype)

Series的使用

使用一个Series创建另一个Series

上面我们创建了一个Series对象a
接下来,我们用a创建另一个Series对象

'''字典构建Serise实例'''
dic = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}
a = pd.Series(dic)
b = pd.Series(a,index=['California','Ohio','Oregon','Texas'])
print('通过一个对象构建的Series对象:')
print(b)

创建的时候,新的对象的索引列为传入的index
样板对象有的index直接取其value
样板对象没有的index,添加进去,value值设为缺失值NaN

缺失值检测

返回的是一个 数据列为bool型的对象
True:缺失值
False:不是缺失值

#缺失值检测
print('缺失值检测')
print(pd.isnull(b))

非缺失值检测

pd.notnull(Series)

练习

生成一个和sd长度相同的随机数Series
sd = pd.Series([1,2,3,4,5])

sd = pd.Series([1,2,4,1,2])
#生成一个与sd长度相同的随机数数列
a = np.random.random(len(sd))
#用数组创建Series对象
s = pd.Series(a)
print('创建的Series对象:')
print(s)

查找Series(索引)

[索引名]

当有相同索引名时,返回多条数据
再次验证了,Series对象中索引的名字不唯一,可以重复出现

#Series[索引名]
import pandas as pd
obj = pd.Series([1,2,3,4],index=['d','f','d','c'])
print('创建的Series:')
print(obj)
obj2 = obj['d']
print('查找索引为d的数据:')
print(obj2)

[索引位置下标]

下标的取值范围:[o,len(Series.values)]
可以是:
整数:正取,从0开始
负数:倒取,从-1开始

# [索引位置下标]
import pandas as pd
obj = pd.Series([1,2,3,4],index=['d','f','d','c'])
print('索引1的数据:',obj[1])
print('索引最后一个的数据:',obj[-1])

切片操作

类似Numpy的ndarray切片操作
不同的是,Series切片中的数据除了索引号,还可以是索引值
注意:
当使用索引值进行切片时,索引列里的索引值要唯一,除非切片的起始值为唯一索引

索引位置切片 [索引位置:索引位置:步长]

#索引位置切片
import pandas as pd
obj = pd.Series([1,2,3,4],index=['d','f','d','c'])
print(obj[1:3])

索引值切片[索引值:索引值]

当使用索引值进行切片时,索引列里的索引值要唯一,除非切片的起始值为唯一索引

#索引位置切片
import pandas as pd
obj = pd.Series([1,2,3,4],index=['d','f','d','c'])
print(obj['f':'c']


切片起始索引为不唯一索引时

import pandas as pd
obj = pd.Series([1,2,3,4],index=['d','f','d','c'])
print(obj['d':'c']

索引列重新赋值

import pandas as pd
obj = pd.Series([1,2,3,4],index=['d','f','d','c'])
obj.index = ['one','two','three','four']
print(obj)

此方法只能对index进行修改,不可以对values进行修改

Series的运算

Series保留了Numpy中的数组运算,均可以使用
Series进行数组运算的时候,索引与值之间的映射关系不会发生改变

一个Series与数值做运算

# Series运算
import pandas as pd
obj = pd.Series([100,200,300,400],index = ['one','two','three','four'])
print('初始数组:')
print(obj)
print('+1数组:')
print(obj+1)
print('-2初始数组:')
print(obj-2)
print('*3初始数组:')
print(obj*3)
print('/2初始数组:')
print(obj/2)


两个Series运算

两个对应元素进行+ - * /,对方没有的返回index,且value=NaN

import pandas as pd
obj = pd.Series([100,200,300,400],index = ['one','two','three','four'])
obj2 = pd.Series([1,2,3],index=['a','b','one'])
print(obj+obj2)


当两个Series对象中的某一重复索引个数为多个
要用Series1的索引对应的value,与Series2 中重复的索引对应的value分别运算,分别返回

总结:

对Series对象进行操作时,基本上可以看成对Numpy中的ndarray进行操作
ndarray中的绝大多数操作都可以用在Series上

Python——pandas模块—Series数据结构相关推荐

  1. Python Pandas模块教程

    Python Pandas模块 (Python Pandas Module) Pandas is an open source library in Python. It provides ready ...

  2. Pandas知识点-Series数据结构介绍

    Pandas知识点-Series数据结构介绍 本文用到的数据来源于网易财经,具体下载方式可以参考上一篇文章:https://blog.csdn.net/weixin_43790276/article/ ...

  3. python pandas模块_Python3.5 Pandas模块中Series用法详解

    Python3.5 Pandas模块中Series用法实例 本文实例讲述了Python3.5 Pandas模块之Series用法.分享给大家供大家参考,具体如下: 1.Pandas模块引入与基本数据结 ...

  4. Python Pandas 常用的数据结构有哪些?详解Series、DataFrame、Index数据结构。

    Pandas常用数据结构 Pandas简介 Series 构建 Series 对象 通过数组/列表 通过ndarray 通过dict 指定index Series 数据结构 查看 Series 数据 ...

  5. Python pandas模块

    1 pandas数据读取 Pandas需要先读取表格类型的数据,然后进行分析 1.1 读取文件和基础语句: 读取csv文件数据: import pandas as pd filepatch=r&quo ...

  6. Python pandas模块输出每行中间省略号问题

    关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...

  7. pandas基础 -- Series数据结构

    Series数据结构 简介 Series又称之为序列 Series是一种类似于一维数组的对象,由下面两个部分组成: values:一组数据(ndarray类型) index:相关的数据索引标签 nam ...

  8. Python Pandas库 Series.dt.tz_localize()和 Series.dt.tz_convert()的简单使用

    概念理解: **Series.dt.tz_localize()**方法的作用为: 官方解释:Localize tz-naive Datetime Array/Index to tz-aware Dat ...

  9. [python]python pandas 模块

    一个开源数据分析的库,它提供的数据结构DataFrame极大的简化了数据分析过程中一些繁琐操作. Pandas所支持的数据类型: 1. float 2. int 3. bool 4. datetime ...

最新文章

  1. OOP 面向对象 七大原则 (一)
  2. JSONObject JSONArray各种用法以及js eval()函数与JSON.parse的区
  3. cisco 2960 VLAN MAC_思科交换机交换机中ip、mac地址绑定
  4. ABAP-DOI技术的优化
  5. 从字符串中检索字符实现翻页
  6. dncnn图像去噪_基于强化学习的图像去噪方法与流程
  7. 微服务学习之02支付模块构建(单个、集群)【Hoxton.SR1版】
  8. 数学建模常用模型之秩和比综合评价法
  9. CREO:CREO软件之零件【模型】形状之拉伸、旋转、旋转混合的简介及其使用方法(图文教程)之详细攻略
  10. linux IIC子系统分析(七)——实例分析通过i2c-dev操作I2C设备
  11. 复旦MBAer聊“进博”:希望已至,寻路未来!
  12. Mybatis insert、update 、delete返回值
  13. wps office 2005:不得不用的14绝技
  14. <span>的宽高到底是多少?
  15. cytoscape作图难?10分钟搞定OTU的互作网络分析相关性联系图+MENA使用教程!
  16. 微信公众号开发002-微信网页授权
  17. coreldraw sp2精简版 x4_coreldraw下载
  18. html ajax 图片上传,Ajax实现图片上传并预览功能
  19. 《三国蜀汉赵云传》隐私政策
  20. 景德镇特色的部门级别与权限

热门文章

  1. Edsger Wybe Dijkstra
  2. 阿里云服务器华北1、华北2、华北3、华北5地域在哪个城市为什么没有华北4?...
  3. php 栏目名称,PHPCMS V9调用栏目ID,栏目名称,父栏目,顶级父栏目
  4. 2019爪哇部落第十届新生选拔赛 题解
  5. 三面蚂蚁金服,分享面试经历总结(已拿offer)
  6. “软件测试”一般都在测试什么你知道吗?
  7. c语言课程设计之黑白棋游戏,c语言课程设计黑白棋游戏.doc
  8. emoji 絵文字意思对照
  9. $vjudge-$基本算法专题题解
  10. 将音频翻译成文字的软件叫什么?这几个软件值得你一试