今天简单介绍一下series这种数据对象。
Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成,Series比较像列表(数组)和字典的结合体。
由于series更适合在ipython的环境进行操作,所以以下代码均是在ipython的环境下进行操作的。如果还没安装ipython的读者,可以参照我前面安装pandas的方法(Python安装pandas模块),pip install ipython安装一下。安装后直接输入ipython启动就好了。启动后,import pandas as pd!
# 三种方法
# 法一
In [5]: pd.Series([4,7,-5,3])
Out[5]:
0 4
1 7
2 -5
3 3
dtype: int64
# 法二
In [6]: pd.Series([4, 7, -5, 3], index=['a', 'b', 'c', 'd'])
Out[6]:
a 4
b 7
c -5
d 3
dtype: int64
# 法三
In [7]: pd.Series({'a':1,'b':2})
Out[7]:
a 1
b 2
dtype: int64
# 获取值数组和索引数组:values属性和index属性
In [8]: sr = pd.Series([4, 7, -5, 3], index=['a', 'b', 'c', 'd'])
In [9]: sr.values
Out[9]: array([ 4, 7, -5, 3], dtype=int64)
In [10]: sr.index
Out[10]: Index(['a', 'b', 'c', 'd'], dtype='object')
1. series支持array的特性(下标)∶
1. 从ndarray创建Series: Series(arr)
2. 与标量运算:sr*2
3. 两个Series运算: sr1+sr2
4. 索引: sr[0], sr[[1,2,4]
5. 切片: sr[O:2]
6. 通用函数: np.abs(sri)
7. 布尔值过滤sr[sr>o]
2. Series支持字典的特性(标签)∶
1. 从字典创建Series: Series(dic)
2. in运算: 'a'in sr
3. 键索引: sr['a'], sr[['a','b','d']]
举个series相加的例子吧:
In [16]: sr1 = pd.Series([12,23,34],index=['c','a','d'])
In [17]: sr2 = pd.Series([11,20,10],index=['d','c','a'])
In [18]: sr1+sr2
Out[18]:
a 33
c 32
d 45
dtype: int64
pandas在进行两个Series对象的运算时,会按索引(标签)进行对齐然后计算,比如上面这个栗子,得到的结果中,索引a的值=sr1[‘a’] + sr2[‘a’] =33,其他两个值也是同样道理。
但是当两个series对象中,其中一个对象中有的索引,而另一个对象没有,相加的时候,该索引的值为NAN如下:
In [19]: sr1 = pd.Series([12,23,34],index=['c','a','g'])
In [20]: sr2 = pd.Series([11,20,10],index=['d','c','a'])
In [21]: sr1 + sr2
Out[21]:
a 33.0
c 32.0
d NaN
g NaN
dtype: float64
add函数
# 如果直接用的话,那么add是和sr1+sr2效果一样的
In [22]: sr1.add(sr2)
Out[22]:
a 33.0
c 32.0
d NaN
g NaN
dtype: float64
# 设置一下参数后, 则会被有的那一个值填充:
In [23]: sr1.add(sr2, fill_value=0)
Out[23]:
a 33.0
c 32.0
d 11.0
g 34.0
dtype: float64
缺失数据处理:
sr.isnull() 缺失值的地方返回True,反正返回False
sr.notnull() 缺失值的地方返回False,反正返回True
In [24]: sr = sr1.add(sr2)
In [25]: sr
Out[25]:
a 33.0
c 32.0
d NaN
g NaN
dtype: float64
In [26]: sr.isnull()
Out[26]:
a False
c False
d True
g True
dtype: bool
In [27]: sr.notnull()
Out[27]:
a True
c True
d False
g False
dtype: bool
再把缺失值行给删掉:
# 法一: 用布尔索引
In [28]: sr[sr.notnull()]
Out[28]:
a 33.0
c 32.0
dtype: float64
# 法二: 用sr.dropna()方法
In [30]: sr.dropna()
Out[30]:
a 33.0
c 32.0
dtype: float64
# 用0填充
In [31]: sr.fillna(0)
Out[31]:
a 33.0
c 32.0
d 0.0
g 0.0
dtype: float64
# 用平均值填充
In [32]: sr.fillna(sr.mean())
Out[32]:
a 33.0
c 32.0
d 32.5
g 32.5
dtype: float64
就简单介绍到这里吧!