Python广告数据挖掘与分析实战
上QQ阅读APP看书,第一时间看更新

3.2.1 数据结构概述

1.Series

Series与NumPy中的一维数组array类似,与Python的基本数据结构list也很相近,区别在于list中的元素可以是不同的数据类型,而Series中只允许存储相同的数据类型。

下面尝试创建一个简单的Series,并分析其特点。


In [13]: s = pd.Series([1,2,3,np.nan,5])

In [14]: s
Out[14]:
0    1.0
1    2.0
2    3.0
3    NaN
4    5.0
dtype: float64

Series中的每个数据对应一个索引值,在默认情况下,索引都是从0开始的整数。不过,我们也可以自定义索引:


In [15]: s2 = pd.Series([1,2,3,np.nan,5],index =[100,101,102,103,104])

In [16]: s2
Out[16]:
100    1.0
101    2.0
102    3.0
103    NaN
104    5.0
dtype: float64

可以通过以下两个属性依次显示Series对象的索引和值。


In [19]: s2.index
Out[19]: Int64Index([100, 101, 102, 103, 104], dtype='int64')

In [20]: s2.values
Out[20]: array([ 1.,  2.,  3., nan,  5.])

2.DataFrame

DataFrame提供的是一个类似表的结构,可以将其看作由多个Series组成的数据框,它的列名称为columns,行名称为index,而表中间的就是数据值。

下面看一个用字典创建DataFrame的例子。


In [21]: df1 = pd.DataFrame({'ID':pd.Series([1,2,3,4,5,6]),
    ...:              'Age':pd.Series([18,50,32,22,16,25])} )

In [22]: df1
Out[22]:
   Age  ID
0   18   1
1   50   2
2   32   3
3   22   4
4   16   5
5   25   6

现在尝试获取列,若只想获取其中的某一列,返回的就是一个Series,若想同时获取多列,返回的就是一个DataFrame。


In [23]: df1['ID']
Out[23]:
0    1
1    2
2    3
3    4
4    5
5    6
Name: ID, dtype: int64

In [24]: df1[['ID','Age']]
Out[24]:
   ID  Age
0   1   18
1   2   50
2   3   32
3   4   22
4   5   16
5   6   25

如果想在前面的基础上新增一些列,在DataFrame中也可以轻松实现。


In [25]: df1['Sex'] = ['F','M','M','F','M','F']

In [26]: df1
Out[26]:
   Age  ID Sex
0   18   1   F
1   50   2   M
2   32   3   M
3   22   4   F
4   16   5   M
5   25   6   F

同样,如果我们想要删除列,直接使用DataFrame中的drop函数即可,但需要用axis=1来表示删除列,否则默认是删除行。


In [27]: df1.drop('Sex',axis=1)
Out[27]:
   Age  ID
0   18   1
1   50   2
2   32   3
3   22   4
4   16   5
5   25   6

另外,我们还可以使用loc函数进行一些查询行内容的操作。


In [28]: df1.loc[3]
Out[28]:
Age    22
ID      4
Sex     F
Name: 3, dtype: object

以上是对Pandas中两种常用数据结构Series和DataFrame的简单介绍,接下来我们将正式介绍Pandas常用功能。