Pandas
以及SQL
這兩種工具,Pandas
不但能夠?qū)?shù)據(jù)集進行清理與分析,并且還能夠繪制各種各樣的炫酷的圖表,但是遇到數(shù)據(jù)集很大的時候要是還使用Pandas
來處理顯然有點力不從心。Polars
,它在數(shù)據(jù)處理的速度上更快,當(dāng)然里面還包括兩種API,一種是Eager API
,另一種則是Lazy API
,其中Eager API
和Pandas
的使用類似,語法類似差不太多,立即執(zhí)行就能產(chǎn)生結(jié)果。Lazy API
和Spark
很相似,會有并行以及對查詢邏輯優(yōu)化的操作。pip
命令Pandas
和Polars
來讀取數(shù)據(jù),看一下各自性能上的差異,我們導(dǎo)入會要用到的模塊import pandas as pd
import polars as pl
import matplotlib.pyplot as plt
%matplotlib inline
Pandas
讀取文件Pandas
模塊來讀取該csv
文件Pandas
讀取CSV
文件總共花費了12秒的時間,數(shù)據(jù)集總共有兩列,一列是用戶名稱,以及用戶名稱重復(fù)的次數(shù)“n”,我們來對數(shù)據(jù)集進行排序,調(diào)用的是sort_values()
方法,代碼如下%%time
df.sort_values('n', ascending=False).head()
Polars
來讀取操作文件Polars
模塊來讀取并操作文件,看看所需要的多久的時間,代碼如下polars
模塊來讀取數(shù)據(jù)僅僅只花費了730毫秒的時間,可以說是快了不少的,我們根據(jù)“n”這一列來對數(shù)據(jù)集進行排序,代碼如下%%time
data.sort(by='n', reverse=True).head()
['PassengerId',
'Survived',
'Pclass',
'Name',
'Sex',
'Age',
......]
Pandas
一樣輸出列名調(diào)用的是columns
方法,然后我們來看一下數(shù)據(jù)集總共是有幾行幾列的,(891, 12)
[polars.datatypes.Int64,
polars.datatypes.Int64,
polars.datatypes.Int64,
polars.datatypes.Utf8,
polars.datatypes.Utf8,
polars.datatypes.Float64,
......]
null_count()
方法df_titanic['Age'] = df_titanic['Age'].fill_nan(df_titanic['Age'].mean())
mean()
方法即可,那么中位數(shù)、最大/最小值的計算也是同樣的道理,代碼如下Median Age: 29.69911764705882
Average Age: 29.699117647058817
Maximum Age: 80.0
Minimum Age: 0.42
fig, ax = plt.subplots(figsize=(10, 5))
ax.boxplot(df_titanic['Age'])
plt.xticks(rotation=90)
plt.xlabel('Age Column')
plt.ylabel('Age')
plt.show()
polars
在數(shù)據(jù)分析與處理上面和Pandas
模塊有很多相似的地方,其中會有一部分的API存在著差異,感興趣的童鞋可以參考其官網(wǎng):https://www.pola.rs/聯(lián)系客服