🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972
个人介绍: 研一|统计学|干货分享
擅长Python、Matlab、R等主流编程软件
累计十余项国家级比赛奖项,参与研究经费10w、40w级横向
【Python进阶(七)】——Series数据结构,建议收藏!
该篇文章主要讲解了Python数据结构之Series,首先阐述了该数据结构的特点,然后利用Python展示了其定义方法和操作方法。
1 Series的主要特点
在Python的pandas库中,Series
是一个一维的数组型对象,它能够保存任何数据类型(整数、字符串、浮点数、Python对象等),它带有一个轴标签(即索引),使得数据操作变得非常简单和直观。以下是Series
的一些主要特点:
- 带有标签的一维数组:
Series
对象类似于NumPy的一维数组(ndarray),但是每个元素都有一个与之相关联的索引标签。
- 索引:
Series
的索引可以是任何数据类型(整数、字符串、日期时间等),这使得Series
非常适合用于时间序列数据。- 索引是自动生成的,通常是0到N-1的整数,除非明确指定了其他索引。
- 数据类型:
Series
可以保存任何数据类型,包括整数、浮点数、字符串、布尔值等。- 如果
Series
中的数据类型不一致,它会自动转换为最通用的数据类型(例如,将整数转换为浮点数以包含小数)。
- 数据操作:
- 提供了许多用于数据分析和处理的方法,如算术运算、排序、筛选、分组等。
- 可以使用索引或条件表达式来访问或修改
Series
中的元素。
- 与DataFrame的兼容性:
Series
是pandas中更复杂的二维数据结构DataFrame
的基础。- 可以将多个
Series
组合成一个DataFrame
,或将DataFrame
的列视为单独的Series
对象进行处理。
- 内存效率:
- 与纯Python列表相比,
Series
对象在内存使用上更加高效,因为它们使用了NumPy的底层数组结构。
- 与纯Python列表相比,
- 缺失数据处理:
Series
支持缺失数据(NaN),这使得它非常适合处理现实世界中的数据集,其中可能包含缺失或无效的值。- 提供了多种方法来处理缺失数据,如填充、删除或插值。
- 绘图集成:
Series
对象与Matplotlib等绘图库无缝集成,可以轻松创建各种数据可视化图表。
- 与NumPy的兼容性:
Series
的底层实现基于NumPy的数组,因此它继承了NumPy的许多功能和性能优势。
- 扩展性:
- 可以使用自定义的函数和方法来扩展
Series
的功能,以满足特定的数据分析需求。
- 可以使用自定义的函数和方法来扩展
2 Series的定义方法
运行程序:
import pandas as pd
mySeries1=pd.Series(data = [11,12,13,14,15,16,17],index=["a","b","c","d","e","f","g"])
mySeries1
运行结果:
a 11
b 12
c 13
d 14
e 15
f 16
g 17
dtype: int64
PS :
1.pd.Series([11,12,13,14,15,16,17], index=[a,b,c,d,e,f,g]) #index为字符串时,需要双引号或单引号;
2.当data只包含一个元素时,series对象的定义支持“循环补齐”;
3.当series值多与一个时,值数和索引数需一致。
3 Series的操作方法
运行程序:
import pandas as pd
mySeries4=pd.Series([21,22,23,24,25,26,27], index=["a","b","c","d","e","f","g"])
mySeries4.index#显示索引
mySeries4.values #显示值
mySeries4['b']#索引b所对应值
mySeries4["b"] #索引b所对应值
mySeries4[["a","b","c"]] #索引a、b、b所对应值
mySeries4["a":"d"] #索引a-d所对应值
mySeries4[1:4:2]#第2个-第5个,步长为2
mySeries4
"c" in mySeries4 #判断索引c是否在series中
"h" in mySeries4#判断索引h是否在series中
import pandas as pd
mySeries4=pd.Series([21,22,23,24,25,26,27], index=["a","b","c","d","e","f","g"])
mySeries5=mySeries4.reindex(index=["b","c","a","d","e","g","f"]) #修改索引
mySeries5
mySeries5=mySeries4.reindex(index=["b","c","a","d","e","g","f"]) #修改索引
mySeries4
mySeries5=mySeries4.reindex(index=["new1","c","a","new2","e","g","new3"])#更新索引次序,不存在则为nan
mySeries5
mySeries4
运行结果:
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])Index(['a', 'b', 'c', 'd', 'e', 'f', 'g'], dtype='object')
array([21, 22, 23, 24, 25, 26, 27], dtype=int64)
22
22
a 21
b 22
c 23
dtype: int64
a 21
b 22
c 23
d 24
dtype: int64
b 22
d 24
dtype: int64
a 21
b 22
c 23
d 24
e 25
f 26
g 27
dtype: int64
True
False
b 22
c 23
a 21
d 24
e 25
g 27
f 26
dtype: int64
a 21
b 22
c 23
d 24
e 25
f 26
g 27
dtype: int64
new1 NaN
c 23.0
a 21.0
new2 NaN
e 25.0
g 27.0
new3 NaN
dtype: float64
a 21
b 22
c 23
d 24
e 25
f 26
g 27
dtype: int64