4行代碼!完成數(shù)據(jù)可視化分析
上期介紹了「GoPUP」這個(gè)數(shù)據(jù)獲取神器,100+的免費(fèi)數(shù)據(jù)接口。
本期就來給大家講講,有數(shù)據(jù)之后,我們?cè)撛趺慈プ隹梢暬治觥?/span>
同樣是大佬造的輪子「Lux」,只需4行代碼就能可視化數(shù)據(jù)集。
A Python API for Intelligent Visual Discovery.
GitHub:https://github.com/lux-org/lux/
文檔地址:https://lux-api.readthedocs.io/
在PyCharm上是無法使用的,只能是在jupyter notebook中用。
jupyter notebook的安裝就不講了,沒有裝的同學(xué),可以自行百度~
首先要在conda默認(rèn)的環(huán)境「base」中安裝擴(kuò)展包jupyter_contrib_nbextensions。
#?在conda中安裝
pip?install?-i?https://pypi.tuna.tsinghua.edu.cn/simple?jupyter_contrib_nbextensions
jupyter?contrib?nbextension?install?--user
#?啟動(dòng)jupyter?notebook
安裝成功后啟動(dòng)jupyter notebook,會(huì)發(fā)現(xiàn)多了一個(gè)Tab頁,即Nbextensions(擴(kuò)展插件)。

然后在conda的base環(huán)境中安裝如下兩個(gè)插件。
#?在conda中安裝插件
jupyter?nbextension?install?--py?luxwidget
jupyter?nbextension?enable?--py?luxwidget
上圖的左下角處就會(huì)有高亮出現(xiàn),即插件安裝成功。
如此我們就可以導(dǎo)入這個(gè)第三方庫了。
用作者提供的數(shù)據(jù)來看一下。
import?pandas?as?pd
import?lux
#?使用作者提供的數(shù)據(jù)
df?=?pd.read_csv("college.csv")
df
在jupyter notebook中無需使用print()來顯示信息,直接在最后一行加上變量名,就會(huì)打印結(jié)果,而且還是表格形式。

可以看到,左上角多了個(gè)按鈕,可以切換Pandas結(jié)果展示和Lux結(jié)果展示。
點(diǎn)擊按鈕,得到下圖。

Correlation、Distribution、Occurrence,一共是有3個(gè)Tab頁。
Correlation意思是兩個(gè)變量的相關(guān)性,從左到右12個(gè)圖表,相關(guān)性逐漸減弱。

Distribution意思是單個(gè)變量(數(shù)值屬性)的分布情況(直方圖),從左到右7個(gè)圖表,偏斜由大變小。

Occurrence意思是單個(gè)變量(類別屬性)的分布情況(條形圖),從左到右3個(gè)圖表,不均勻度由高到小。
由于作者提供的數(shù)據(jù)都是英文的,不太方便看。
所以小F使用之前一篇文章的數(shù)據(jù),5000個(gè)抖音大V數(shù)據(jù)。

4行Python代碼讀取數(shù)據(jù),并對(duì)其進(jìn)行可視化分析。
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
df
得到結(jié)果如下。

這里無需其他設(shè)置,中文自己就能顯示出來。
其中喜歡數(shù)與粉絲數(shù)有著較強(qiáng)的相關(guān)性。這也不難理解,粉絲多,看視頻的人也就多了。

這里由于是對(duì)數(shù)據(jù)進(jìn)行均分(bins)劃分,所以看不太出來分布情況。


至于是否可以自定義設(shè)置bins,小F目前也還不清楚~

分類數(shù)據(jù)的情況,這個(gè)功能很實(shí)用,自動(dòng)就給你分組匯總計(jì)數(shù),省去不少代碼。
以上就是對(duì)數(shù)據(jù)的總覽,下面我們可以對(duì)你所感興趣的數(shù)據(jù)進(jìn)行可視化分析。
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
#?對(duì)你感興趣的數(shù)據(jù)進(jìn)行可視化分析,這里以視頻數(shù)為例
df.intent?=?["視頻數(shù)"]
df
以視頻數(shù)數(shù)據(jù)為例,得到結(jié)果如下。

左側(cè)圖表是視頻數(shù)的分布情況,右側(cè)是視頻數(shù)與其他變量的情況。
畢業(yè)院校與平均視頻數(shù)的關(guān)系,應(yīng)該是對(duì)畢業(yè)院校進(jìn)行分組計(jì)數(shù)后,得出平均視頻數(shù)。
同理,昵稱也是一樣的,只不過頭部賬號(hào)的昵稱基本不會(huì)出現(xiàn)相同的,和畢業(yè)院校數(shù)據(jù)還是有所不同。
當(dāng)然,我們還可以使用多個(gè)變量數(shù)據(jù)。
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
#?可以使用多個(gè)變量數(shù)據(jù)
df.intent?=?["喜歡數(shù)",?"分類"]
df
選擇喜歡數(shù)、分類變量數(shù)據(jù),得到結(jié)果如下。

左側(cè)圖表是分類和平均喜歡數(shù)的情況,右側(cè)圖表則是省市、昵稱與平均喜歡數(shù)的關(guān)系。

可以看出,最后一張圖和之前分析的圖基本差不多,而且還多了一個(gè)維度(分類)。
對(duì)變量中的特定值再進(jìn)一步分析。
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
#?對(duì)數(shù)據(jù)的子集再進(jìn)行分析
df.intent?=?["分類=美女"]
df
上面的代碼會(huì)報(bào)錯(cuò),小F也不知道是什么原因,猜測是中文的問題。
使用作者的例子就沒啥問題~

以上是基于字符串的基本描述,作者還提供了一個(gè)高級(jí)的方法,可以自定義設(shè)置參數(shù)。
lux.Clause,可以設(shè)置感興趣的變量值(attribute)、數(shù)據(jù)類型(data_type)、數(shù)據(jù)模型(data_model)、聚合方式(aggregation)等等。

下面就來舉個(gè) ??
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
#?分析分類數(shù)據(jù)與喜歡數(shù)總和之間的關(guān)系
df.intent?=?["分類",lux.Clause("喜歡數(shù)",aggregation="sum")]
df
分類數(shù)據(jù)與喜歡數(shù)總和之間的關(guān)系,得到結(jié)果如下。

這里通過設(shè)置lux.Clause中的aggregation參數(shù),使得將橫坐標(biāo)改變?yōu)榭倲?shù),而不是之前的平均數(shù)。
左側(cè)圖表與小F之前做的樹形圖類似,使用的數(shù)據(jù)一摸一樣。

最后,再講一下使用Vis和VisList創(chuàng)建可視化對(duì)象及集合。
from?lux.vis.Vis?import?Vis
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
#?使用Vis進(jìn)行分析
intent?=?["喜歡數(shù)"]
vis?=?Vis(intent,?df)
vis
得到結(jié)果如下。

不能自定義bins,確實(shí)是有點(diǎn)難受,Vis可設(shè)置參數(shù)如下。

上面是單個(gè)變量的分析,使用VisList可設(shè)置多個(gè)變量。
from?lux.vis.Vis?import?Vis
import?pandas?as?pd
import?lux
#?使用抖音數(shù)據(jù)
df?=?pd.read_csv("douyin.csv")
#?使用VisList進(jìn)行分析
vc?=?VisList(["分類",lux.Clause(['粉絲數(shù)','喜歡數(shù)','評(píng)論數(shù)','分享數(shù)'],aggregation="sum")],df)
vc
結(jié)合lux.Clause一起使用,得到結(jié)果如下。

VisList可設(shè)置參數(shù)如下圖。

到此,本期分享就結(jié)束了。

推薦閱讀
歡迎長按掃碼關(guān)注「數(shù)據(jù)管道」
