<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          比 Excel 更強大,Python 的可視化庫 Altair 入門

          共 3909字,需瀏覽 8分鐘

           ·

          2021-09-29 10:54

          擊 “凹凸域”,馬上關(guān)注

          更多內(nèi)容、請置頂或星

          數(shù)據(jù)轉(zhuǎn)化成更直觀的圖片,對于理解數(shù)據(jù)背后的真相很有幫助。如果你有這方面的需求,而且還在使用Python,那么強烈推薦你試一試Altair。

          Altair是一個專為Python編寫的可視化軟件包,它能讓數(shù)據(jù)科學(xué)家更多地關(guān)注數(shù)據(jù)本身和其內(nèi)在的聯(lián)系。

          Altair由華盛頓大學(xué)的數(shù)據(jù)科學(xué)家Jake Vanderplas編寫,目前在GitHub上已經(jīng)收獲超過3000星。

          最近,Medium上一位小姐姐Parul Pandey分享了Altair的入門教程,希望對從事數(shù)據(jù)科學(xué)的用戶有幫助。

          使用教程

          Parul以汽車數(shù)據(jù)為例,將一個汽車數(shù)據(jù)集“cars”載入到Altair中。

          cars中包含汽車的生產(chǎn)年份、耗油量、原產(chǎn)國等9個方面的數(shù)據(jù),后面將對這些內(nèi)容進行可視化處理。

          安裝和導(dǎo)入Altair軟件包

          除了安裝Altair和它的依賴軟件外,還需要安裝其他前端工具,比如Jupyter Notebook、JupyterLab、Colab等等。

          Parul小姐姐推薦安裝JupyterLab:

          $ pip install -U altair vega_datasets jupyterlab

          需要注意的是,由于Altair的教程文檔中還包含vega數(shù)據(jù)集,因此也需要一并安裝上。

          接著在終端中輸入:jupyter lab,就能在你的瀏覽器中自動打開它啦。

          在代碼開頭別忘了導(dǎo)入Altair:

          import altair as alt

          完成以上準(zhǔn)備工作,我們就可以開始繪圖了

          開始繪制圖表

          Altair中的基本對象是Chart,它將數(shù)據(jù)框作為單個參數(shù)。你可以這樣定義它:

          chart = alt.Chart(cars)

          Chart有三個基本方法:數(shù)據(jù)(data)、標(biāo)記(mark)和編碼(encode),使用它們的格式如下:

          alt.Chart(data).mark_point().encode(

          encoding_1='column_1',

          encoding_2='column_2',

          # etc.

          )

          數(shù)據(jù)顧名思義,直接導(dǎo)入cars數(shù)據(jù)集即可。標(biāo)記和編碼則決定著繪制圖表的樣式,下面著重介紹這兩部分。

          標(biāo)記可以讓用戶在圖中以不同形狀來表示數(shù)據(jù)點,比如使用實心點、空心圓、方塊等等。

          如果我們只調(diào)用這個方法,那么所有的數(shù)據(jù)點都將重疊在一起:

          這顯然是沒有意義的,還需要有編碼來指定圖像的具體內(nèi)容。常用的編碼有:

          x: x軸數(shù)值
          y: y軸數(shù)值
          color: 標(biāo)記點顏色
          opacity: 標(biāo)記點的透明度
          shape: 標(biāo)記點的形狀
          size: 標(biāo)記點的大小
          row: 按行分列圖片
          column: 按列分列圖片

          以汽車的耗油量為例,把所有汽車的數(shù)據(jù)繪制成一個一維散點圖,指定x軸為耗油量:

          alt.Chart(cars).mark_point().encode(

          x='Miles_per_Gallon'

          )

          但是使用mark_point()會讓所有標(biāo)記點混雜在一起,為了讓圖像更清晰,可以替換成棒狀標(biāo)記點mark_tick()

          alt.Chart(cars).mark_tick().encode(

          x='Miles_per_Gallon'

          )


          以耗油量為X軸、馬力為Y軸,繪制所有汽車的分布,就得到一張二維圖像:

          alt.Chart(cars).mark_line().encode(

          x='Miles_per_Gallon',

          y='Horsepower'

          )


          給圖表上色

          前面我們已經(jīng)學(xué)會了繪制二維圖像,如果能給不同組的數(shù)據(jù)分配不同的顏色,就相當(dāng)于給數(shù)據(jù)增加了第三個維度。


          alt.Chart(cars).mark_point().encode(

          x='Miles_per_Gallon',

          y='Horsepower',

          color='Origin'

          )


          上面的圖中,第三個維度“原產(chǎn)國”是一個離散變量。

          使用顏色刻度表,我們還能實現(xiàn)對連續(xù)變量的上色,比如在上圖中加入“加速度”維度,顏色越深表示加速度越大:

          alt.Chart(cars).mark_point().encode(

          x='Miles_per_Gallon',

          y='Horsepower',

          color='Acceleration'

          )

          數(shù)據(jù)的分類與匯總

          上面的例子中,我們使用的主要是散點圖。實際上,Altair還能方便地對數(shù)據(jù)進行分類和匯總,繪制統(tǒng)計直方圖。

          相比其他繪圖工具,Altair的特點在于不需要調(diào)用其他函數(shù),而是直接在數(shù)軸上進行修改。

          例如統(tǒng)計不同油耗區(qū)間的汽車數(shù)量,對X軸使用alt.X(),指定數(shù)據(jù)和間隔大小,對Y軸使用count()統(tǒng)計數(shù)量。


          alt.Chart(cars).mark_bar().encode(

          x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),

          y='count()'

          )


          為了分別表示出不同原產(chǎn)國汽車的油耗分布,前文提到的上色方法也能直方圖中使用,這樣就構(gòu)成一幅分段的統(tǒng)計直方圖:


          alt.Chart(cars).mark_bar().encode(

          x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),

          y='count()',

          color='Origin'

          )


          如果你覺得上圖還不夠直觀,那么可以用column將汽車按不同原產(chǎn)國分列成3張直方圖:


          alt.Chart(cars).mark_bar().encode(

          x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),

          y='count()',

          color='Origin',

          column='Origin'

          )

          交互

          除了繪制基本圖像,Altair強大之處在于用戶可以與圖像進行交互,包括平移、縮放、選中某一塊數(shù)據(jù)等操作。

          在繪制圖片的代碼后面,調(diào)用interactive()模塊,就能實現(xiàn)平移、縮放:

          Altair還為創(chuàng)建交互式圖像提供了一個selection的API:

          在選擇功能上,我們能做出一些更酷炫的高級功能,例如對選中的數(shù)據(jù)點進行統(tǒng)計,生成實時的直方圖。

          疊加多個圖層

          如果把前面的汽車耗油量按年度計算出平均值:

          alt.Chart(cars).mark_point().encode(

          x='Miles_per_Gallon',

          y='Horsepower',

          color='Acceleration'

          )

          在統(tǒng)計學(xué)上,我們還能定義平均值的置信區(qū)間,為了讓圖表更好看,可以分別列出三個不同產(chǎn)地汽車的耗油量平均值置信區(qū)間:

          alt.Chart(cars).mark_area(opacity=0.3).encode(

          x=alt.X(‘Year’, timeUnit=’year’),

          y=alt.Y(‘ci0(Miles_per_Gallon)’, axis=alt.Axis(title=’Miles per Gallon’)),

          y2=’ci1(Miles_per_Gallon)’,

          color=’Origin’

          ).properties(

          width=600

          )


          最后我們可以用圖層API將平均值和置信區(qū)間兩幅圖疊加起來:

          spread = alt.Chart(cars).mark_area(opacity=0.3).encode(

          x=alt.X('Year', timeUnit='year'),

          y=alt.Y('ci0(Miles_per_Gallon)', axis=alt.Axis(title='Miles per Gallon')),

          y2='ci1(Miles_per_Gallon)',

          color='Origin'

          ).properties(

          width=800

          )

          lines = alt.Chart(cars).mark_line().encode(

          x=alt.X('Year', timeUnit='year'),

          y='mean(Miles_per_Gallon)',

          color='Origin'

          ).properties(

          width=800

          )

          spread + lines

          更多內(nèi)容

          本文只是介紹了Altair的一些基本使用方法,遠(yuǎn)遠(yuǎn)不能涵蓋它所有的功能。如果需要了解更多,請參閱GitHub頁說明:
          https://github.com/altair-viz/altair

          教程原文:
          https://medium.com/analytics-vidhya/exploratory-data-visualisation-with-altair-b8d85494795c

          原作者 Parul Pandey 

          曉查 編譯整理@量子位


          書籍PDF電子書下載
          我總結(jié)的82頁《Python之路V1.1.pdf》,都是干貨
          520 頁機器學(xué)習(xí)筆記!圖文并茂可能更適合你,文末附下載方法
          541頁的《利用Python進行數(shù)據(jù)分析》(附電子書和源碼下載)
          下載 | 《Python數(shù)據(jù)科學(xué)速查表中文版》
          343頁經(jīng)典書籍《算法之道(第二版)》pdf下載
          下載 | Python 學(xué)習(xí)手冊(第 4 版)

          可以通過下述步驟來獲取:

              1. 關(guān)注微信二維碼。

              2. 回復(fù)關(guān)鍵詞:PDF:回復(fù)可能慢 稍等



          看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人

          瀏覽 60
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产小视频在线播放 | 韩国一级免费毛片 | 欧美大生殖器在线观看 | 久久黄色网 | 五月丁香成人网 |