所有文章

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

3,1788 分鐘閱讀
資料科學python
資料科學第五週-Colab中圖要怎麼有中文、資料視覺化圓餅圖

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

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

圖型分類

用圖說話,先以一張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協助畫圖生成時,可以任君挑選。

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

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

python
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

一樣先檢查有無缺失值:

python
df.info()
Image

使用Unique,找一樣的神明

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

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

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

使用value_counts(),計算次數

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

python
df_count = df['主祀神祇'].value_counts()
df_count
Image

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

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

視覺化前的設定

載入模組-matplotlib

python
import matplotlib.pyplot as plt

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

python
%matplotlib inline

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

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

繪製圓餅圖

設定圖框大小與標題

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

繪製圓餅圖

幾個關鍵參數

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

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

autopct:顯示比例,

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

  • %: 表示後面的數字是格式說明
  • 1.1f: 表示顯示一個浮點數,總寬度為1,小數點後保留1位
  • %%: 在格式字符串中表示一個百分號符號

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

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

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

整理過小比例的資料

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

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

python
df_count.sum()

計算比例

python
df_count_ratio = df_count / df_count.sum()
df_count_ratio
Image

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

python
df_count_ratio['其他'] = df_count_ratio[df_count_ratio < 0.03].sum()
df_count_ratio
Image

篩選比例大於N的神明

python
df_count_ratio = df_count_ratio[df_count_ratio >= 0.03]
df_count_ratio
Image

重新繪圖

python

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()裡面的顏色

python
plt.get_cmap('twilight')
Image

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

python

# 選擇一個 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 這個參數,就調整完畢囉

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

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

版權聲明

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

文章作者:阿盧老師

文章連結:https://codinglu.tw/blog/colab-matplotlib-chinese-and-pie-chart

授權條款:本文採用 CC BY-NC 4.0 授權。轉載請標明出處。