python数据分析:Pandas之Series
2020-11-23 16:46:44

1 Series简介

Pandas 是python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。

pandas的两大主要数据结构 Series和DateFrame,其中Series 是带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。轴标签统称为索引,它由两部分组成

  • values:一组数据(ndarray类型)

  • index:相关的数据索引标签

形式如下:

特点:数据对齐事内在的,标签与数据默认对齐,除非特殊情况,一般不会断开连接,因此通过索引取值非常方便,不需要循环,可以直接通过字典方式,key 获取value

2 Series 创建的几种方式

2.1 列表创建

import pandas as np
import pandas as pd
# Series组成部分:pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
lst = [1,3,5,6,10,23]
s = pd.Series(lst) # 可以通过index指定索引,如果不指定索引,则会自动从0开始生成索引,我们叫做隐式索引
s
lst = [1,3,5,6,10,23]
s = pd.Series(lst,index=["A","B","C","D","E","F"]) # 通过index设置显式索引
s

2.2 numpy创建

s = pd.Series(np.random.randint(1,10,size=(3,)),index=['a','b','c'])
s

2.3 字典创建

dic = {"A":1,"B":2,"C":3,"D":2}
s2 = pd.Series(dic)
s2

3  Series的索引和切片

因为Series只有一列,因此一般只对行进行操作,索引分为隐式索引和显示索引,因此不同的方式操作起来也不一样。

3.1 Series隐式索引的操作

lst = [1,3,5,6,10,23]
s = pd.Series(lst)


  • s[0]        取某一行,也可以说取某个元素

  • s[[0,1]]  取多行时,里面则是列表,可存储多个

  • s[0:2]     切片操作,取0-2行,但是只能取到0和1行,顾头不顾尾

  • s.iloc[0:2]  使用iloc来专门对隐式索引进行相关操作,也是只能取到0和1行,顾头不顾尾

  • s.iloc[[0,1]]  使用iloc来专门对隐式索引进行相关操作,跟s[[0,1]]一样

这里就不一一举例了,我可是一个一个都试过的。

3.2 Series显式索引的操作

lst = [1,3,5,6,10,23]
s1 = pd.Series(lst,index=["A","B","C","D","E","F"])
  • s1["A"]     取某行或单个元素

  • s1[["A","B"]]    取多行,可以是连续的,也可以是不连续的

  • s1["A":"B"]       切片,取A行和B行,这里的B行是可以取到的,头和尾都可以取到

  • s1.loc["A":"B"]  使用loc来专门对显式索引进行相关操作,这里的B行也可以取到

  • s1.loc[["A","B"]]  使用loc来专门对显式索引进行相关操作

总结

  1. Series的索引和切片只针对行而言,因为它只有一列

  2. loc是对于显式索引的相关操作(对于标签的处理),iloc是针对隐式索引的相关操作(对于整数的处理)。

  3. 我们发现其实s[0:2] 与 s.iloc[0:2]没有太大差别(显式索引也是一样),这并不说明iloc就没有用,个人觉得它更有意义的是在DataFrame当中使用,后面会讲到。

4 Series的基本操作

4.1 显示Series部分数据内容

  • s.head(n)  该函数代表的意思是显示前多少行,可以指定显示的行数,不写n默认是前5行

  • s.tail(n)  该函数代表的意思是显示后多少行,可以指定显示的行数,不写n默认是前5行

lst = [1,3,5,6,10,23]
s1 = pd.Series(lst,index=["A","B","C","D","E","F"])
s1.head() # 显示前5行
s1.tail() # 显示后5行

4.2 Series去重操作

s.unique()  结果为一维数组

dic = {"A":1,"B":2,"C":3,"D":2}
s2 = pd.Series(dic)
s2.unique()  # 原s2并未修改,该结果返回的是一维数组

4.3 Series的相加运算

Series相加,会根据索引进行操作,索引相同则数值相加,索引不同则返回NaN

NaN在pandas解释中为 not a number ,它是float类型,表示缺失数据,可以参与运算。

# s1
lst = [1,3,5,6,10,23]
s1 = pd.Series(lst,index=["A","B","C","D","E","F"])
# s2
dic = {"A":1,"B":2,"C":3,"D":2}
s2 = pd.Series(dic)

s3 = s2+s1


4.4 Series缺失值操作

查看Series中哪些是NaN

二者都是判断是否为空,返回的结果为True或False

  • s.notnull() 不为空返回True,为空返回False

  • s.isnull()     不为空返回False,为空返回True

s3.isnull()
s3.notnull()

需求1:只显示不为空的行

s3[s3.notnull()]

需求2:只显示为空的行

s3[s3.isnull()]

上一页
2023-11-22 15:30:35
下一页