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
浙公网安备 33010602011771号