简介
Python 的 pandas
包用于数据操作和分析,旨在让您以直观的方式处理带标签或关联数据。
pandas
包提供了电子表格功能,但由于您正在使用 Python,因此它比传统的图形电子表格程序要快得多且更高效。
在本教程中,我们将介绍如何设置一个大型数据集,pandas
的 groupby()
和 pivot_table()
函数,以及如何可视化数据。
要熟悉 pandas
包,您可以阅读我们的教程《Python 3 中 pandas 包及其数据结构的介绍》。
先决条件
本指南将介绍如何在本地桌面或远程服务器上使用 pandas
处理数据。处理大型数据集可能会占用大量内存,因此在任何情况下,计算机都需要至少 2GB 内存 来执行本指南中的一些计算。
在本教程中,我们将使用 Jupyter Notebook 来处理数据。如果您尚未安装,请按照我们的教程安装并设置 Python 3 的 Jupyter Notebook。
设置数据
在本教程中,我们将使用美国社会保障网站上提供的有关婴儿姓名的数据,该数据以 8MB 的压缩文件形式提供。
让我们在本地计算机上激活我们的 Python 3 编程环境,或者在服务器上从正确的目录开始:
cd environments
. my_env/bin/activate
现在让我们为我们的项目创建一个新目录。我们可以称之为 names
,然后进入该目录:
mkdir names
cd names
在该目录中,我们可以使用 curl
命令从社会保障网站获取 zip 文件:
curl -O https://www.ssa.gov/oact/babynames/names.zip
文件下载完成后,让我们验证我们将要使用的所有软件包是否已安装:
numpy
用于支持多维数组matplotlib
用于可视化数据pandas
用于数据分析seaborn
用于美化我们的 matplotlib 统计图形
如果您尚未安装任何软件包,请使用 pip
安装它们,例如:
pip install pandas
pip install matplotlib
pip install seaborn
如果您尚未安装 numpy
包,它也将被安装。
现在我们可以启动 Jupyter Notebook:
jupyter notebook
一旦您进入 Jupyter Notebook 的 Web 界面,您将在那里看到 names.zip
文件。
要创建一个新的笔记本文件,请从右上角的下拉菜单中选择 New > Python 3:
!创建一个新的 Python 3 笔记本
这将打开一个笔记本。
让我们从导入我们将要使用的软件包开始。在我们的笔记本顶部,我们应该写入以下内容:
import numpy as np
import matplotlib.pyplot as pp
import pandas as pd
import seaborn
我们可以运行此代码,并通过键入 ALT + ENTER
进入新的代码块。
让我们还告诉 Python Notebook 在线保留我们的图形:
matplotlib inline
让我们运行代码,并通过键入 ALT + ENTER
继续。
从这里,我们将继续解压缩 zip 存档,将 CSV 数据集加载到 pandas
中,然后连接 pandas
数据帧。
解压缩 Zip 存档
要将 zip 存档解压缩到当前目录中,我们将导入 zipfile
模块,然后使用文件名(在我们的情况下是 names.zip
)调用 ZipFile
函数:
import zipfile
zipfile.ZipFile('names.zip').extractall('.')
我们可以运行代码,并通过键入 ALT + ENTER
继续。
现在,如果您回到 names
目录,您将在其中看到以 CSV 格式存储的姓名数据的 .txt
文件。这些文件将对应于文件中的年份数据,从 1881 年到 2015 年。这些文件都遵循类似的命名约定。例如,2015 年的文件名为 yob2015.txt
,而 1927 年的文件名为 yob1927.txt
。
为了查看其中一个文件的格式,让我们使用 Python 打开一个文件并显示前 5 行:
open('yob2015.txt','r').readlines()[:5]
运行代码,并通过键入 ALT + ENTER
继续。
['Emma,F,20355\n',
'Olivia,F,19553\n',
'Sophia,F,17327\n',
'Ava,F,16286\n',
'Isabella,F,15504\n']
数据的格式是首先是姓名(如 Emma
或 Olivia
),然后是性别(女性姓名为 F
,男性姓名为 M
),然后是当年出生具有该姓名的婴儿数量(2015 年出生的名为 Emma 的婴儿有 20,355 个)。
有了这些信息,我们就可以将数据加载到 pandas
中。
将 CSV 数据加载到 pandas
中
要将逗号分隔值数据加载到 pandas
中,我们将使用 pd.read_csv()
函数,传递文本文件的名称以及我们决定的列名。我们将将其分配给一个变量,本例中为 names2015
,因为我们使用的是 2015 年出生文件的数据。
names2015 = pd.read_csv('yob2015.txt', names = ['Name', 'Sex'