資料科學第五週-Seaborn折線圖的用法

AI助你繪製更漂亮圖表!透過Seaborn,輕鬆呈現資料。從台灣信用卡盜刷數據看金額損失趨勢,用折線圖展示。Seaborn畫圖簡單,還可畫分佈圖、多因子分析圖。想看變量關係就用Seaborn吧!詳細教學可上Kaggle搜尋。

資料視覺化-Seaborn

既然有了AI,更好幫你操作繪圖。建議直接用Seaborn,更漂亮。

載入

除了載入matplotlib.pyplot之外,現在需要載入seaborn,多簡稱為sns

1
import seaborn as sns

台灣信用卡盜刷統計

你知道每年台灣因為信用卡被盜刷,損失的金額嗎?

透過Open Data,可以看出台灣越來越有錢?

1
2
url = 'https://www.nccc.com.tw/dataDownload/09_NCCC_Member_Banks_Card_Issuing_Fraud_Types.csv'

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'''
五、詐欺型態:
(一)遺失卡:卡片遺失而被盜用、
(二)被竊卡:卡片被竊而發生盜用、
(三)未達卡:郵寄新、換卡遭攔截而發生盜用、
(四)冒用申請卡:使用未經本人授權申請之卡片、
(五)偽卡:使用未經發卡機構授權製作之卡片、
(六)MOTO/EC:未經持卡人授權之非面對面交易、
(七)多刷帳單之詐欺:商店利用持卡人卡號等資料偽造交易、
(八)其他:不屬於上述標準詐欺類型者。
'''

import pandas as pd
df = pd.read_csv(url, encoding='big5')
df[df['年度']==2023]

Image

年度從2010~2023的MOTO/EC

1
2
3
4
5
# prompt: 年度從2010~2023的MOTO/EC

moto_ec_df = df[(df['年度'] >= 2010) & (df['年度'] <= 2023) & (df['詐欺型態'] == 'MOTO / EC')]
moto_ec_df

Image

可以看到從4億到2023已經變成32億了!誇張吧!

這種趨勢就適合用折線圖,呈現連續的統計資料

繪製折線圖

事前準備

1
2
3
4
5
6
7
8
9
10
import matplotlib.pyplot as plt
%matplotlib inline
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')
1
import seaborn as sns

Matplotlib繪製

先以Matplotlib繪製,使用plot():

  • x:X 軸的數據,通常是一個序列或數組。

  • y:Y 軸的數據,與 X 軸數據相對應。

1
2
3
4
5
6
7
8
9
10
11
# prompt: moto_ec_df的折線圖

import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(x=moto_ec_df['年度'], y=moto_ec_df['詐欺金額[新台幣]'], marker='o')
plt.title('2010-2023年 MOTO/EC 詐欺金額趨勢')
plt.xlabel('年度')
plt.ylabel('金額')
plt.grid(True)
plt.show()

Image

Seaborn繪製

再使用Seaborn,基本上只是把plot() 改成lineplot() ,圖也是差不多的

1
2
3
4
5
6
7
8
9
10
11
12
13
# prompt: moto_ec_df的折線圖using sns

import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
sns.lineplot(x='年度', y='詐欺金額[新台幣]', data=moto_ec_df, marker='o')
#marker='o'

plt.title('MOTO/EC 詐欺案件數趨勢 (2014-2023)')
plt.xlabel('年度')
plt.ylabel('詐欺金額')
plt.grid(True)
plt.show()

Image

Seaborn可以畫什麼酷圖

以台股2330台積電這兩個月的每日資料來做統計(資料使用findmind先抓下來了)

1
2
df_stock = pd.read_csv('/content/台灣股價資料表.csv')
df_stock.head()

Image

分佈圖

1
2
3
4
5
6
7
8
9
10
# prompt: 畫分佈圖

import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
sns.histplot(df_stock['收盤價'], kde=True)
plt.title('收盤價分佈圖')
plt.xlabel('收盤價')
plt.ylabel('頻率')
plt.show()

Image

多因子分析圖

hue 為圖表依據,這裡以成交量為hue ,可以看個成交量之間的二因子分析

1
sns.pairplot(data=df_stock,hue='成交量')

Image

總結

簡單來說,如果繪製的是簡單圖形,可以使用Matplotlib或Seaborn都可以。如果要查看變量之間的關係,建議使用Seaborn,有更多的圖形工具,來觀察結果。

Seaborn Cheat Sheet

如果要詳細的Seaborn教學,Kaggle上一樣有很多人的用法整理!

https://www.kaggle.com/code/themlphdstudent/cheat-sheet-seaborn-charts


資料科學第五週-Seaborn折線圖的用法
https://codinglu.tw/2024/09/seaborn-and-pairplot-lineplot/
作者
阿盧
發布於
2024年9月26日
許可協議
📌 本文瀏覽量: 0