Python数据分析--你不得不会的Pandas数据结构Series(上)

从最开始的Python基础语言,到前几天的Numpy模块,其实前面所有的东西都是在为Pandas模块做准备。Pandas是数据分析核心工具包,基于Numpy构建,为数据分析而存在!
Pandas模块包括一维数组Series和二维数组DataFrame,可以直接读取数据并处理,高效且简单,这个模块兼容各种数据库,支持各种分析算法,话不多说,我们今天首先来看一维数组Series
Series是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引
我们来简单看一下Series数据长什么样子

(1)Series数据结构

import numpy as np
import pandas as pd  
# 导入numpy、pandas模块

s = pd.Series(np.random.rand(5))#随机创建5个Series数据
print(s)#输出数据
print(type(s))#输出数据类型

输出结果:
在这里插入图片描述
我们可以看到Series数据其实就是带有标签的一维数组,它相较于前面学的Numpy的ndarray数组而言,它是自带索引index的数组,组成结构为一维数组+对应索引,所以当我们只看Series的值的时候,其实它就是一个ndarray
对于Series数据我们可以分别查看其索引index和值values

print(s.index,type(s.index))
print(s.values,type(s.values))

输出结果:
在这里插入图片描述
通过输出结果我们可以看到Series的值的类型其实就是ndarray,Series数据和dict相比而言,Series更像是一个有顺序的字典,其索引原理与字典十分相似,一个用key,一个用index

(2)Series创建方法

首先来看由字典创建的Series

dic = {'a':1 ,'b':2 , 'c':3, '4':4, '5':5}
s = pd.Series(dic)
print(s)

输出结果:
在这里插入图片描述
用字典创建Series时,字典的key就是Series的index,字典的values就是Series的values

再来看由一维数组创建的Series

arr = np.random.randn(5)
s = pd.Series(arr)
print(arr)
print(s)

输出结果:
在这里插入图片描述
上面的index是默认的,我们也可以自定义Series的index

s = pd.Series(arr, index = ['a','b','c','d','e'],dtype = np.object)
print(s)

输出结果:
在这里插入图片描述
在自定义index时,要注意index的长度需要和数组的长度保持一致
再来看由标量创建的Series

s = pd.Series(10, index = range(4))
print(s)

输出结果:
在这里插入图片描述
如果data是标量值的时候就必须要提供索引,因为该值会重复来匹配索引的长度

(3)Series名称属性–name
创建Series时可以自定义Series的名称,即它的name

s1 = pd.Series(np.random.randn(5))
print(s1)
print('-----')
s2 = pd.Series(np.random.randn(5),name = 'test')
print(s2)
print(s1.name, s2.name,type(s2.name))

输出结果:
在这里插入图片描述
name是Series的一个参数,创建一个数组的名称,通过.name的方法输出数组的名称,输出格式为str,如果没有自定义名称,则输出为None
当然了,Series也可以重命名

s3 = s2.rename('hehehe')
print(s3)
print(s3.name, s2.name)

输出结果:
在这里插入图片描述
通过rename()的方法来重新命名一个Series数组的名称,并且指向一个新的数组,原来的数组是不变的

(4)Series位置下标
Series的位置下标类似于序列


s = pd.Series(np.random.rand(5))
print(s)
print(s[0],type(s[0]),s[0].dtype)
print(float(s[0]),type(float(s[0])))

输出结果:
在这里插入图片描述
Series的位置下标从0开始,输出结果为numpy.float的格式,可以通过float()函数转换为Python float格式,numpy.float与float所占用的字符是不一样的

(5)Series标签索引
因为Series是有标签的,所以我们查看Series值的时候可以直接通过标签来查看,跟字典通过key值来查看values 是非常像的

s = pd.Series(np.random.rand(5), index = ['a','b','c','d','e'])
print(s)
print(s['a'],type(s['a']),s['a'].dtype)
# 方法类似下标索引,用[]表示,内写上index,注意index是字符串

sci = s[['a','b','e']]
print(sci,type(sci))
# 如果需要选择多个标签的值,用[[]]来表示(相当于[]中包含一个列表)
# 多标签索引结果是新的数组

输出结果:
在这里插入图片描述
(6)Series切片索引
这里的切片和序列中切片的使用基本是一样的,只是换成了index,要注意的一点是用index做切片的时候是末端包含的,但是序列中的切片是左闭右开,末端元素不包含

s1 = pd.Series(np.random.rand(5))
s2 = pd.Series(np.random.rand(5), index = ['a','b','c','d','e'])
print(s1[1:4],s1[4])
print(s2['a':'c'],s2['c'])
print(s2[0:3],s2[3])

输出结果:
在这里插入图片描述
(7)Series布尔型索引
布尔型索引是做数据分析中非常重要的部分,所以Series里面也有

s = pd.Series(np.random.rand(3)*100)
s[4] = None  # 添加一个空值
print(s)
bs1 = s > 50
bs2 = s.isnull()
bs3 = s.notnull()
print(bs1, type(bs1), bs1.dtype)
print(bs2, type(bs2), bs2.dtype)
print(bs3, type(bs3), bs3.dtype)
print('-----')
# 数组做判断之后,返回的是一个由布尔值组成的新的数组
# .isnull() / .notnull() 判断是否为空值 (None代表空值,NaN代表有问题的数值,两个都会识别为空值)

print(s[s > 50])
print(s[bs3])
# 布尔型索引方法:用[判断条件]表示,其中判断条件可以是 一个语句,或者是 一个布尔型数组!

输出结果:
在这里插入图片描述

今天的分享就到这里啦,有问题的话可以私聊我哦,看到都会回的,没回就是在写作业啦~

本人是一位211高校在读的本科生,对数据分析比较感兴趣,去年拿到了数学建模国家一等奖,今年参加了美赛还没结果,参加比赛选的题型都是大数据型,用过Excel,Spss,Lingo,MATLAB做数据分析,现在觉得Python比较高效,做数据可视化也非常方便,每天都在坚持学习,对Python数据分析和数据可视化有兴趣的可以关注我哦,每天都会更新的,跟我一起进步呀

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值