pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
利用pandas可以从DataFrame和更高维对象插入和删除列;也可以轻松地将其他Python和NumPy数据结构中的不规则索引数据转换为DataFrame对象;还可以轻松处理浮点中的缺失数据(表示为 NaN)以及非浮点数据……pandas的功能无比强大。
如果你还没有安装pandas,可以在GitHub上找到源代码,https: //github.com/pandas-dev/pandas。最新发布版本的二进制安装程序可在Python包索引和conda上获得。
上手pandas
一、:导入需要环境
二、数据结构的创建
Pandas中有两种数据结构类型:series和DataFrame
1、Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(索引)组成。
通过传递带有日期时间索引和标记列的NumPy数组来创建
创建二维数组,创建6行4列随机数,索引dates,列索引用ABCD表示
三、查看数据
1、查看组成
返回说明我们的这个数组是一个6行4列的数组。
2、查看值
会显示出所有的值
3、查询数据的前5行
2、查询数据的末尾5行,它并不是从最后一行倒着显示的,而是按照数据原来的顺序显示。
3、查询指定的行
Df.head()和df.tail()都是默认的前五行和后五行,你可以通过在括号中间加入数字来显示你想查询的行数。
4、数据总行数:
返回的值是6,说明我们的这个数组的总行数是6。
5、行标签
6、列标签
8、你可能还想知道数据集的一些基本的统计数据,在 Pandas 中,这个操作简单到哭:
9、df.T(转置)
10、排序
列标签排序:
行标签排序:
四、选择
1、简单选择
列:df.A
行:df[2:4]
以上的选择效率较低,推荐使用函数进行选择
1、df.loc[‘20180102’:’20180105’]
2、通过位置的标签进行选择
df.iloc[2:4]
df.loc[‘20180102’:’20180105’,[‘B’,’C’]
效率最高的选择是at,可以直接定位到你想要的数据
例如:
访问特定值:df.at[pd.Timestamp(20180102’),’B‘]
还可以通过建立布尔索引来进行选择
例如:选择A列中大于0的值
选择df中大于0的值
df[df>0]
五、缺失值处理
在数据当中,很可能会遇到有缺失值的情况,首先我们给df这个数组增加缺失值。
只选用df数组中前四行的数据,并增加一列,前两行的数据为1,后两行为空值,在这里空值以NaN来表示。
(1)删除缺失值:
(2)填写缺失值
将数组中的缺失值填写为7
(3)获取值所在的布尔掩码
五、统计分析
pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和、均值、最小值、最大值等,我们来具体看看这些函数:
首先随机生成一组数据;
然后建立一个数组;
现在我们来进行统计分析,如果你想要一次性输出很多需要的数据,可以使用descirbe方法。
也可以进行分开输出,如
统计数据:
输出最小值:
输出最大值
输出最小值的位置,类似于R中的which.min函数
输出最大值的位置,类似于R中的which.max函数
求和
均值
方差
标准差
偏度
峰度
六、类似于SQL的操作
Pandas还可以实现类似与SQL的一些操作:
如将两个表联合在一起
删除表
七、作图
目前有很多的开源框架所实现的绘图功能是基于matplotlib的,pandas便是其中之一,对于pandas数据,直接使用pandas本身实现的绘图方法比matplotlib更加方便简单。
条形图
条形图适用于比较分类数据间的大小,用宽度相同的条形的高度来表示数据多少。
调用DataFrame的plot.bar()方法会产生一个多条形图:
堆积条形图,可以使用stacked=True:水平条形图, df.plot.barh(stacked=True)
直方图
是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。可以使用DataFrame.plot.hist()和Series.plot.hist()方法绘制直方图。
堆叠直方图使用stacked=True。可以使用bins关键字更改Bin大小, 您可以传递matplotlib支持的其他关键字hist。例如,水平和累积直方图可以用orientation='horizontal'和绘制cumulative=True。
箱线图
箱线图是一种用作显示一组数据分散情况资料的统计图,它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。
箱线图可以得出Series.plot.box()和DataFrame.plot.box(),或DataFrame.boxplot()可视化值中的每一列内的分布。
例如,这里是一个箱线图,表示在[0,1]上对均匀随机变量进行10次观测的五次试验。
Boxplot可以通过传递color关键字来着色。你可以通过一个dict 它的键是boxes,whiskers,medians和caps。如果缺少某些键dict,则默认颜色将用于相应的艺术家。此外,boxplot还有sym用于指定传单样式的关键字。
当你通过传递其他类型的参数color关键字,它会直接传递到matplotlib所有boxes,whiskers,medians和caps 着色。
颜色应用于要绘制的每个框。如果你想要更复杂的着色,可以通过传递return_type来获取。
区域图
可以使用Series.plot.area()和创建区域图DataFrame.plot.area()。区域图表默认堆叠。要生成堆积区域图,每列必须是全部正值或所有负值。
当输入数据包含NaN时,它将自动填充0.如果要删除或填充不同的值,请在调用plot之前使用dataframe.dropna()或。dataframe.fillna()
散点图
可以使用该DataFrame.plot.scatter()方法绘制散点图。散点图需要x和y轴的数字列。这些可以通过x和y关键字指定。
饼图
您可以使用DataFrame.plot.pie()或创建饼图Series.plot.pie()。如果您的数据包含任何数据NaN,它们将自动填充0. 如果您的数据中ValueError存在任何负值,则会引发数据。
对于饼图,最好使用方形图形,即图形纵横比1.您可以创建具有相等宽度和高度的图形,或者在绘制后通过调用ax.set_aspect('equal')返回的 axes对象强制纵横比相等。
需要注意的是,饼图与DataFrame要求你通过y参数或指定目标列subplots=True。当y指定,选定列的饼状图将被绘制。如果subplots=True指定,则将每列的饼图绘制为子图。默认情况下,每个饼图中都会绘制一个图例; 指定legend=False隐藏它。
密度图
您可以使用Series.plot.kde()和DataFrame.plot.kde()方法创建密度图。
安德鲁斯曲线
安德鲁斯曲线允许人们将多变量数据绘制为使用样本属性作为傅立叶级数系数创建的大量曲线。通过对每个类别不同地着色这些曲线,可以进行可视化数据聚类。
In [29]: from pandas.plotting import andrews_curves
In [30]: data = pd.read_csv('data/iris.data')
In [31]: plt.figure()
Out[31]: <Figure size 640x480 with 0 Axes>
In [32]: andrews_curves(data, 'Name')
Out[33]: <matplotlib.axes._subplots.AxesSubplot at 0x7f20d4021e48>
自相关图
自相关图通常用于检查时间序列中的随机性。这是通过在不同的时间滞后计算数据值的自相关来完成的。如果时间序列是随机的,那么对于任何和所有时滞分离,这种自相关应该接近于零。如果时间序列是非随机的,则一个或多个自相关将显着非零。图中显示的水平线对应95%和99%置信区间。虚线是99%置信区间。