本文共 2608 字,大约阅读时间需要 8 分钟。
今天简单介绍一下series这种数据对象。
Series是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成,Series比较像列表(数组)和字典的结合体。由于series更适合在ipython的环境进行操作,所以以下代码均是在ipython的环境下进行操作的。如果还没安装ipython的读者,可以参照我前面安装pandas的方法(),pip install ipython安装一下。安装后直接输入ipython启动就好了。启动后,import pandas as pd!
# 三种方法# 法一In [5]: pd.Series([4,7,-5,3])Out[5]:0 41 72 -53 3dtype: int64# 法二In [6]: pd.Series([4, 7, -5, 3], index=['a', 'b', 'c', 'd'])Out[6]:a 4b 7c -5d 3dtype: int64# 法三In [7]: pd.Series({ 'a':1,'b':2})Out[7]:a 1b 2dtype: int64# 获取值数组和索引数组:values属性和index属性In [8]: sr = pd.Series([4, 7, -5, 3], index=['a', 'b', 'c', 'd'])In [9]: sr.valuesOut[9]: array([ 4, 7, -5, 3], dtype=int64)In [10]: sr.indexOut[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+sr2Out[18]:a 33c 32d 45dtype: 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 + sr2Out[21]:a 33.0c 32.0d NaNg NaNdtype: 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,反正返回Falsesr.notnull() 缺失值的地方返回False,反正返回True
In [24]: sr = sr1.add(sr2)In [25]: srOut[25]:a 33.0c 32.0d NaNg NaNdtype: float64In [26]: sr.isnull()Out[26]:a Falsec Falsed Trueg Truedtype: boolIn [27]: sr.notnull()Out[27]:a Truec Trued Falseg Falsedtype: bool
再把缺失值行给删掉:
# 法一: 用布尔索引In [28]: sr[sr.notnull()]Out[28]:a 33.0c 32.0dtype: float64# 法二: 用sr.dropna()方法In [30]: sr.dropna()Out[30]:a 33.0c 32.0dtype: float64
# 用0填充In [31]: sr.fillna(0)Out[31]:a 33.0c 32.0d 0.0g 0.0dtype: float64 # 用平均值填充In [32]: sr.fillna(sr.mean())Out[32]:a 33.0c 32.0d 32.5g 32.5dtype: float64
就简单介绍到这里吧!
转载地址:http://tfiwi.baihongyu.com/