(二) Pandas模块之Series
一.Series
Series是一种类似与一维数组的对象,由下面两个部分组成:
- values:一组数据(ndarray类型)
- index:相关的数据索引标签
导包:
import pandas as pd from pandas import Series,DataFrame import numpy as np
二.Series的创建
两种创建方式:
(1) 由列表或numpy数组创建:默认索引为0到N-1的整数型索引
#使用列表创建Series,通过index参数设置该Series的显示索引 #注意:使用了显示索引,该Series依然具有隐式索引 Series(data=[1,2,3,4],index=['one','two','three','four']) #返回结果为: one 1 two 2 three 3 four 4 dtype: int64 #使用numpy创建Series Series(data=np.arange(10,60,6)) #返回结果为: 0 10 1 16 2 22 3 28 4 34 5 40 6 46 7 52 8 58 dtype: int64
(2) 由字典创建:不能在使用index.但是依然存在默认索引
注意:数据源必须为一维数据
dic = { 'math':100, 'English':50 } Series(data=dic,name='期末') #结果为: math 100 English 50 Name: 期末, dtype: int64
练习1:
使用多种方法创建以下Series,命名为s1:
语文 150
数学 150
英语 150
理综 300
三.Series的索引和切片
可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的是一个Series类型)。
(1) 显式索引:
- 使用index中的元素作为索引值
- 使用s.loc[](推荐):注意,loc中括号中放置的一定是显示索引
注意,此时是闭区间
s = Series(np.random.randint(60,100,size=(5,)),index=['a','b','c','d','e']) s['b'] #取单个索引对应的数据值 s[['b','c']]#取多个索引对应的数据值 s.loc['b'] #取单个索引对应的数据值 s.loc[['b','c']]#取多个索引对应的数据值 #注意:在Series中使用loc或者不使用效果一样
(2) 隐式索引:
- 使用整数作为索引值
- 使用.iloc[](推荐):iloc中的中括号中必须放置隐式索引
注意,此时是半开区间
s = Series(np.random.randint(60,100,size=(5,)),index=['a','b','c','d','e']) s[1] #取单个索引对应的数据值 s[[1,2]]#取多个索引对应的数据值 s.iloc[1] #取单个索引对应的数据值 s.iloc[[1,2]]#取多个索引对应的数据值 #注意:在Series中使用iloc或者不使用效果一样
(3) 切片
- 显示索引切片:index和loc :
s.loc['b':'c']
- 隐式索引切片:整数索引值和iloc
s.iloc[1:2]
四.Series的基本概念和运算
- 可以把Series看成一个定长的有序字典。向Series增加一行:相当于给字典增加一组键值对
- 可以通过shape,size,index,values等得到series的属性
- 可以使用s.head(),tail()分别查看Series的前n个和后n个值
- 对Series元素进行去重
s = Series(data=[1,1,2,2,3,3,4,4,4,5,6,7,8,7,7,66,43,342,6665,444,333,444]) s.unique() #Series中的去重函数
- 当索引没有对应的值时,可能出现缺失数据显示NaN(not a number)的情况
Series之间的运算
- 在运算中自动对齐不同索引的数据
- 如果索引不对应,则补NaN
s1 = Series(data=[1,2,3,4,5],index=['a','b','c','d','e']) s2 = Series(data=[1,2,3,4,5],index=['a','b','c','f','g']) s = s1+s2 #结果为: a 2.0 b 4.0 c 6.0 d NaN e NaN f NaN g NaN dtype: float64
- 可以使用pd.isnull(),pd.notnull(),或s.isnull(),notnull()函数检测缺失数据
#True/False是可以作为Series的索引 s.iloc[[True,False,True,True,False,True,True]] #检测s中存在的空值,并将空值进行过滤 condition = s.notnull() #对Series元素进行非空判定 s.loc[condition] #空值检测,过滤
练习:
-
想一想Series运算和ndarray运算的规则有什么不同?
-
新建另一个索引包含“文综”的Series s2,并与s2进行多种算术操作。
作者:TigerLee
出处:http://www.cnblogs.com/tiger666/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!