日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HoloView -- Tabular Datasets

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HoloView -- Tabular Datasets 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文地址HoloView – Tabular Datasets

表格數(shù)據(jù)集

正如我們已經(jīng)發(fā)現(xiàn)的那樣,元素是圍繞數(shù)據(jù)的簡單包裝,提供了語義上有意義的視覺表示。HoloViews可以處理多種數(shù)據(jù)類型,但其中許多可以分類為:

  • Tabular: 表格數(shù)據(jù)
  • Gridded: 陣列數(shù)據(jù)
    我們將分成兩個章節(jié)來描述上述的兩種結(jié)構(gòu),在本篇文章中描述表格數(shù)據(jù),包括下述的各種類型(包括NumPy array組成的字典類型,pandas的DataFrames, dask DataFrames, 和 xarray DataArrays ``Datasets`)。

表格化

Tabular data (also called columnar data) is one of the most common, general, and versatile data formats, corresponding to how data is laid out in a spreadsheet.
表格數(shù)據(jù)(也稱為柱狀數(shù)據(jù))是最常見、通用和通用的數(shù)據(jù)格式之一,對應于數(shù)據(jù)在電子表格中的布局方式。
有很多方法可以將數(shù)據(jù)轉(zhuǎn)化為表格形式,對于交互式分析,tidy data提供了簡單與靈活的方法。對于整齊的數(shù)據(jù),表格的表示變量維度表示觀察值。理解這種格式的最佳方法是查看這樣的數(shù)據(jù)集:

import numpy as np import pandas as pd import holoviews as hv from holoviews import opts hv.extension('bokeh', 'matplotlib')``````python path = r"C:\Users\samsung\AppData\Local\Programs\Python\Python38\Lib\site-packages\holoviews\examples\getting_started" import os os.chdir(path) diseases = pd.read_csv('../assets/diseases.csv.gz') diseases.head()


這個特殊的數(shù)據(jù)集是[華爾街日報]((http://graphics.wsj.com/infectious-diseases-and-vaccines/#b02g20t20w15)一篇優(yōu)秀的視覺新聞報道的主題。華爾街日報的主題詳細的訴說了各種疾病隨時間的發(fā)生率,該數(shù)據(jù)可以從匹茲堡大學的相應項目中下載University of Pittsburgh’s Project Tycho。我們可以看到,我們有5個數(shù)據(jù)列,每個數(shù)據(jù)列對應于指定特定測量值的自變量(“年”、“周”、“州”),或報告當時實際測量值/因變量(“麻疹”或“百日咳”發(fā)病率)。
了解變量之間的兩兩關(guān)系對于可視化是至關(guān)重要的,但是在表格中并沒有這些信息。顯然繪制“周”與“州”之間的關(guān)系圖沒有任何意義,而每個州下的麻疹率(在其他維度上求平均)的結(jié)果將很適合,但是并無法從表格格式中去推斷這些約束。因此我們會先創(chuàng)建一個Dataset這個HoloView對象,該Dataset聲明了自變量(kdims 這個維度)和因變量(vdims這個維度)。

vdims = [('measles', 'Measles Incidence'), ('pertussis', 'Pertussis Incidence')] ds = hv.Dataset(diseases, ['Year', 'State'], vdims)

這里,我們使用了可選的基于元組的語法**(name,label)**來為vdims這個維度制定了更有意思的描述,而對于kvdims,這里就是用了默認的字符。從上述可以看到,我們并沒有聲明如何去處理“Week”,因為我們這里只對"Year"和"State"感興趣。

ds = ds.aggregate(function=np.mean) ds


“repr”向我們顯示了“Dataset”的“kdims”(在方括號中)和“vdims”(在括號中)。因為“數(shù)據(jù)集”可以容納維度的任意組合,所以它不是立即可見的。從這四個維度到二維頁面沒有單一的清晰映射,因此上面顯示了文本表示。
為了使這些數(shù)據(jù)可視化,我們需要提供更多的元數(shù)據(jù),方法是選擇一個大型元素庫來幫助回答我們想要詢問的有關(guān)數(shù)據(jù)的問題。也許這個數(shù)據(jù)集最明顯的表現(xiàn)形式是一條“曲線”,顯示了每個州每年的發(fā)病率。我們可以從原始數(shù)據(jù)集中逐個拉出各個列,但現(xiàn)在我們已經(jīng)聲明了有關(guān)維度的信息,最干凈的方法是使用將數(shù)據(jù)集的維度映射到元素的維度。到:

layout = (ds.to(hv.Curve, 'Year', 'measles') + ds.to(hv.Curve, 'Year', 'pertussis')).cols(1) layout.opts(opts.Curve(width=600, height=250, framewise=True))


在這里,我們指定了兩個分別顯示麻疹和百日咳發(fā)病率的“曲線”元素(vdims),每年(kdim),并將其放置在垂直列中。您會注意到,盡管我們只為值維度指定了短名稱,但圖中顯示了我們在“數(shù)據(jù)集”上聲明的較長名稱(“麻疹發(fā)病率”、“百日咳發(fā)病率”)。
您還會注意到,我們自動收到一個下拉菜單,選擇要查看的“州”。每個“曲線”都忽略了未使用的值維度,因為額外的測量不會相互影響,但HoloViews必須對每個這樣的圖的每個關(guān)鍵維度做一些事情。如果“州”(或任何其他關(guān)鍵維度)沒有以某種方式繪制或聚合,則HoloViews必須讓用戶為其選擇一個值,因此選擇小部件。關(guān)于如何處理額外維度或只是額外數(shù)據(jù)范圍的其他選項如下所示。

selecting

我們經(jīng)常想做的事情就是我們只選擇數(shù)據(jù)的一個子集。select方法使這個變得非常簡單,可以讓我們只選擇一個數(shù)據(jù),list或者tuple。這里我們使用select方法選擇四個州的麻疹發(fā)病率,當應用了這個selectH后,我們用 .to方法使其使用直方圖的形式展現(xiàn)出來,使用Year和State作為kdims,‘Measles Incidence’ 作為vdims

states = ['New York', 'New Jersey', 'California', 'Texas'] bars = ds.select(State=states, Year=(1980, 1990)).to(hv.Bars, ['Year', 'State'], 'measles').sort() bars.opts(opts.Bars(width=800, height=400, tools=['hover'], xrotation=90, show_legend=False))


編者注:
實話實說,自己直接用Bokeh也不一定能出來這個效果,但看到目前位置,總感覺能控制的東西相對少了些,不如直接寫bokeh來的踏實,但是畢竟希望能用它馴服大數(shù)據(jù)的繪圖,還是先都過一遍吧

Faceting(翻譯成鑲嵌?)

上面我們已經(jīng)看到了我們沒有使用“to”方法顯式分配給元素的關(guān)鍵維度的情況:它們被分組,彈出一組小部件,以便用戶可以選擇要在任何時候顯示的值。然而,使用小部件并不總是查看數(shù)據(jù)的最有效方式,“數(shù)據(jù)集”允許您使用“數(shù)據(jù)集”指定其他替代方法。覆蓋,。網(wǎng)格和。布局``方法。例如,我們可以使用“.grid”分別布置每個狀態(tài):

grouped = ds.select(State=states, Year=(1930, 2005)).to(hv.Curve, 'Year', 'measles') gridspace = grouped.grid('State') gridspace.opts(opts.Curve(width=200, tools=['hover'], color='indianred'))


除了選擇數(shù)據(jù)子集,HoloViews支持的另一個常見操作是計算聚合。當我們首次加載此數(shù)據(jù)集時,我們在“周”列上進行聚合,以計算每年的平均發(fā)病率,從而顯著減少了我們的數(shù)據(jù)。因此,“聚合”方法對于根據(jù)我們的數(shù)據(jù)計算統(tǒng)計數(shù)據(jù)非常有用。
使用我們的數(shù)據(jù)集的一個簡單示例是按“年”計算麻疹發(fā)病率的平均值和標準差。我們可以簡單地通過傳遞關(guān)鍵維度來表示這一點(在本例中只是“年”),以及一個函數(shù)和可選的“spreadfn”來計算我們想要的統(tǒng)計數(shù)據(jù)。“spreadfn”將把函數(shù)名附加到維度名之后,這樣我們可以單獨引用計算值。計算完聚合后,我們可以簡單地將其轉(zhuǎn)換為“曲線”和“誤差條”:

agg = ds.aggregate('Year', function=np.mean, spreadfn=np.std) errorbars = hv.ErrorBars(agg,vdims=['measles', 'measles_std']).iloc[::2] overlay = (hv.Curve(agg) * errorbars).redim.range(measles=(0, None))overlay.opts(width=600)


通過這種方式,我們可以將多維數(shù)據(jù)集概括為可以直接可視化的數(shù)據(jù)集,同時允許我們沿維度計算任意統(tǒng)計信息。

最后

歡迎各種牛一起加入學習探討,關(guān)于python可視化的交流,剛新建的群,主要專注于bokeh與Holoview

可在QQ搜索群 python bokeh, 群號859297380,隨時交流,互通有無

總結(jié)

以上是生活随笔為你收集整理的HoloView -- Tabular Datasets的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。