iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
AI & Data

從資料庫到資料分析視覺化系列 第 27

{DAY 27} Matplotlib 繪圖

前言

這篇文章主要是將前幾篇關於matplotlib的概念

實際應用在資料上

畫出各種的圖表

會搭配不同的參數調整表現出來的圖

文章分成4個部分

分別是

  1. 前置
  2. 圓餅圖
  3. 折線圖

前置

這裡延續前面pandas練習過的資料庫

從kaggle上找到的關於學生成績的紀錄

Students Performance in Exams

先引入所有要使用到的套件pandas, numpy,matplotlib

把這筆資料列印部分出來

看看資料的架構長怎樣

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv("StudentsPerformance.csv")
df.head()

先來看看這筆資料的整體資訊

df.info()

可以看到整筆資料的所有欄位、是否有缺失值跟資料的物件型態

資料裡有1000筆紀錄

圓餅圖

現在若是想要知道不同組別佔整體資料的比例

最適用的圖形是使用圓餅圖

先將資料利用分組聚合函數.groupby()分組

並且利用.count()計算各組的數量

group = df.groupby("race/ethnicity").count() r

接下來將想要計算的類別跟數值分別用list裝起來

category = list(group.index) #設置類別的list
amounts = list(group["gender"]) #設置各類別數量的list
print(category, amounts)
# ['group A', 'group B', 'group C', 'group D', 'group E'] [89, 190, 319, 262, 140]

最後繪製圓餅圖,並且利用參數autopct="%0.2f%%"設定出現在圖上的比例數據

也使用.title()設定圖表的標題

plt.pie(amounts, labels=category,autopct="%0.2f%%")
plt.title("portion of groups")


圖表就順利做出來了!

可以清楚地看到各組所佔的比例

使用同樣的方法製作不同性別的佔比圓餅圖

gender = df.groupby("gender").count() # 按照性別分組,並計算各組數量
type_of_gender = list(gender.index) # 將性別的名稱放到list
numbers_of_gender = list(gender["lunch"]) # 將各組的數量放進去list

plt.pie(numbers_of_gender, labels=type_of_gender,autopct="%0.2f%%") #作圖
plt.title("portion of gender") # 設置標題

折線圖、散佈圖跟柱狀圖

在折線圖的應用上

適合用在同類的數據變化

所以這裡我選擇'race/ethnicity'裡面的group b作為比較的依據

首先先將屬於group b類型的資料打包成獨立的dataframe

group_b = df[df['race/ethnicity']=="group B"].dropna()
print(group_b)

可以看到整理過後的資料只剩group B的資料

只剩下190筆數據

但是標籤還是依照原本1000筆的排序

現在想替在group B的人重新標index

先重設index,利用default產生從0-189的標籤

group_b = group_b.reset_index()
group_b

再刪掉右移一欄的index欄位

del group_b["index"]
group_b

可以看到資料重新被整理好

接下來就可以利用group B的學生成績分布製作折線圖

先看數學成績的折線圖

group_b.plot(y=["math score"],figsize=(25,5))

可以看到第1位到第190位學生的數學成績分布

現在可以在同一張圖上疊加reading的成績分布

group_b.plot(y=["math score","reading score"],figsize=(25,5))

小結

這幾篇文章大致上介紹了matplotlib這個套件的操作

加上實際資料的操作

已經對將資料利用圖表視覺化有了一定程度的了解

明天會進行更多的繪圖練習

利用調整參數進行更多元的圖形展現方式


上一篇
{DAY 26} Matplotlib 基礎操作
下一篇
{DAY 28} Matplotlib 繪圖2
系列文
從資料庫到資料分析視覺化30

尚未有邦友留言

立即登入留言