pandas基本功能

这一次要和大家分享的是Pandas的基本功能。我们将了解与Series或DataFrame中数据交互的基础机制。

重建索引

reindex 是re-index 的合成,这样我们就可以很好地理解reindex这个方法的功能了!没错,就是创建一个符合新索引的新对象。我们用例子来说明这个方法。

In[1]:import pandas as pd 
In[2]:s1= pd.Series([1,3,5,7],['d','b','a','c'])
In[3]:s1
out[3]:d    1
       b    3
       a    5
       c    7
       dtype: int64

现在我们调用reindex方法:


In[4]:s2 = s1.reindex(['a','b','c','d'])
In[5}:s2
out[5]: a    5
        b    3
        c    7
        d    1
        dtype: int64

如果我们在重建索引的过程中,引入了之前并不存在的索引,则会引入缺失值:


In[6]:s3 = s1.reindex(['a','b','c','d','e'])
In[7]:s3
out[7]:a    5.0
       b    3.0
       c    7.0
       d    1.0
       e    NaN
       dtype: float64

在s3重建索引的过程中,我们引入了之前没有的索引‘e’,我们可以看到,s3中引入了缺失值NaN.

对于一些顺序数据,例如时间序列数据,我们在重新构建顺序的时候,可能会需要进行插值或填充,那么我们怎么处理这样的问题呢?如果我们直接指定新的索引,然后对新的索引进行赋值,这样不失为一种解决办法。我们以s3为例。


In[8]:s3['e'] = 9
In[9]:s3
out[9]:a    5.0
       b    3.0
       c    7.0
       d    1.0
       e    9.0
       dtype: float64

但还有没其他方法呢?我们可以用一个常量来填充缺失值,这时可以使用fillna方法。

In[10]:s3.fillna(11)
In[11]:s3
out[11]:a    5.0
        b    3.0
        c    7.0
        d    1.0
        e    9.0
        dtype: float64

请仔细观察下面的结果哦!

In[12]:s4 = s1.reindex(['a','b','c','d','e','f'])
In[13]:s4
out[13]:
a    5.0
b    3.0
c    7.0
d    1.0
e    NaN
f    NaN
dtype: float64
In[14]:s4.fillna(11)
In[15]:s4
out[15]:
a     5.0
b     3.0
c     7.0
d     1.0
e    11.0
f    11.0
dtype: float64

我们发现两个缺失值都被填充成了我们所填充的常数,于是我们就归纳出fillna方法的作用——对所有缺失值进行填充。但填充的结果取决于我们指定的数字。


In[16]:s4.fillna(11.13)
In[17]:s4
out[17]:
a     5.00
b     3.00
c     7.00
d     1.00
e    11.13
f    11.13
dtype: float64

可以看到我们指定不同的数字,那么fillna按顺序对缺失值进行填充。

我们还可以用原有数据进行填充。


In[18]:s5 = s1.reindex(['a', 'e', 'b', 'f', 'c', 'd'])
In[19]:s5
out[19]:
a    5.0
e    NaN
b    3.0
f    NaN
c    7.0
d    1.0
dtype: float64
In[20]:s5.fillna(method='ffill')#向前填充
In[21]:s5.fillna(method = 'bfill')#向后填充

image

我们看到,e和f的缺失值都分别用它们前面的数字填充了!

image

我们看到,e和f的缺失值都分别用它们后面的数字填充了!

关注公众号“神经网络与深度学习”获取更多精彩内容!

你可能感兴趣的:(pandas基本功能)