pandas是一个Python的yuyi语言软件包,在我们使用Python语音进行机器学习编程的时候,这是一个非常常用的基础编程库。本文是对它的一个入门教程。
pandas提供了快速,灵活和富有表现力的数据结构,目的是使“关系”或“标记”数据的工作既简单又直观。它旨在成为在Python中进行实际数据分析的高级构建块。
入门介绍
pandas适合于许多不同类型的数据,包括:
- 具有异构类型列的表格数据,例如SQL表格或Excel数据
- 有序和无序(不一定是固定频率)时间序列数据。
- 具有行列标签的任意矩阵数据(均匀类型或不同类型)
- 任何其他形式的观测/统计数据集。
由于这是一个Python语言的软件包,因此需要你的机器上首先需要具备Python语言的环境。关于这一点,请自行在网络上搜索获取方法。
关于如何获取pandas请参阅官网上的说明:pandas Installation。
通常情况下,我们可以通过pip
来执行安装:
sudo pip3 install pandas
或者通过conda 来安装pandas:
conda install pandas
目前(2018年2月)pandas的最新版本是v0.22.0(发布时间:2017年12月29日)。
我已经将本文的源码和测试数据放到Github上: pandas_tutorial ,读者可以前往获取。
另外,pandas常常和NumPy一起使用,本文中的源码中也会用到NumPy。
建议读者先对NumPy有一定的熟悉再来学习pandas,我之前也写过一个NumPy的基础教程,参见这里:Python 机器学习库 NumPy 教程
核心数据结构
pandas最核心的就是Series
和DataFrame
两个数据结构。
这两种类型的数据结构对比如下:
DataFrame可以看做是Series的容器,即:一个DataFrame中可以包含若干个Series。
注:在0.20.0版本之前,还有一个三维的数据结构,名称为Panel。这也是pandas库取名的原因:pan(el)-da(ta)-s。但这种数据结构由于很少被使用到,因此已经被废弃了。
Series
由于Series是一维结构的数据,我们可以直接通过数组来创建这种数据,像这样:
这段代码输出如下:
# data_structure.py
import pandas as pd
import numpy as np
series1 = pd.Series([1, 2, 3, 4])
print("series1:\n{}\n".format(series1))
这段代码输出如下:
series1:
0 1
1 2
2 3
3 4
dtype: int64
这段输出说明如下:
- 输出的最后一行是Series中数据的类型,这里的数据都是
int64
类型的。 - 数据在第二列输出,第一列是数据的索引,在pandas中称之为
Index
。
我们可以分别打印出Series中的数据和索引:
# data_structure.py
print("series1.values: {}\n".format(series1.values))
print("series1.index: {}\n".format(series1.index))
这两行代码如下;
series1.values: [1 2 3 4]
series1.index: RangeIndex(start=0, stop=4, step=1)
如果不指定(像上面这样),索引是[1, N-1]的形式。不过我们也可以在创建Series的时候指定索引。索引未必一定需要是整数,可以是任何类型的数据,例如字符串。例如我们以七个字母来映射七个音符。索引的目的是可以通过它来获取对应的数据,例如下面这样: