資料科學第五週-Colab中圖要怎麼有中文、資料視覺化圓餅圖

資料視覺化:讓數據說話的藝術
在資料科學的世界中,資料視覺化扮演著至關重要的角色。它不僅能幫助我們更好地理解複雜的數據集,讓我們迅速發現數據中的模式、趨勢和異常。還能以直觀、吸引人的方式呈現分析結果。
圖型分類
用圖說話,先以一張Kaggle大神的圖概括:

可根據要資料的「分佈」、「趨勢」或「關係」來繪圖:
分佈(Distribution):圓餅圖、長條圖、核密圖(KDE)
趨勢(Trend):折線圖、直方圖
關係(Relationship):散佈圖、熱圖、回歸圖
各個圖的簡單解釋:
• 條形圖(Bar Chart):用於比較不同組別之間的數量。
• 直方圖(Histogram):用於顯示數據的分佈。
• 圓餅圖(Pie Chart):用於顯示各部分佔總數的比例。
• 折線圖(Line Chart):用於顯示數據隨時間變化的趨勢。
• 散佈圖(Scatter Plot):用於顯示兩個變量之間的關係。
• 箱形圖(Box Plot):用於顯示數據的分佈特徵,如中位數、四分位數和異常值。
長條圖(Bar Chart)和直方圖(Histogram)
就比較常搞混的長條圖和直方圖做一下解釋:
長條圖用於比較不同類別,直方圖用於展示連續數據的分佈。
舉例:長條圖適合顯示不同品牌的銷售量,直方圖則適合展示學生成績的分佈。
Python中的資料視覺化工具
Python提供了多種強大的視覺化庫,其中最常用的包括:
- Matplotlib:基礎繪圖庫,適合創建靜態、動畫和互動式圖表。
- Seaborn:基於Matplotlib的統計繪圖庫,提供更美觀的默認樣式。
- Plotly:用於創建互動式和可發布的圖表。
- Bokeh:專注於創建交互式視覺化,特別適合網頁應用。
先知道有哪些工具,在使用AI協助畫圖生成時,可以任君挑選。
查看分佈-以桃園的廟為例
先讀取桃園區有登記的廟宇:
import pandas as pd
data = pd.read_json('http://data.tycg.gov.tw/api/v1/rest/datastore/b2247404-3d92-4829-9855-0cd5e71b92b3?format=json&limit=500')
df = pd.DataFrame(data['result']['records'])
df.head()
一樣先檢查有無缺失值:
df.info()
使用Unique,找一樣的神明
使用 unique() 函數可以找出一個資料欄中所有不重複的值。以下是使用方法:
#有哪些神明,跟python中的set相同概念
df['主祀神祇'].unique()
可以發現,三百多筆資料中,桃園所拜的主祀神祇非常廣泛,但還是有重複的廟宇
使用value_counts(),計算次數
如果想要進一步分析,我們可以使用 value_counts() 函數來計算每個神祇出現的次數:
df_count = df['主祀神祇'].value_counts()
df_count
這會顯示每個神祇出現的次數,並按照次數由高到低排序。這有助於我們了解哪些神祇最常被主祀。
接著,我們就可以用圖來呈現這樣的分佈。
視覺化前的設定
載入模組-matplotlib
import matplotlib.pyplot as plt要能在notebook(colab, jupyter)快速看圖型
%matplotlib inline要能正常顯示中文需要使用plt.rc()這個函式
import matplotlib.font_manager as fm
# 如果是COLAB要先下載繁體中文字型
!wget -O TaipeiSansTCBeta-Regular.ttf https://drive.google.com/uc?id=1eGAsTN1HBpJAkeVM57_C7ccp7hbgSz3_&export=download
#將字型加入,確認系統字型
fm.fontManager.addfont('TaipeiSansTCBeta-Regular.ttf')
#列出所有字體
[f.name for f in fm.fontManager.ttflist]#全局參數設定 runtime configuration,字體設為可呈現中文的字體
plt.rc('font', family='Taipei Sans TC Beta')繪製圓餅圖
設定圖框大小與標題
plt.figure(figsize=(6, 6))
plt.title('桃園市各廟宇主祀神祇比例')
繪製圓餅圖
幾個關鍵參數
x:必填項,要計算的內容
labels:顯示圖表個比例項目的文字
autopct:顯示比例,
autopct='%1.1f%%' 是用來設定圓餅圖中顯示百分比的格式。
%: 表示後面的數字是格式說明
1.1f: 表示顯示一個浮點數,總寬度為1,小數點後保留1位
%%: 在格式字符串中表示一個百分號符號
因此,'%1.1f%%' 會將數值格式化為如 "12.3%" 的形式。
plt.pie(x=df_count, labels=df_count.index, autopct='%1.1f%%')
如果繪的圖比原本更難判讀就失去圖的意義了,我們來調整一下
整理過小比例的資料
將比例較低的主祀神祇算在「其他」,這個圖主要可以凸顯桃園以哪位神明為大宗。
計算每個的佔比,小於n則列在其他
df_count.sum()計算比例
df_count_ratio = df_count / df_count.sum()
df_count_ratio
將小於0.3%的都算在其他項目,加總起來。這裡因為df_count_ratio是一個Series,可以直接對欄位進行操作
df_count_ratio['其他'] = df_count_ratio[df_count_ratio < 0.03].sum()
df_count_ratio
篩選比例大於N的神明
df_count_ratio = df_count_ratio[df_count_ratio >= 0.03]
df_count_ratio
重新繪圖
plt.title('桃園市各廟宇主祀神祇比例', pad=30)#pad為與下方圖的間距
plt.pie(df_count_ratio,labels = df_count_ratio.index, autopct='%1.1f%%')
plt.axis('equal') # 保持圓形,在Colab固定等比例,其他不一定可能變橢圓
結論
可以用圖表展示,讓人知道,在桃園常被拜的神明有哪些!
Cheat Sheet
以下提供官方的作弊表,總之有很多可以調整的地方,沒有常用是背不起來的:


例如我看了Cheat Sheet後,使用get_map()裡面的顏色
plt.get_cmap('twilight')
根據現在df_count_ratio 需要的顏色(9個)來進行挑選
# 選擇一個 colormap
colormap = plt.get_cmap('twilight')
# 根據 df_count_ratio 的長度來生成對應顏色,共把顏色分成9份
colors = [colormap(i / len(df_count_ratio)) for i in range(len(df_count_ratio))]
colors
繪圖時加入colors 這個參數,就調整完畢囉
plt.pie(df_count_ratio,labels = df_count_ratio.index, autopct='%1.1f%%',colors=colors)
所以除了自己常用的幾個方法,也可以透過AI和參考資料,跳出舒適圈,做出意想不到的效果喔!
版權聲明
文章標題:資料科學第五週-Colab中圖要怎麼有中文、資料視覺化圓餅圖
文章作者:阿盧老師
文章連結:https://codinglu.tw/blog/colab-matplotlib-chinese-and-pie-chart
授權條款:本文採用 CC BY-NC 4.0 授權。轉載請標明出處。