?? 作者:韓信子@ShowMeAI
?? 資料分析實戰系列:https://www.showmeai.tech/tutorials/40
?? 本文地址:https://www.showmeai.tech/article-detail/320
?? 宣告:著作權所有,轉載請聯系平臺與作者并注明出處
?? 收藏ShowMeAI查看更多精彩內容
大家都看過非常酷的實時資料看板,能用最直觀的方式給到我們業務資料的資訊,如下圖所示,
而在 Python 中,我們也有非常易用的工具,可以產出漂亮的資料分析可視化結果,并支持互動式操作和勾選區域資料深入分析,ShowMeAI在本篇內容中,將給大家講解到 ??Altair 這樣一個功能強大的 Python 互動式資料分析工具,它能產出如下圖所示的互動分析結果:
![]() |
![]() |
![]() |
?? 資料分析實作模板
為了讓大家在自己的資料上體驗 Altair 的分析結果,我們下面撰寫的一個函式模板,用于為資料集中的所有特征生成互動式圖表,
具體一點說,我們希望它為數值型欄位(特征)回傳『直方圖+散點圖』,為類別型特征回傳『柱狀圖+箱線圖』,Altair 回傳的這些圖表結果都是可以互動式操作的,
# 匯入工具庫
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 檔案,大家就可以得到一個可互動的可視化資料分析平臺,
# 把所有的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))
參考資料
- ?? Altair:https://altair-viz.github.io/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/526811.html
標籤:其他
上一篇:Python json模塊



