Series: 一维数据对象
今天简单介绍一下series这种数据对象。
Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成,Series比较像列表(数组)和字典的结合体。
1. 准备过程
由于series更适合在ipython的环境进行操作,所以以下代码均是在ipython的环境下进行操作的。如果还没安装ipython的读者,可以参照我前面安装pandas的方法(Python安装pandas模块),pip install ipython安装一下。安装后直接输入ipython启动就好了。启动后,import pandas as pd!
2. 创建方式
# 三种方法
# 法一
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')
3. Series-使用特性:
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']]
4. Series-数据对齐:
举个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
5. 常用函数和方法:
-
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
- 法一: 直接删除
就简单介绍到这里吧!