(五)Python:Pandas中的Series

2022-12-12 13:38:13 浏览数 (2)

目录

基本特征

创建

自动生成索引

自定义生成索引

使用

基本运算

数据对齐


基本特征

  • 类似一维数组的对象
  • 由数据和索引组成
  • 有序定长的字典

创建

        Series能创建出带有数据和索引的字典来,且索引(index)与值(value)之间相互独立。创建方法如下所示:

自动生成索引

        Series能创建自动生成索引的字典,索引从0开始,代码如下所示:

代码语言:javascript复制
import pandas as pd

aSer = pd.Series([1, 2.0, 'a']) # 自带索引
print(aSer)
print(aSer.values)              # 输出值
print(aSer.index)               # 输出键

运行结果如下所示:

生成自带索引的字典 0      1 1    2.0 2      a dtype: object 值 [1 2.0 'a'] 键,和range函数类似 RangeIndex(start=0, stop=3, step=1)

自定义生成索引

        Series除了能创建自动生成索引的字典外,还能自定义生成索引,代码如下所示:

代码语言:javascript复制
import pandas as pd

bSer = pd.Series(['apple', 'peach', 'lemon'], index=[1, 2, 3])   # 指定索引
print(bSer)
print(bSer.values)    # 输出值
print(bSer.index)     # 输出键

运行结果如下所示:

自定义生成索引的字典· 1    apple 2    peach 3    lemon dtype: object 值 ['apple' 'peach' 'lemon'] 自定义的键 Int64Index([1, 2, 3], dtype='int64')

使用

基本运算

        定义好了一个Series之后,我们可以对它进行一些简单的操作,代码如下所示:

代码语言:javascript复制
import pandas as pd
import numpy as np
aSer = pd.Series([3, 5, 7], index=['a', 'b', 'c'])
print(aSer['c'])    # 取键值
print(aSer*2)       # 值乘2
print(np.exp(aSer))  # 自然对数(e)的N次方, 如e^3

运行结果如下所示:

键值 7 把键值乘以2 a     6 b    10 c    14 dtype: int64 取自然对数(e)的N次方 a      20.085537          = e^3 b     148.413159 c    1096.633158 dtype: float64

数据对齐

        数据对齐是Serie的一个很重要的功能,能简化数据处理,代码如下所示:

代码语言:javascript复制
import pandas as pd

data = {'AXP': '86.40', 'CSCO': '122.64', 'BA': '99.44'}
sindex = ['AXP', 'CSCO', 'BA', 'AAPL']

aSer = pd.Series(data)  # 根据自身创建一个Series
print(aSer)
print(pd.isnull(aSer))  # 检测哪些值是空的

bSer = pd.Series(data, index= sindex)   # 根据自身的值和把另一个列表作为索引创建一个Series
print(bSer)             # 对应索引无数据的,显示为NaN(Not a number)
print(pd.isnull(bSer))  # 检测哪些值是空的

运行结果如下所示:

根据自身创建一个Series AXP      86.40 CSCO    122.64 BA       99.44 dtype: object 检测哪些值是空的 AXP     False CSCO    False BA      False dtype: bool 根据自身的值和把另一个列表作为索引创建一个Series AXP      86.40 CSCO    122.64 BA       99.44 AAPL       NaN dtype: object 检测哪些值是空的 AXP     False CSCO    False BA      False AAPL     True dtype: bool

        数据对齐的一个重要功能是:在运算中自动对齐不同索引的数据,代码如下所示:

代码语言:javascript复制
import pandas as pd

data = {'AXP': '86.40', 'CSCO': '122.64', 'BA': '99.44'}
sindex = ['AXP', 'CSCO', 'BA', 'AAPL']
bSer = pd.Series(data, index= sindex)

aSer = {'AXP':'86.40','CSCO':'122.64','CVX':'23.78'}
cSer = pd.Series(aSer)
print(bSer   cSer)  # 都有数据才会显示,如bSer中无CVX,所以显示为NaN,都有数据的,因为是字符串,便拼接在一起

 运行结果如下所示:

AAPL             NaN AXP       86.4086.40 BA               NaN CSCO    122.64122.64 CVX              NaN dtype: object

        若数据类型是数值型,便会相加,代码如下所示:

代码语言:javascript复制
import pandas as pd
data = {'AXP':86.40,'CSCO':122.64,'BA':99.44}
sindex = ['AXP', 'CSCO', 'BA', 'AAPL']
aSer = pd.Series(data, index = sindex)
bSer = {'AXP': 86.40, 'CSCO': 130.64, 'CVX': 23.78}
cSer = pd.Series(bSer)
print( (aSer cSer)/2)    # 数值相加再除2

 运行结果如下所示:

AAPL       NaN AXP      86.40 BA         NaN CSCO    126.64 CVX        NaN dtype: float64

0 人点赞