羨慕實時資料看板?來看看Python的互動資料分析視覺化工具! ⛵
highlight: a11y-dark
攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第33天,點選檢視活動詳情
- 💡 作者:韓信子@ShowMeAI
- 📘 資料分析實戰系列:https://www.showmeai.tech/tutorials/40
- 📘 本文地址:https://www.showmeai.tech/article-detail/320
- 📢 宣告:版權所有,轉載請聯絡平臺與作者並註明出處
- 📢 收藏ShowMeAI檢視更多精彩內容
大家都看過非常酷的實時資料看板,能用最直觀的方式給到我們業務資料的資訊,如下圖所示。
而在 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)) ```
參考資料
- 📘 Altair:https://altair-viz.github.io/
- 感謝飛書放過幕布!100個GPT-4實戰案例;GPT-4免費平替Poe;AI繪畫新手指南之SD篇;new Bing靠譜教程 | ShowMeAI日報
- whylogs工具庫的工業實踐!機器學習模型流程與效果監控 ⛵
- 脈脈瘋傳!2023年程式設計師生存指南;多款prompt效率加倍工具;提示工程師最全祕籍;AI裁員正在發生 | ShowMeAI日報
- 中國風?古典系?AI中文繪圖創作嚐鮮!⛵
- Python中內建資料庫!SQLite使用指南!
- Pandas中你一定要掌握的時間序列相關高階功能
- 資料科學家賺多少?資料全分析與視覺化 ⛵
- 互動式儀表板!Python輕鬆完成!⛵
- ChatGPT!我是你的破壁人;比爾·蓋茨不看好Web3與元宇宙;FIFA押中4屆世界盃冠軍;GitHub今日熱榜 | ShowMeAI資訊日報
- ChatGPT要收費了;華爾街大裁員;阿里2023十大科技趨勢;小紅書元宇宙虛擬服飾被吐槽;GitHub今日熱榜 | ShowMeAI資訊日報
- AI創業時代!這9個方向有錢途;AIGC再添霸榜應用Lensa;美團SemEval2022冠軍方法分享;醫學影象處理工具箱… | ShowMeAI資訊日報
- 噓!P站資料分析年報;各省市疫情感染進度條;愛奇藝推出元宇宙App;You推出AI聊天機器人;GitHub今日熱榜 | ShowMeAI資訊日報
- 美國公司裁員潮時間線◉科技寒冬視覺化;3份報告回顧中國開發者2022;自動駕駛下半場,誰會衝出重圍 | ShowMeAI每週通訊 #005-01.07
- 副業月入過萬?資料有話說;掃地機器人發展到哪步了;疫情後要不要重返辦公室;淘寶元宇宙直播間;GitHub今日熱榜 | ShowMeAI資訊日報
- 大戰谷歌!微軟Bing引入ChatGPT;羊了個羊40萬年薪招研發;Debian徹底移除Python2;GitHub今日熱榜 | ShowMeAI資訊日報
- 酸了!樂視工作制改為四天半;高通新年裁員;AI繪畫公司開始倒閉;網易入股張藝謀元宇宙公司;GitHub今日熱榜 | ShowMeAI資訊日報
- 要麼幹要麼滾!推特開始裁員了;深度學習產品應用·隨書程式碼;可分離各種樂器音源的工具包;Transformer教程;前沿論文 | ShowMeAI資訊日報
- 真實世界的人工智慧應用落地——OpenAI篇 ⛵
- 陽過→陽康,資料裡的時代側影;谷歌慌了!看各公司如何應對ChatGPT;兩份優質AI年報;本週技術高光時刻 | ShowMeAI每週通訊 #003-12.24
- 用魔法打敗魔法!這件毛衣讓攝像頭看不到你;兩款酷炫的AI寫作軟體;快如閃電的B站下載工具;基於擴散模型的蛋白質設計 | ShowMeAI資訊日報