pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观。
Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
利用pandas可以从DataFrame和更高维对象插入和删除列;
也可以轻松地将其他Python和NumPy数据结构中的不规则索引数据转换为DataFrame对象;
还可以轻松处理浮点中的缺失数据(表示为 NaN)以及非浮点数据……pandas的功能无比强大。
如果你还没有安装pandas,可以在GitHub上找到源代码,最新发布版本的二进制安装程序可在Python包索引和conda上获得。https://github.com/pandas-dev/pandas
在本文中,我们主要从以下几个方面来进行pandas的讲解:
-
导入需要环境
-
数据结构创建
-
查看数据
-
数据选择
-
缺失值处理
-
统计分析
-
pandas绘图
|| 导入需要环境 ||
|| 数据结构的创建 ||
Pandas中有两种数据结构类型:series和DataFrame
01 Series
series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(索引)组成。
02 DataFrame
通过传递带有日期时间索引和标记列的NumPy数组来创建
创建二维数组,创建6行4列随机数,索引dates,列索引用ABCD表示
|| 查看数据 ||
01 查看组成
返回说明我们的这个数组是一个6行4列的数组。
02 查看值
显示出所有的值。
03 查询数据的前5行
04 查询数据的末尾5行
末尾五行并不是从最后一行倒着显示的,而是按照数据原来的顺序显示
05 查询指定的行
Df.head()和df.tail()都是默认的前五行和后五行,你可以通过在括号中间加入数字来显示你想查询的行数。
06 数据总行数
返回的值是6,说明我们的这个数组的总行数是6。
07 查询标签
行标签:
列标签:
08 基本统计数据
在pandas当中,运用describe方法可以一次性输出一些基本的统计数据。
09 数据转置
10 数据排序
列标签排序:
行标签排序:
|| 数据选择 ||
01 简单选择
根据列选择:
根据行选择:
02 loc函数选择
选择20180102到20180105间的数:
还可以更近一步限定条件,选择20180102到20180105之间的B、C两列:
03 通过位置的标签进行选择:iloc
04 直接定位:at
访问特定值:20180102行的B列的值
05 布尔索引
选择df中大于0的值:
|| 缺失值处理 ||
在数据当中,很可能会遇到有缺失值的情况,首先我们给df这个数组增加缺失值。
只选用df数组中前四行的数据,并增加一列,前两行的数据为1,后两行为空值,在这里空值以NaN来表示。
01 删除缺失值
02 填写缺失值
将数组中的缺失值填写为7
03 获取值所在的布尔掩码
|| 统计分析 ||
pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和、均值、最小值、最大值等,我们来具体看看这些函数:
首先随机生成一组数据;
然后建立一个数组;
01 descirbe方法
一次性输出很多需要的数据
02 输出最小值
03 输出最大值
04 求和
05 均值
06 方差
07 标准差
08 偏度
09 峰度
10 输出最小值的位置
11 输出最大值的位置
|| pandas绘图 ||
目前有很多的开源框架所实现的绘图功能是基于matplotlib的,pandas便是其中之一,对于pandas数据,直接使用pandas本身实现的绘图方法比matplotlib更加方便简单。
01 条形图
条形图适用于比较分类数据间的大小,用宽度相同的条形的高度来表示数据多少。
调用DataFrame的plot.bar()方法会产生一个多条形图:
堆积条形图,可以使用stacked=True:水平条形图, df.plot.barh(stacked=True)
02 直方图
直方图是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。
可以使用DataFrame.plot.hist()和Series.plot.hist()方法绘制直方图。
03 箱线图
箱线图是一种用作显示一组数据分散情况资料的统计图,它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。
箱线图可以得出Series.plot.box()和DataFrame.plot.box(),或DataFrame.boxplot()可视化值中的每一列内的分布。
例如,这里是一个箱线图,表示在[0,1]上对均匀随机变量进行10次观测的五次试验。
Boxplot可以通过传递color关键字来着色。
当你通过传递其他类型的参数color关键字,它会直接传递到matplotlib所有boxes,whiskers,medians和caps 着色。
颜色应用于要绘制的每个框。如果你想要更复杂的着色,可以通过传递return_type来获取。
04 区域图
可以使用Series.plot.area()和创建区域图DataFrame.plot.area()。
区域图表默认堆叠。要生成堆积区域图,每列必须是全部正值或所有负值。
当输入数据包含NaN时,它将自动填充0.如果要删除或填充不同的值,请在调用plot之前使用dataframe.dropna()或dataframe.fillna()。
05 散点图
可以使用该DataFrame.plot.scatter()方法绘制散点图,散点图需要x和y轴的数字列。这些可以通过x和y关键字指定。
06 饼图
可以使用DataFrame.plot.pie()或创建饼图Series.plot.pie()。如果你的数据包含任何数据NaN,它们将自动填充0;如果你的数据中ValueError存在负值,则会引发数据。
对于饼图,最好使用方形图形,即图形纵横比1:1,或者在绘制后通过调用ax.set_aspect('equal')返回的 axes对象强制纵横比相等。
需要注意的是,饼图与DataFrame要求你通过y参数或指定目标列subplots=True。
如果subplots=True指定,则将每列的饼图绘制为子图。
07 密度图
可以使用Series.plot.kde()和DataFrame.plot.kde()方法创建密度图。
08 自相关图
自相关图通常用于检查时间序列中的随机性。这是通过在不同的时间滞后计算数据值的自相关来完成的。
如果时间序列是随机的,那么对于任何和所有时滞分离,这种自相关应该接近于零。
如果时间序列是非随机的,则一个或多个自相关将显着非零。图中显示的水平线对应95%和99%置信区间。虚线是99%置信区间。
更多精彩,请关注:
公众号ID
DataCastle-VIP