上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常用功能。