
1.3.2 Pandas库应用入门
Pandas在数据分析中是非常重要和常用的库,它让数据的处理和操作变得简单与快捷,在数据预处理、缺失值填补、时间序列、可视化等方面都有应用。接下来简单介绍Pandas库的一些应用,如如何生成序列和数据表、数据聚合与分组运算及数据可视化函数。Pandas库在导入后经常使用pd进行代替,如下所示:

1.如何生成序列和数据表
Pandas库中的序列(Series)是一维标签数组,能够容纳任何类型的数据。可以使用pd.Series(data,index,…)的方式生成序列,其中,data指定序列中的数据,通常使用数组或列表,index通常指定序列中的索引。例如,使用下面的程序可以生成序列s1,并且可以通过s1.values和s1.index获取序列的数值和索引:

可以通过切片和索引获取序列中的对应值,也可以对获取的数值进行重新赋值操作,如下所示:


通过字典也可以生成序列,其中字典的键将作为序列的索引,字典的值将作为序列的值,下面的s2就是利用字典生成的序列,可以使用value_counts()方法计算序列中每个取值出现的次数:

数据表是Pandas库提供的一种二维数据结构,数据按行和列的表格方式排列,是数据分析经常使用的数据保存方式。数据表的生成通常使用pd.DataFrame(data,index,columns,…),其中,data可以使用字典、数组等内容,index用于指定数据表的索引,columns用于指定数据表的列名。
在使用字典生成数据表时,字典的键会作为数据表的列名,字典的值会作为对应列的内容。可以使用df1["列名"]的形式为数据表df1添加新的列,或者获取对应列的内容。使用df1.columns属性则可以输出数据表的列名。相关程序如下所示:


数据表df可以使用df.loc获取指定的数据,使用方式为df.loc[index_name,col_name],选择指定位置的数据,相关程序如下所示:


而数据表的df.iloc则是基于位置的索引获取对应的内容,相关程序如下所示:


2.数据聚合与分组运算
Pandas库提供了强大的数据聚合和分组运算能力。例如,可以使用apply()方法将指定的函数或方法作用在数据的行或列上,而使用groupby()方法可以对数据进行分组统计,这些功能对数据表的变换、分析和计算都非常有用。下面使用鸢尾花数据集介绍如何使用apply()方法将函数应用于数据计算:


通过上面的程序可以发现,利用apply()方法可以使函数的应用变得简单,从而方便对数据进行更多的认识和分析。使用groupby()方法则可以进行分组统计,其应用比apply()方法的应用更加广泛,如可以根据数据的不同类型计算数据的一些统计性质,获得数据透视表。相关程序如下所示:


数据表的聚合运算可以使用agg()方法,并且该方法可以和groupby()方法结合使用,从而完成更复杂的数据描述和分析工作,如可以计算不同数据特征的不同统计性质等。相关程序如下所示:


3.数据可视化函数
Pandas库提供了针对数据表和序列的简单的可视化方式,其可视化是基于Matplotlib库进行的。在对Pandas库中的数据表进行数据可视化时,只需要使用数据表的plot()方法,该方法包含散点图、折线图、箱线图、条形图等数据可视化方式。下面使用数据演示Pandas库中的一些数据可视化方法,获得数据可视化图像:

上述程序使用数据表的boxplot()方法获得箱线图。用箱线图可视化两列数据"SepalLengthCm"和"SepalWidthCm",同时针对每个变量或使用类别特征"Species"对其进行分组,最终获得的图像如图1-9所示。

图1-9 数据箱线图可视化
在使用plot()方法对数据表进行可视化时,通常使用参数kind指定数据可视化图像的类型,使用参数x指定横轴使用的变量,使用参数y指定纵轴使用的变量,还会使用其他的参数来调整数据的可视化结果。例如,可以使用参数s和参数c指定散点图中点的大小颜色。利用数据表获得散点图的程序如下所示:

运行程序获得的图像如图1-10所示。

图1-10 数据散点图可视化
在使用plot()方法时,如果指定参数kind="hexbin",则使用六边形热力图对数据进行可视化。例如,针对鸢尾花数据中的变量SepalLengthCm和SepalWidthCm的六边形热力图,可以使用下面的程序进行可视化:

运行程序获得的图像如图1-11所示。

图1-11 数据六边形热力图
在可视化时,指定参数kind="line"表示使用折线图对数据进行可视化。例如,针对鸢尾花数据中的4个变量的变化情况的折线图,可以使用下面的程序进行可视化:

运行程序获得的图像如图1-12所示。

图1-12 数据折线图
Pandas库的入门内容本节就不再深入介绍,如果读者想了解更多的内容请参考官方文档进行探索和学习。