十分钟上手pandas|应用指南

 

 

pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观。

Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

利用pandas可以从DataFrame和更高维对象插入和删除列;

也可以轻松地将其他Python和NumPy数据结构中的不规则索引数据转换为DataFrame对象;

还可以轻松处理浮点中的缺失数据(表示为 NaN)以及非浮点数据……pandas的功能无比强大。

 

如果你还没有安装pandas,可以在GitHub上找到源代码,最新发布版本的二进制安装程序可在Python包索引和conda上获得。https://github.com/pandas-dev/pandas

 

在本文中,我们主要从以下几个方面来进行pandas的讲解:

 

  • 导入需要环境

  • 数据结构创建

  • 查看数据

  • 数据选择

  • 缺失值处理

  • 统计分析

  • pandas绘图

 

|| 导入需要环境 ||

 

十分钟上手pandas|应用指南

 

 

|| 数据结构的创建 ||

 

Pandas中有两种数据结构类型:series和DataFrame

 

01 Series

 

series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(索引)组成。

 

十分钟上手pandas|应用指南

 

02 DataFrame

 

通过传递带有日期时间索引和标记列的NumPy数组来创建

 

十分钟上手pandas|应用指南

 

创建二维数组,创建6行4列随机数,索引dates,列索引用ABCD表示

 

十分钟上手pandas|应用指南

 

 

|| 查看数据 ||

 

01 查看组成

 

十分钟上手pandas|应用指南

 

返回说明我们的这个数组是一个6行4列的数组。

 

02 查看值

 

十分钟上手pandas|应用指南

 

显示出所有的值。

 

03 查询数据的前5行

 

十分钟上手pandas|应用指南

 

04 查询数据的末尾5行

 

十分钟上手pandas|应用指南

 

末尾五行并不是从最后一行倒着显示的,而是按照数据原来的顺序显示

 

05 查询指定的行

 

十分钟上手pandas|应用指南

 

Df.head()和df.tail()都是默认的前五行和后五行,你可以通过在括号中间加入数字来显示你想查询的行数。

 

06 数据总行数

 

十分钟上手pandas|应用指南

 

返回的值是6,说明我们的这个数组的总行数是6。

 

07 查询标签

 

 行标签:

 

十分钟上手pandas|应用指南

 

列标签:

 

十分钟上手pandas|应用指南

 

08 基本统计数据

 

十分钟上手pandas|应用指南

 

在pandas当中,运用describe方法可以一次性输出一些基本的统计数据。

 

09 数据转置

 

十分钟上手pandas|应用指南

 

10 数据排序

 

列标签排序:

 

十分钟上手pandas|应用指南

 

行标签排序:

 

十分钟上手pandas|应用指南

 

 

|| 数据选择 ||

 

01 简单选择

 

根据列选择:

 

十分钟上手pandas|应用指南

 

根据行选择:

 

十分钟上手pandas|应用指南

 

02 loc函数选择 

 

选择20180102到20180105间的数:

 

十分钟上手pandas|应用指南

 

还可以更近一步限定条件,选择20180102到20180105之间的B、C两列:

 

十分钟上手pandas|应用指南

 

03 通过位置的标签进行选择:iloc

 

十分钟上手pandas|应用指南

 

04 直接定位:at 

 

访问特定值:20180102行的B列的值

十分钟上手pandas|应用指南

 

05 布尔索引

选择df中大于0的值:

 

十分钟上手pandas|应用指南

 

 

|| 缺失值处理 || 

 

在数据当中,很可能会遇到有缺失值的情况,首先我们给df这个数组增加缺失值。

只选用df数组中前四行的数据,并增加一列,前两行的数据为1,后两行为空值,在这里空值以NaN来表示。

 

十分钟上手pandas|应用指南

 

01 删除缺失值

 

十分钟上手pandas|应用指南

 

02 填写缺失值

将数组中的缺失值填写为7

 

十分钟上手pandas|应用指南

 

03 获取值所在的布尔掩码

 

十分钟上手pandas|应用指南

 

 

 

|| 统计分析 ||

 

pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和、均值、最小值、最大值等,我们来具体看看这些函数:

 

首先随机生成一组数据;

 

十分钟上手pandas|应用指南

 

然后建立一个数组;

 

十分钟上手pandas|应用指南

 

 

01 descirbe方法

 

一次性输出很多需要的数据

 

十分钟上手pandas|应用指南

 

02 输出最小值

 

十分钟上手pandas|应用指南

 

03 输出最大值

 

十分钟上手pandas|应用指南

 

04 求和

 

十分钟上手pandas|应用指南

 

05 均值

 

十分钟上手pandas|应用指南

 

06 方差

 

十分钟上手pandas|应用指南

 

07 标准差

 

十分钟上手pandas|应用指南

 

08 偏度

 

十分钟上手pandas|应用指南

 

09 峰度

 

十分钟上手pandas|应用指南

 

10 输出最小值的位置

 

十分钟上手pandas|应用指南

 

11 输出最大值的位置

 

十分钟上手pandas|应用指南

 

 

|| pandas绘图 ||

 

目前有很多的开源框架所实现的绘图功能是基于matplotlib的,pandas便是其中之一,对于pandas数据,直接使用pandas本身实现的绘图方法比matplotlib更加方便简单。

 

 

 01 条形图

条形图适用于比较分类数据间的大小,用宽度相同的条形的高度来表示数据多少。

 

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

调用DataFrame的plot.bar()方法会产生一个多条形图:

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

堆积条形图,可以使用stacked=True:水平条形图, df.plot.barh(stacked=True)

 

 02 直方图

 

直方图是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。

可以使用DataFrame.plot.hist()和Series.plot.hist()方法绘制直方图。

 

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

03 箱线图

 

箱线图是一种用作显示一组数据分散情况资料的统计图,它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

箱线图可以得出Series.plot.box()和DataFrame.plot.box(),或DataFrame.boxplot()可视化值中的每一列内的分布。

例如,这里是一个箱线图,表示在[0,1]上对均匀随机变量进行10次观测的五次试验。

 

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

Boxplot可以通过传递color关键字来着色。

当你通过传递其他类型的参数color关键字,它会直接传递到matplotlib所有boxes,whiskers,medians和caps 着色。

颜色应用于要绘制的每个框。如果你想要更复杂的着色,可以通过传递return_type来获取。

 

 04 区域图

 

可以使用Series.plot.area()和创建区域图DataFrame.plot.area()。

区域图表默认堆叠。要生成堆积区域图,每列必须是全部正值或所有负值。

当输入数据包含NaN时,它将自动填充0.如果要删除或填充不同的值,请在调用plot之前使用dataframe.dropna()或dataframe.fillna()。

 

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

05 散点图

 

可以使用该DataFrame.plot.scatter()方法绘制散点图,散点图需要x和y轴的数字列。这些可以通过x和y关键字指定。

 

十分钟上手pandas|应用指南

十分钟上手pandas|应用指南

 

 06 饼图

 

可以使用DataFrame.plot.pie()或创建饼图Series.plot.pie()。如果你的数据包含任何数据NaN,它们将自动填充0;如果你的数据中ValueError存在负值,则会引发数据。

 

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

对于饼图,最好使用方形图形,即图形纵横比1:1,或者在绘制后通过调用ax.set_aspect('equal')返回的 axes对象强制纵横比相等。

需要注意的是,饼图与DataFrame要求你通过y参数或指定目标列subplots=True。

如果subplots=True指定,则将每列的饼图绘制为子图。

 

07 密度图

 

可以使用Series.plot.kde()和DataFrame.plot.kde()方法创建密度图。

 十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

 

08 自相关图

自相关图通常用于检查时间序列中的随机性。这是通过在不同的时间滞后计算数据值的自相关来完成的。

如果时间序列是随机的,那么对于任何和所有时滞分离,这种自相关应该接近于零。

如果时间序列是非随机的,则一个或多个自相关将显着非零。图中显示的水平线对应95%和99%置信区间。虚线是99%置信区间。

 

十分钟上手pandas|应用指南

 

十分钟上手pandas|应用指南

更多精彩,请关注:

公众号ID

DataCastle-VIP

 

 

 

 

 

 

 

相关文章: