羨慕實時資料看板?來看看Python的互動資料分析視覺化工具! ⛵

語言: CN / TW / HK

highlight: a11y-dark

攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第33天,點選檢視活動詳情

大家都看過非常酷的實時資料看板,能用最直觀的方式給到我們業務資料的資訊,如下圖所示。

而在 Python 中,我們也有非常易用的工具,可以產出漂亮的資料分析視覺化結果,並支援互動式操作和勾選區域性資料深入分析,ShowMeAI在本篇內容中,將給大家講解到 📘Altair 這樣一個功能強大的 Python 互動式資料分析工具,它能產出如下圖所示的互動分析結果:

💡 資料分析實現模板

為了讓大家在自己的資料上體驗 Altair 的分析結果,我們下面編寫的一個函式模板,用於為資料集中的所有特徵生成互動式圖表。

具體一點說,我們希望它為數值型欄位(特徵)返回『直方圖+散點圖』,為類別型特徵返回『柱狀圖+箱線圖』,Altair 返回的這些圖表結果都是可以互動式操作的。

```python

匯入工具庫

import altair as alt import pandas as pd

忽律資料規模限制

alt.data_transformers.enable('default', max_rows=None)

構建chart函式,它讀取資料和欄位名稱,返回一個互動式圖表結果

def chart(dataset, column_name, target_var): w = 500 single = alt.selection_single()

# 灰度圖與柱狀圖

# 如果是類別型欄位,我們不用分桶
if (column_name in dataset.select_dtypes(include='object').columns.to_list()):
    a = alt.Chart(dataset).mark_bar().encode(
    alt.X(column_name + ':N', bin=False),
    alt.Y('count()'),
    color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
    tooltip=['count()', alt.Tooltip(column_name, bin=False)]
    ).add_selection(single).properties(width=w)

# 如果是數值型欄位,我們先分桶
else:
    a = alt.Chart(dataset).mark_bar().encode(
    alt.X(column_name + ':Q', bin=True),
    alt.Y('count()'),
    color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
    tooltip=['count()', alt.Tooltip(column_name, bin=True)]
    ).add_selection(single).properties(width=w)

# 對於類別型欄位,我們構建它和目標欄位的一個箱線圖表;對於數值型欄位,我們構建它們和目標欄位的散點分佈圖
try:        
    if (column_name in dataset.select_dtypes(include='object').columns.to_list()):
        b = alt.Chart(dataset).mark_boxplot().encode( #, title="Boxplot of " + column_name
        alt.X(column_name + ':N'),
        alt.Y(target_var),
        color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
        tooltip=[target_var]
        ).add_selection(single).properties(width=w)
    else:
        b = alt.Chart(dataset).mark_point().encode(
        alt.X(column_name + ':Q'),
        alt.Y(target_var),
        color = alt.condition(single, alt.value('#4c78a8'), alt.value('lightgray')),
        tooltip=[target_var]
        ).add_selection(single).properties(width=w)
except:
    pass

return(a | b)

```

大家可以把它應用在自己的資料上,得到的結果圖如下所示(而且它們是可以用滑鼠互動操作的)。在下面的內容裡,我們會告訴大家如何把結果儲存為 html 報告,大家每次開啟 html 結果檔案,即可進行互動式操作,而無需每次都重新分析。

💡 資料分析&互動文件報告

下面的程式碼可以將所有視覺化結果編譯到一個 html 文件中,開啟這個 html 檔案,大家就可以得到一個可互動的視覺化資料分析平臺。

```python

把所有的altair圖表新增到一個列表裡

myl = [] for col in dataset.columns: try: myl.append(chart(dataset, col, target_var)) except: pass else: pass

編譯所有的圖表到1個html檔案中

a = myl[0] for i in range(1,len(myl)): a = a & myl[i] a.properties( title = 'Feature Histograms & Boxplots' ).configure_axis(labelFontSize=15, titleFontSize=25) a.save('figures/Feature_Visuals.html')

檢查是否所有的欄位都可以被視覺化

print('Features accounted for:', len(myl), 'out of', len(dataset.T)) ```

參考資料

「其他文章」