当前位置: 首页 > 科技观察

介绍一款进阶版的Pandas数据分析神器:Polars_0

时间:2023-03-14 22:40:17 科技观察

相信对于很多数据分析从业者来说,Pandas和SQL是用的比较多的两个工具,Pandas不仅可以对数据集进行清理分析,还可以绘制一个各种炫酷的图表,但是如果你还用Pandas来处理大数据集,显然有点力不从心了。今天给大家介绍另外一款数据处理分析工具Polars,它在数据处理上速度更快。当然,它还包括两个API,一个是EagerAPI,一个是EagerAPI。就是LazyAPI,EagerAPI和Pandas的用法类似,语法类似,执行后可以立即生成结果。LazyAPI与Spark非常相似,具有并行和查询逻辑优化操作。模块安装和导入我们先安装模块,使用pip命令pipinstallpolars安装成功后,我们分别使用Pandas和Polars读取数据,看看各自的性能差异,我们导入将要安装的模块usedimportpandasaspdimportpolarsasplimportmatplotlib.pyplotasplt%matplotlibinlinereadfileswithPandas这次使用的数据集是某网站的注册用户名数据,一共360MB大小,我们首先使用Pandas模块toreadthecsvfile%%timedf=pd.read_csv("users.csv")df.head()输出可以看出用Pandas读取CSV文件一共耗时12秒。数据集一共有两列,一列是用户名,用户名重复“n”的次数。让我们对数据集进行排序,调用sort_values()方法,代码如下%%timedf.sort_values("n",ascending=False).head()输出使用Polars读取操作下面的文件,我们使用Polars模块来读取和操作文件,看看需要多长时间。代码如下%%timedata=pl.read_csv("users.csv")data.head()outputcan看到用polars模块读取数据只用了730毫秒,可以说是一个快很多。我们按照“n”列对数据集进行排序,代码如下%%timedata.sort(by="n",reverse=True).head()输出耗时1.39秒对数据集进行排序。接下来,我们使用polars模块对数据集进行初步的探索性分析。数据集中的列和列名是什么?我们以著名的“泰坦尼克号”数据集为例Age',...]和Pandas同样的输出列名调用columns方法,然后我们看数据集一共有多少行多少列,df_titanic.shapeoutput(891,12)查看数据集中每一列的数据类型df_titanic.dtypesoutput[polars.datatypes.Int64,polars.datatypes.Int64,polars.datatypes.Int64,polars.datatypes.Utf8,polars.datatypes.Utf8,polars.datatypes.Float64,......]用空值填充data统计分析我们来看看空值在数据集中的分布情况。调用null_count()方法df_titanic.null_count()输出,我们可以看到“Age”和“Cabin”两列中有空值。我们可以尝试用平均值填充,代码如下,只需要调用mean()方法,那么中位数和最大值/最小值的计算是一样的,代码如下print(f'MedianAge:{df_titanic["Age"].median()}')print(f'平均年龄:{df_titanic["年龄"].mean()}')print(f'最大年龄:{df_titanic["年龄"].max()}')print(f'最小Age:{df_titanic["Age"].min()}')outputMedianAge:29.69911764705882AverageAge:29.699117647058817MaximumAge:80.0MinimumAge:0.42数据筛选和可视化我们过滤掉40岁以上的乘客,代码如下df_titanic[df_titanic["Age"]>40]output最后我们简单画一个图表,代码如下fig,ax=plt.subplots(figsize=(10,5))ax.boxplot(df_titanic["Age"])plt.xticks(rotation=90)plt.xlabel('AgeColumn')plt.ylabel('Age')plt.show()output总体来说,polars在数据分析处理上有很多与上面的Pandas模块有相似之处,在一些API上会有差异。感兴趣的童鞋可以参考其官网:https://www.pola.rs/