Pandas --Series序列

一.什么是Series

  pandas Series 是一个带有标签的一维数组,能够保存任何数据类型(整数、字符串、浮点数、Python对象等)。你可以将它想象成 Excel 表格中的一列,或者一个字典与列表的结合体。是构建和分析更复杂二维数据(DataFrame)的基础。

  它的两个核心组成部分是:

    1)索引 (index): 类似于字典的键,是数据的标签。

    2)数据 (values): 存储的实际数据,是一个 NumPy 数组。

  使用的场景如:

    1)单变量数据分析

      分析一个指标随时间的变化(如每日气温、股价)

      分析一个属性的分布(如一个班级所有学生的身高)

    2)作为 DataFrame 的列

      这是 Series 最普遍的用法。当你从 DataFrame 中取出一列时,你得到的就是一个 Series

二.演示

  21. 创建Series 序列

"""
创建Series时指定了index,叫创建显示索引或 创建标签索引
重点:index是接一个列表或者接一个元组,不能是集合set,因为集合(set)是无序的。因为输出如下: 
a    9
b    9
c    9
"""
#index接一个集合set,这是错误的,导致每次构建时索引的顺序不同
s=pd.Series(9,index={"a","b","c"})

#index接一个元组,正确
s=pd.Series(9,index=("a","b","c"))
#index接一个列表,正确
s=pd.Series(9,index=["a","b","c"])
print(s)

"""
没有指定index索引,索引从0开始编号  
叫创建隐式索引,输出如下: 
0    21
1    39
2    42
3    56
4    81
"""
s=pd.Series([21,39,42,56,81])
print(s)

"""
使用字典生成series,其中字典的键作为索引index,输出如下:
a    0
b    1
c    2
d    3
"""
s=pd.Series({"a":0,"b":1,"c":2,"d":3})
print(s)

"""
使用范围生成series,索引与数据一 一对应,输出如下: 0 0 1 1 2 2 3 3 4 4 """ s=pd.Series(np.arange(5)) print(s) """ 使用随机数创建带有index的显式索引(标签索引),输出如下: A 76 B 69 C 36 D 73 """ s1=pd.Series(np.random.randint(10,100,4),index=['A','B','C','D']) print(s1)#修改索引时,要整体修改,修改后输出如下: """ E 76 F 69 G 36 H 73 """ s1.index=list('EFGH') print(s1)

  2.2 Series的属性

    Series的属性包括:index,values,dttype,shape,ndim,size,nbytes,name,hasnans,empty,T等

"""
   values属于获取series的值 
"""
s2=pd.Series([21,39,42,56,81])
#输出:[21 39 42 56 81]
print(s2.values)
#输出: 39
print(s2.values[1])

"""
    hasnans属于判断对象中是否有缺失值
"""
s2=pd.Series([21,39,None])
#输出:True
print(s2.hasnans)

"""
    empty属于series对象是否为空
"""
s3=pd.Series()
#输出:True
print(s3)

"""
    shape属性获取series形状, series是一维的
    ndim属性获取series维数
"""
#  输出:(3,)   ---表示3行1列
print(s2.shape)
#输出:1  ---表示1个维度
print(s2.ndim)


"""
   nbytes获取series对象在内存中占据的字节数 
   size获取series对象的数据元素个数
"""
 #输出:24 ---占用24个字节 3*8=24
print(s2.nbytes)
# 输出:3
print(s2.size)

  2.3 Series的增删改查

"""
 series的数据操作演示
    --提取和修改数据;添加数据;删除数据;删除series本身
"""
s4=pd.Series([99,74,44,73],index=['A','B','C','D'])
#查询数据 都是提取输出数据:74。 loc通过索引名称来取数据, iloc通过索引下标来取数据
print(s4['B'])
print(s4.loc['B'])
print(s4.iloc[1])

#修改数据单个数据
s4['B']=777#或者通过s4.loc['B']=777修改
#输出s4的序列,其中索引B处的数据值已改为777
print(s4)
#输出s4的序列,其中索引下标1处(B处)的数据值已改为777
s4.iloc[1]=999
print(s4)

#修改数据多个,通过索引下标修改,这里修改索引下标是0和2的对应数据值
s4[[0,2]]=(11,22)
#输出s4的序列,其中下标0处和3处的数据值分别改为了11,22
print(s4)


#通过切片查询与修改
#从下标0开始取到3(不包含3),取前面三个0,1,2下标索引的序列
print (s4[0:3])
#切片,从下标1开始取到3(不包含3),取二个1,2下标索引的序列
print (s4[1:3])
#切片修改,从下标0开始取到2(不包含2),修改下标0,1的数据值
s4[:2]=(12,64)
print(s4)

#添加数据 
s5=pd.Series([99,74,44,73],index=['A','B','C','D'])
#添加一行数据
s5['E']=31
print(s5)

#删除索引为E的行,使用del和drop()
del s5['E']
print(s5)
#删除索引为D的行,inplace=True是原地删除,把s5中指定数据行删除。inplace=False返回删除后的对象,不是s5对象
s5.drop(labels='D',inplace=True)
print(s5)
#删除索引为A和B的行
s5.drop(labels=['A','B'],inplace=True)
#输出 C    44
print(s5)

#删除series本身
del s5

 

posted on 2025-11-14 16:41  花阴偷移  阅读(0)  评论(0)    收藏  举报

导航