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

資料視覺化是資料科學中重要的技能,用圖表幫助我們理解數據,找出模式和趨勢。常見圖型有長條圖、圓餅圖、折線圖等,Python工具如Matplotlib、Seaborn、Plotly、Bokeh可協助製作圖表。以桃園廟宇為例,透過圓餅圖呈現拜神分佈。調整顏色和細節可增加圖表視覺效果。結合AI和Cheatsheet,創造出更有趣的成果!

資料視覺化:讓數據說話的藝術

在資料科學的世界中,資料視覺化扮演著至關重要的角色。它不僅能幫助我們更好地理解複雜的數據集,讓我們迅速發現數據中的模式、趨勢和異常。還能以直觀、吸引人的方式呈現分析結果。

圖型分類

用圖說話,先以一張Kaggle大神的圖概括:

Image

可根據要資料的「分佈」、「趨勢」或「關係」來繪圖:

分佈(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協助畫圖生成時,可以任君挑選。

查看分佈-以桃園的廟為例

先讀取桃園區有登記的廟宇:

1
2
3
4
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()

Image

一樣先檢查有無缺失值:

1
df.info()

Image

使用Unique,找一樣的神明

使用 unique() 函數可以找出一個資料欄中所有不重複的值。以下是使用方法:

1
2
#有哪些神明,跟python中的set相同概念
df['主祀神祇'].unique()

Image

可以發現,三百多筆資料中,桃園所拜的主祀神祇非常廣泛,但還是有重複的廟宇

使用value_counts(),計算次數

如果想要進一步分析,我們可以使用 value_counts() 函數來計算每個神祇出現的次數:

1
2
df_count = df['主祀神祇'].value_counts()
df_count

Image

這會顯示每個神祇出現的次數,並按照次數由高到低排序。這有助於我們了解哪些神祇最常被主祀。

接著,我們就可以用圖來呈現這樣的分佈。

視覺化前的設定

載入模組-matplotlib

1
import matplotlib.pyplot as plt

要能在notebook(colab, jupyter)快速看圖型

1
%matplotlib inline

要能正常顯示中文需要使用plt.rc()這個函式

1
2
3
4
5
6
7
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]
1
2
#全局參數設定 runtime configuration,字體設為可呈現中文的字體
plt.rc('font', family='Taipei Sans TC Beta')

繪製圓餅圖

設定圖框大小與標題

1
2
plt.figure(figsize=(6, 6))
plt.title('桃園市各廟宇主祀神祇比例')

Image

繪製圓餅圖

幾個關鍵參數

x:必填項,要計算的內容

labels:顯示圖表個比例項目的文字

autopct:顯示比例,

autopct='%1.1f%%' 是用來設定圓餅圖中顯示百分比的格式。

  • %: 表示後面的數字是格式說明

  • 1.1f: 表示顯示一個浮點數,總寬度為1,小數點後保留1位

  • %%: 在格式字符串中表示一個百分號符號

因此,'%1.1f%%' 會將數值格式化為如 “12.3%” 的形式。

1
plt.pie(x=df_count, labels=df_count.index, autopct='%1.1f%%')

Image

如果繪的圖比原本更難判讀就失去圖的意義了,我們來調整一下

整理過小比例的資料

將比例較低的主祀神祇算在「其他」,這個圖主要可以凸顯桃園以哪位神明為大宗。

計算每個的佔比,小於n則列在其他

1
df_count.sum()

計算比例

1
2
df_count_ratio = df_count / df_count.sum()
df_count_ratio

Image

將小於0.3%的都算在其他項目,加總起來。這裡因為df_count_ratio是一個Series,可以直接對欄位進行操作

1
2
df_count_ratio['其他'] = df_count_ratio[df_count_ratio < 0.03].sum()
df_count_ratio

Image

篩選比例大於N的神明

1
2
df_count_ratio = df_count_ratio[df_count_ratio >= 0.03]
df_count_ratio

Image

重新繪圖

1
2
3
4
5

plt.title('桃園市各廟宇主祀神祇比例', pad=30)#pad為與下方圖的間距
plt.pie(df_count_ratio,labels = df_count_ratio.index, autopct='%1.1f%%')

plt.axis('equal') # 保持圓形,在Colab固定等比例,其他不一定可能變橢圓

Image

結論

可以用圖表展示,讓人知道,在桃園常被拜的神明有哪些!

Cheat Sheet

以下提供官方的作弊表,總之有很多可以調整的地方,沒有常用是背不起來的:

Image

Image

例如我看了Cheat Sheet後,使用get_map()裡面的顏色

1
plt.get_cmap('twilight')

Image

根據現在df_count_ratio 需要的顏色(9個)來進行挑選

1
2
3
4
5
6
7

# 選擇一個 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

Image

繪圖時加入colors 這個參數,就調整完畢囉

1
plt.pie(df_count_ratio,labels = df_count_ratio.index, autopct='%1.1f%%',colors=colors)

Image

所以除了自己常用的幾個方法,也可以透過AI和參考資料,跳出舒適圈,做出意想不到的效果喔!


資料科學第五週-Colab中圖要怎麼有中文、資料視覺化圓餅圖
https://codinglu.tw/2024/09/colab-matplotlib-chinese-and-pie-chart/
作者
阿盧
發布於
2024年9月26日
許可協議
📌 本文瀏覽量: 0