一、Pandas基础:Series
一、Series简介
- Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。注意:Series中的索引值是可以重复的。
二、Series创建
- Series通过numpy数组,列表及字典等多重方式进行创建
- 当使用字典创建时,Series会使用字典的键作为数组的索引值
- 当使用numpy和列表创建时,Series会以它们的序列号作为索引值,可用index参数自定义索引值
- Series数组创建后,可以通过.index属性重建索引值
import pandas as pd a=pd.Series([87,95,84]) print("列表方式(默认索引):\n",a) b=pd.Series([87,95,84],index=['小红','小兰','小绿']) print("列表方式(自定义索引):\n",b) c=pd.Series({'小红':87,'小兰':95,'小绿':84}) print("字典方式:\n",c) a.index=(['小红','小兰','小绿']) print("对a重建索引:\n",a) >>> 列表方式(默认索引): 0 87 1 95 2 84 dtype: int64 列表方式(自定义索引): 小红 87 小兰 95 小绿 84 dtype: int64 字典方式: 小兰 95 小红 87 小绿 84 dtype: int64 对a重建索引: 小红 87 小兰 95 小绿 84 dtype: int64
三、Series查询
- Series保留了大量Numpy中查询方法,可以通过索引和切片的方式查询Series的值(看Numpy查询方式的,点击这里)
四、Series运算
- 同样的,Series保留了大量Numpy的运算机制,它们在Series中均可以使用。
- Series进行数组运算的时候,索引与值之间的映射关系不会发生改变。
- 在操作Series的时候,基本上可以把Series看成NumPy中的ndarray数组来进行操作。(看Numpy运算方法的,点击这里)
五、缺失值检测
- pandas中的isnull和notnull两个函数可以用于在Series中检测缺失值,这两个函数的返回时一个布尔类型的Series
import pandas as pd a = pd.Series({'小红': 87, '小兰': 95, '小绿': 84, '小英': 99}) new_index = ['小红', '小兰', '小丸子', '小绿', '小英'] a = pd.Series(a, index=new_index) print("带缺失值的数组:\n", a) print("列出缺失值项:\n", a[pd.isnull(a)]) print("列出有效值项:\n", a[pd.notnull(a)]) >>> 带缺失值的数组: 小红 87.0 小兰 95.0 小丸子 NaN 小绿 84.0 小英 99.0 dtype: float64 列出缺失值项: 小丸子 NaN dtype: float64 列出有效值项: 小红 87.0 小兰 95.0 小绿 84.0 小英 99.0 dtype: float64
六、自动对齐
- 当多个series对象之间进行运算的时候,如果不同series之间具有不同的索引值,那么运算会自动对齐不同索引值的数据,如果某个series没有某个索引值,那么最终结果会赋值为NaN。
import pandas as pd a = pd.Series([12, 23, 34], index=['p1', 'p2', 'p3']) b = pd.Series([56, 78, 90, 38], index=['p2', 'p3', 'p4', 'p5']) print("自动对齐索引,对不上的赋值NaN:\n", a + b) >>> 自动对齐索引,对不上的赋值NaN: p1 NaN p2 79.0 p3 112.0 p4 NaN p5 NaN dtype: float64
七、数组名称
- Series对象本身以及索引都具有一个name属性,默认为空,根据需要可以进行赋值操作。
import pandas as pd a = pd.Series({'小红': 87, '小兰': 95, '小绿': 84, '小英': 99}) a.values.name='成绩' a.name='考试成绩' a.index.name='姓名' print("补全名称的数组:\n", a) >>> 补全名称的数组: 姓名 小兰 95 小红 87 小绿 84 小英 99 Name: 考试成绩, dtype: int64