学习目标
- 大致了解pandas库的
DataFrame
和Series
数据结构 - 存取和处理
DataFrame
和Series
中的数据 - 将
CSV
数据导入pandas
库的DataFrame
- 对
DataFrame
重建索引来随机打乱数据
pandas 是一种存列数据分析API
。它是用于处理和分析输入数据的强大工具,很多机器学习框架都支持将pandas数据结构作为输入。本文只介绍它的核心概念。有关更完整的参考,请访问 pandas文档网站。
基本概念
导入pandas API 并输出相应的 API 版本:
1 | from __future__ import print_function |
1 | u'0.22.2' |
pandas中主要的数据被实现为以下两类:
- DataFrame,可以想象成一个
Excel
表,包含多个行和已命名的列。 - Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。
数据框架是用于 数据操控的一种常用抽象实现形式。 Spark和 R中也有类似的实现。
创建 Series 的一种方法时构建 Series 对象。例如:
1 | pd.Series(['San Francisco', 'San Jose', 'Sacramento']) |
DataFrame 和字典很像,Series 对应字典的 键-值对,Series 的名称为键,数据为值。例如像下面这样创建 DataFrame 对象:
1 | city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento']) |
但在大多数情况下,是将整个文件加载到 DataFrame 中。
1 | data = pd.read_csv('path or url', *args, **kwargs) |
访问数据
前面提到,DataFrame 和字典很像,还体现在访问数据的方式上。
1 | cities['City name'] # 返回名称为 City name 的 Series |
此外,pandas针对高级 索引和选择提供了机器丰富的 API。
操控数据
可以向 Series 应用 Python 的基本运算指令。例如:
1 | population / 1000. |
Numpy是一种用于进行科学计算的常用工具包。pandas Series 可用作大多数 Numpy 函数的参数:
1 | import numpy as np |
对于更复杂的单列转换,可以使用 Series.apply。像 Python 映射函数一样,Series.apply 将以参数形式接受 lambda函数,而该函数会应用于每个值。 下面的示例创建了一个指明 population 是否超过 100 万的新 Series:
1 | population.apply(lambda val: val > 1000000) |
DataFrame 的修改方式也非常简单。例如,以下代码向现有 DataFrame 添加了两个 Series:
1 | cities['Area square miles'] = pd.Series([46.87, 176.53, 97.92]) |