Pandas 使用教程 1

               

Pandas 使用教程--Pandas 安装与数据结构

一、实验介绍

1.1 实验内容

Pandas 是非常著名的开源数据处理库,我们可以通过它完成对数据集进行快速读取、转换、过滤、分析等一系列操作。除此之外,Pandas 拥有强大的缺失数据处理与数据透视功能,可谓是数据预处理中的必备利器。这是 Pandas 使用教程的第 1 章节,将学会安装它,并了解 Pandas 的数据结构。

1.2 实验知识点

  • Pandas 安装
  • Pandas 数据结构

1.3 实验环境

  • python2.7
  • Xfce 终端
  • ipython 终端

1.4 适合人群

本课程难度为一般,属于初级级别课程,适合具有 Python 基础,并对使用 Pandas 进行数据处理感兴趣的用户。

1.5 官方文档

学习本课程之前,你可以先自行下载官方文档(英文)作为辅助学习资料。

http://pandas.pydata.org/pandas-docs/stable/pandas.pdf

二、Pandas 安装

Pandas 目前支持 Python 2.7, 3.4, 3.5, 和 3.6 版本。最简单的安装方式是通过 pip 完成。你可以打开终端,键入以下命令。

sudo pip install pandas

安装过程大约持续 1 分钟作用,系统会自动下载 numpy 等依赖包。注意,本课程的全部内容基于 Pandas 0.20.3 版本,如果和你当前学习的版本存在不兼容,请通过以下命令安装 0.20.3 版本。

sudo pip install -v pandas==0.20.3

在正式学习使用 Pandas 进行数据预处理之前,我们先来了解 Pandas 的数据结构。Pandas 大致拥有 3 类数据结构,分别是一维数据 Series、二维数据 DataFrame、以及三维数据 Panel(目前依旧被融入 MultiIndex DataFrame 多维数据)。

下面的内容均在 iPython 交互式终端中演示,你可以通过在线环境左下角的应用程序菜单 > 附件打开。如果你在本地进行练习,推荐使用 Jupyter Notebook 环境。

三、 一维数据 Series

Series 是 Pandas 中最基本的 1 维数据形式。其可以储存整数、浮点数、字符串等形式的数据。Series 的新建方法如下:

s = pandas.Series(data, index=index)

其中,data 可以是字典、numpy 里的 ndarray 对象等。index 是数据索引,索引是 pandas 数据结构中的一大特性,它主要的功能是帮助我们更快速地定位数据,这一点后面会谈到。

3.1 字典 -> Series

下面,我们将把不同类型的数据转换为为 Series。首先是字典类型。

import pandas as pdd = {'a' : 10, 'b' : 20, 'c' : 30}print pd.Series(d)

此处输入图片的描述

这里,数据值是 10, 20, 30,索引为 a, b, c 。我们可以直接通过 index= 参数来设置新的索引。

import pandas as pdd = {'a' : 10, 'b' : 20, 'c' : 30}s = pd.Series(d, index=['b', 'c', 'd', 'a'])print s

此处输入图片的描述

你会发现,pandas 会自动匹配人为设定的索引值和字典转换过来的索引值。而当索引无对应值时,会显示为 NaN 缺失值。

3.2 ndarray -> Series

ndarray 是著名数值计算包 numpy 中的多维数组。我们也可以将 ndarray 直接转换为 Series。

import pandas as pdimport numpy as npdata = np.random.randn(5) # 一维随机数index = ['a', 'b', 'c', 'd', 'e'] # 指定索引s = pd.Series(data, index)print s

此处输入图片的描述

上面的两个例子中,我们都指定了 index 的值。而当我们非人为指定索引值时,Pandas 会默认从 0 开始设置索引值。

s = pd.Series(data)print s

此处输入图片的描述

当我们需要从一维数据 Series 中返回某一个值时,可以直接通过索引完成。

import pandas as pdimport numpy as npdata = np.random.randn(5) # 一维随机数index = ['a', 'b', 'c', 'd', 'e'] # 指定索引s = pd.Series(data, index)print sprint s['a']

此处输入图片的描述

除此之外,Series 是可以直接进行运算的。例如:

import pandas as pdimport numpy as npdata = np.random.randn(5) # 一维随机数index = ['a', 'b', 'c', 'd', 'e'] # 指定索引s = pd.Series(data, index)print sprint 2*sprint s-s

此处输入图片的描述

四、二维数据 DataFrame

DataFrame 是 Pandas 中最为常见、最重要且使用频率最高的数据结构。你可以想到它箱型为电子表格或 SQL 表具有的结构。DataFrame 可以被看成是以 Series 组成的字典。它和 Series 的区别在于,不但具有行索引,且具有列索引。

DataFrame 可以用于储存多种类型的输入:

  • 一维数组、列表、字典或者 Series 字典。
  • 二维 numpy.ndarray。
  • 结构化的 ndarray。
  • 一个 Series。
  • 另一个 DataFrame。

4.1 Series 字典 -> DataFrame

import pandas as pd# 带 Series 的字典d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}df = pd.DataFrame(d)  # 新建 DataFrameprint df

此处输入图片的描述

我们可以看到,这里的行索引为 a, b, c, d ,而列索引为 one, two

4.2 ndarrays 或 lists 字典 -> DataFrame

import pandas as pd# 列表构成的字典d = {'one' : [1, 2, 3, 4], 'two' : [4, 3, 2, 1]}df1 = pd.DataFrame(d) # 未指定索引df2 = pd.DataFrame(d, index=['a', 'b', 'c', 'd']) # 指定索引print dfprint df2

此处输入图片的描述

注意观察它们之间的不同。

4.3 带字典的列表 -> DataFrame

import pandas as pd# 带字典的列表d = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]df = pd.DataFrame(d)print df

此处输入图片的描述

4.4 DataFrame.from_ 方法

pandas 的 DataFrame 下面还有 4 个以 from_ 开头的方法,这也可以用来创建 Dataframe。

此处输入图片的描述

例如:

import pandas as pdd = [('A', [1, 2, 3]), ('B', [4, 5, 6])]c = ['one', 'two', 'three']df = pd.DataFrame.from_items(d, orient='index', columns=c)print df

此处输入图片的描述

4.5 列选择,添加,删除

接下来,我们延续上面的 4.4 里面的数据来演示。

在一维数据结构 Series 中,我们用 df['标签'] 来选择行。而到了二维数据 DataFrame 中,df['标签'] 表示选择列了。例如:

print df['one']

此处输入图片的描述

删除列的方法为 df.pop('列索引名'),例如:

df.pop('one')print df

此处输入图片的描述

添加列的方法未 df.insert(添加列位置索引序号, '添加列名', 数值),例如:

df.insert(3, 'four', [10, 20])print df

此处输入图片的描述

五、三维数据 Panel

Panel 是 Pandas 中使用频率较低的一种数据结构,但它是三维数据的重要容器。

5.1 面板数据

Panel data 又称面板数据,它是计量经济学中派生出来的一个概念。在计量经济学中,数据大致可分为三类:截面数据,时间序列数据,以及面板数据。而面板数据即是截面数据与时间序列数据综合起来的一种数据类型。

简单来讲,截面数据指在某一时间点收集的不同对象的数据。而时间序列数据是指同一对象在不同时间点所对应的数据集合。

这里引用一个城市和 GDP 关系的示例来解释上面的三个概念(面板数据):

截面数据:

  • 例如城市:北京、上海、重庆、天津在某一年的 GDP 分别为10、11、9、8(单位亿元)。

时间序列数据:

  • 例如:2000、2001、2002、2003、2004 各年的北京市 GDP 分别为8、9、10、11、12(单位亿元)。

面板数据:

  • 2000、2001、2002、2003、2004 各年中国所有直辖市的 GDP 分别为(单位亿元):北京市分别为 8、9、10、11、12;上海市分别为 9、10、11、12、13;天津市分别为 5、6、7、8、9;重庆市分别为 7、8、9、10、11。

5.2 Panel 构成

在 Pandas 中,Panel 主要由三个要素构成:

  • items: 每个项目(item)对应于内部包含的 DataFrame。
  • major_axis: 每个 DataFrame 的索引(行)。
  • minor_axis: 每个 DataFrame 的索引列。

简而言之,在 Pandas 中,一个 Panel 由多个 DataFrame 组成。下面就生成一个 Panel。

import pandas as pdimport numpy as npwp = pd.Panel(np.random.randn(2, 5, 4), items=['Item1', 'Item2'], major_axis=pd.date_range('1/1/2000', periods=5), minor_axis=['A', 'B', 'C', 'D'])print wp

此处输入图片的描述

我们可以看到,wp 由 2 个项目、5 个主要轴和 4 个次要轴组成。其中,主要轴由 2000-01-01 到 2000-01-05 这 5 天组成的时间序列,次轴从 A 到 D。

你可以输出 Item1 看一看。

print wp['Item1']

此处输入图片的描述

再看一看 Item2。

print wp['Item2]

此处输入图片的描述

可以看到,这两个 Dataframe 的行索引及列索引是一致的。由于数据是随机生成的,所以不一致。

5.2 Panel 的未来

由于 Panel 在 Pandas 中的使用频率远低于 Series 和 DataFrame,所以 Pandas 决定在未来的版本中将 Panel 移除,转而使用 MultiIndex DataFrame 来表示多维数据结构。

这里,可以用到 Panel.to_frame() 输出多维数据结构。就拿上面的例子继续:

print wp.to_frame()

此处输入图片的描述

六、实验总结

这一章节,我们着重介绍了 Pandas 的数据结构,只有熟悉了这三种(尤其是前两种)数据结构之后,才能对后面采用 Pandas 进行数据预处理有更深刻的理解。

七、课后作业

你知道 Pandas 的名字是怎么来的吗?

答案:点击

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/qq_43680030/article/details/86420138