深入浅出pandas-1
Pandas 是 Wes McKinney 在2008年开发的一个强大的分析结构化数据的工具集。Pandas 以 NumPy 为基础(实现数据存储和运算),提供了专门用于数据分析的类型、方法和函数,对数据分析和数据挖掘提供了很好的支持;同时 pandas 还可以跟数据可视化工具 matplotlib 很好的整合在一起,非常轻松愉快的实现数据可视化呈现。
Pandas 核心的数据类型是Series
(数据系列)、DataFrame
(数据窗/数据框),分别用于处理一维和二维的数据,除此之外,还有一个名为Index
的类型及其子类型,它们为Series
和DataFrame
提供了索引功能。日常工作中DataFrame
使用得最为广泛,因为二维的数据结构刚好可以对应有行有列的表格。Series
和DataFrame
都提供了大量的处理数据的方法,数据分析师以此为基础,可以实现对数据的筛选、合并、拼接、清洗、预处理、聚合、透视和可视化等各种操作。
创建Series对象
Pandas 库中的Series
对象可以用来表示一维数据结构,但是多了索引和一些额外的功能。Series
类型的内部结构包含了两个数组,其中一个用来保存数据,另一个用来保存数据的索引。我们可以通过列表或数组创建Series
对象,代码如下所示。
代码:
import numpy as np
import pandas as pd
ser1 = pd.Series(data=[120, 380, 250, 360], index=['一季度', '二季度', '三季度', '四季度'])
ser1
说明:
Series
构造器中的data
参数表示数据,index
参数表示数据的索引,相当于数据对应的标签。
输出:
一季度 120
二季度 380
三季度 250
四季度 360
dtype: int64
通过字典创建Series对象。
代码:
ser2 = pd.Series({'一季度': 320, '二季度': 180, '三季度': 300, '四季度': 405})
ser2
说明:通过字典创建
Series
对象时,字典的键就是数据的标签(索引),键对应的值就是数据。
输出:
一季度 320
二季度 180
三季度 300
四季度 405
dtype: int64
Series对象的运算
标量运算
我们尝试给刚才的ser1
每个季度加上10
,代码如下所示。
代码:
ser1 += 10
ser1
输出:
一季度 130
二季度 390
三季度 260
四季度 370
dtype: int64
矢量运算
我们尝试把ser1
和ser2
对应季度的数据加起来,代码如下所示。
代码:
ser1 + ser2
输出:
一季度 450
二季度 570
三季度 560
四季度 775
dtype: int64
索引运算
普通索引
跟数组一样,Series
对象也可以进行索引和切片操作,不同的是Series
对象因为内部维护了一个保存索引的数组,所以除了可以使用整数索引检索数据外,还可以通过自己设置的索引(标签)获取对应的数据。
使用整数索引。
代码:
ser1[2]
输出:
260
使用自定义索引。
代码:
ser1['三季度']
输出:
260
代码:
ser1['一季度'] = 380
ser1
输出:
一季度 380
二季度 390
三季度 260
四季度 370
dtype: int64
切片索引
Series
对象的切片操作跟列表、数组类似,通过给出起始和结束索引,从原来的Series
对象中取出或修改部分数据,这里也可以使用整数索引和自定义的索引,代码如下所示。
代码:
ser2[1:3]
输出:
二季度 180
三季度 300
dtype: int64
代码: