สร้างกราฟชีวิตคน USA แบบ Interactive ใน 2 บรรทัด ด้วย Python
- Ultimate Python

- Nov 21, 2022
- 2 min read
ในช่วงกลางเดือนที่ผ่านมาหลายคนน่าจะได้เห็นกราฟแสดงเวลาการใช้ชีวิตของคนอเมริกัน ที่มีแนวโน้มใช้ชีวิต "คนเดียว" มากขึ้นเมื่อมีอายุมากขึ้นสวนทางกับเวลาที่ใช้อยู่กับเพื่อน, ครอบครัว และคนรัก ซึ่งอ้างอิงจากบทความที่มา การอยู่คนเดียวอาจไม่ได้แปลว่าเดียวดายเสมอไป แต่กลับเป็นความจริงที่สะท้อนออกมาให้เห็นโครงสร้างความสัมพันธ์ และสังคมที่ละเอียดอ่อน
แต่ผมมองเห็นกราฟนี้แล้วคิดในใจเบาๆ ว่า กราฟแบบนี้ใช้ Python ทำยังไง ให้ง่ายที่สุด และผมได้สรุปมาเป็นขั้นตอนที่ทำตามเพื่อสร้างกราฟใดๆ ได้ตามที่ต้องการ

ขั้นตอนการสร้างกราฟง่ายๆ ด้วย Python
วันนี้ Ultimate Python ได้เรียบเรียงขั้นตอนการสร้างกราฟแบบง่ายๆ มาไว้ในบทความนี้ พร้อมตัวอย่างการสร้างจากจากการใช้เครื่องมือ 3 ตัว ให้เป็นทางเลือกสำหรับการใช้งาน
เริ่มต้นที่ข้อมูลในรูปแบบตาราง
การสร้างกราฟเริ่มต้นจากข้อมูลที่ถูกเตรียมพร้อมสำหรับการนำมาใช้งาน ซึ่งส่วนใหญ่ก็จะเป็นข้อมูลที่อยู่ในรูปแบบของตารางซึ่งเราจะใช้ Pandas Library ชุดคำสั่งสำคัญสำหรับการนำข้อมูลในรูปแบบตารางมาใช้งาน
โดยวันนี้เราจะนำตัวอย่างข้อมูลจริงที่ประกอบบทความมาใช้เป็นตัวอย่างเพื่อสร้างกราฟง่ายๆ เลียนแบบกราฟที่แสดงอยู่บนหน้าเวปไซต์ผ่านข้อมูลตัวอย่างด้านล่าง

ดาวน์โหลดไฟล์ข้อมูลตัวอย่างด้านล่างนี้
การติดตั้ง Pandas Library
Pandas อ่านว่า แพนดาส / แพนด้า เป็นชุดคำสั่งสำเร็จรูปสำหรับการจัดการข้อมูลตารางอันดับ 1 ของ Python ที่ช่วยให้การทำงานกับข้อมูลง่ายสุดๆ ซึ่งสามารถติดตั้งได้ผ่านคำสั่ง pip ที่จะช่วยติดตั้งคำสั่งให้เรา ซึ่งหากมีคำสั่งเคยติดตั้งไว้แล้วจะมีข้อความประมาณ Requirement already satisfied: ขึ้นมา ซึ่งอาจมีความแตกต่างกันบ้างในแต่ละเครื่อง สำหรับเครื่องที่ยังไม่เคยติดตั้ง Pandas จะปรากฎเป็นแถบดาวน์โหลดข้อมูล
!pip install pandasRequirement already satisfied: pandas ...นำ Pandas มาใช้
สำหรับคำสั่ง pandas เมื่อติดตั้งไว้แล้ว สามารถนำมาใช้ผ่านคำสั่ง import ซึ่ง pandas มักมีการตั้งชื่อผ่าน as ให้สามารถเรียกใช้ในชื่อ pd ตามคำสั่งด้านล่าง
import pandas as pdดึงข้อมูลจากไฟล์ csv
สำหรับข้อมูลในรูปแบบไฟล์ csv เราสามารถคัดลอกข้อมูลมาใช้งานบน Python ได้ผ่านคำสั่ง pd.read_csv() โดยกำหนดที่อยู่ไฟล์ลงไปเป็น argument เพื่อระบุไฟล์ที่ต้องการทำงานด้วย
data_df = pd.read_csv('time-spent-with-relationships-by-age-us.csv')
เตรียมข้อมูลให้เหมาะกับการสร้างกราฟ
การสร้างกราฟต้องเริ่มจากการเตรียมข้อมูลให้พร้อมใช้ ซึ่งหลังจากการทำความสะอาดข้อมูลในตารางเตรียมให้อยู่ในรูปแบบที่เหมาะสมแล้ว เราจะทำการตั้ง column, row ให้เหมาะสม และทำการเลือกข้อมูลเฉพาะส่วนที่ต้องการนำมาแสดงผลเป็นกราฟ
ตั้ง index
สำหรับการนำข้อมูลมาแสดงผลในกราฟ จะต้องมีการตั้ง index หรือ column และ row ให้เหมาะสมสำหรับการแสดงผล โดยข้อมูลแต่ละ series หรือแต่ละเส้นกราฟจะนำมาจากข้อมูลแต่ละ column, ข้อมูลที่นำมาตั้งเป็นแกน x จะเป็นค่าที่ตั้งไว้เป็น row, และค่า y ของกราฟจะนำมาจากข้อมูลในตาราง ข้อมูลตัวอย่างได้ตั้ง column ไว้อย่างเหมาะสมสำหรับการแบ่งข้อมูลออกเป็นเส้นกราฟ หรือ series แต่จะต้องมีการตั้ง row เพื่อให้มีการนำข้อมูล Year ไปตั้งเป็นแกน x ด้วยคำสั่ง .set_index() ซึ่งจะระบุ columm Year นำไปตั้งเป็น row
data_by_year_df = data_df.set_index('Year')
data_by_year_df
เลือกข้อมูลสำหรับการสร้างกราฟ
สำหรับการสร้างกราฟจากข้อมูลตาราง ใช้งานภายใต้หลักการเดียวกันกับการทำงานกับข้อมูลโดยทั่วไปนั่นคือ "แยก-ทำ-รวม" หรือ split-apply-combine paradigm กล่าวคือ หากต้องการนำข้อมูลใดมาสร้างกราฟ จะต้องเลือกมาเฉพาะข้อมูลส่วนนั่นก่อน เพราะข้อมูลแต่ละส่วน จะมีการทำงานด้วยไม่เหมือนกัน เราจะทำการเลือกเฉพาะข้อมูลที่ต้องการนำมาสร้างกราฟ ผ่านการเลือก column ที่ต้องการด้วยคำสั่ง .iloc[]
finished_df = data_by_year_df.iloc[:,2:]
finished_df
ปรับ Column
สำหรับการแสดงผลในกราฟ จะมีการนำข้อมูล row, column ไปเป็นส่วนหนึ่งของการแสดงผล เพื่อให้มีการแสดงผลที่กระชับ เราจะทำการเปลี่ยน column ให้กลายเป็นข้อความที่กระชับมากขึ้น
finished_df.columns = ['Alone','With friends','With children','With family','With partner','With coworkers']
finished_df
สร้างกราฟด้วย Matplotlib
สำหรับการสร้างกราฟจากข้อมูลตารางในรูปแบบ DataFrame สามารถใช้คำสั่งสำเร็จรูปที่มีพื้นฐานจาก Matplotlib Library ง่ายๆ ด้วยการนำข้อมูลที่พร้อมใช้แสดงผลมาแสดงเป็นกราฟผ่านคำสั่ง .plot() โดย .plot() สามารถกำหนด parameter ต่างๆ ให้มีการปรับปรุงการแสดงผลของกราฟได้ เช่น title= ที่ใช้กำหนดหัวข้อของกราฟผ่านการใส่ argument เป็น String Object เข้าไป
ติดตั้ง Matplotlib
สำหรับ Matplotlib จะเป็น Library พื้นฐานที่ใช้สำหรับการสร้างกราฟต่างๆ ซึ่งภายหลังมี Library อื่นๆ เข้ามาเป็นตัวเลือก แต่ Matplotlib เป็นเหมือนคำสั่งรุ่นแรกๆ ที่ได้รับความนิยมเพื่อใช้สร้างกราฟ และสามรถติดตั้งผ่าน pip install ได้ดังนี้
!pip install matplotlibRequirement already satisfied: matplotlib ...สำหรับ Pandas จะมีคำสั่งสำเร็จรูปที่ใช้ในการสร้างกราฟจากข้อมูล โดยสามารถใช้ .plot() ตามหลัง DataFrame เพื่อใช้คำสั่งสร้างกราฟที่มีพื้นฐานมาจาก Matplotlib Library ได้ทันที
finished_df.plot(title='Who Americans spend their time with, by age')
สร้างกราฟด้วย Plotly
ในการสร้างกราฟจากตารางมีหลายคำสั่งให้เลือกใช้ แต่วันนี้เราจะขอนำเสนอคำสั่งจาก plotly ที่เป็นหนึ่งในชุดคำสั่งที่น่าสนใจสำหรับการสร้างกราฟ เพราะนอกจากใช้ง่ายแล้ว ยังอัดแน่นคำสั่งในการทำกราฟให้สวยงาม ทำกราฟ 3D ทำกราฟ Interactive ได้ง่ายๆ อีกด้วย
ติดตั้งคำสั่ง plotly
สำหรับการติดตั้งใช้ pip ในการติดตั้งเช่นเดียวกับ Library อื่นๆ
!pip install plotlyRequirement already satisfied: plotly ...นำคำสั่ง plotly.express มาใช้
สำหรับคำสั่งที่นำมาใช้ เราจะนำคำสั่ง .express ของ plotly มาใช้ เพื่อสร้างกราฟ Interactive ที่นอกจากจะได้เป็นกราฟแล้ว ยังสามารถวางเมาส์ในจุดข้อมูลต่างๆ เพื่อแสดงข้อมูลเบื้องต้นได้เพิ่มเติมอีกด้วย
import plotly.express as pxสร้างกราฟด้วย .express
สำหรับการสร้างกราฟเส้นจะใช้คำสั่ง .line() ที่จะรับข้อมูลตารางที่ต้องการใช้แสดงผลข้อมูล โดย row จะถูกนำไปแสดงที่แกน x, แกน y จะนำข้อมูลในตารางมาแสดง, และข้อมูลแต่ละ column จะถูกนำมาแสดงเป็นข้อมูล แต่ละ series ซึ่ง สามารถใช้เมาส์วางไว้บนตำแหน่งข้อมูลต่างๆ เพื่อแสดงข้อมูลเบื้องต้นได้
fig = px.line(finished_df, title='Who Americans spend their time with, by age',markers=True,width=700,height=500)
fig.show()
สร้างกราฟด้วย bokeh
bokeh เป็นอีกทางเลือกสำหรับการสร้าง interactive chart แบบง่ายๆ โดย bokeh เน้นขายตัวเองที่สามารถนำกราฟของตัวเองไปวางไว้บนเวปไซต์ได้ง่าย ซึ่งมาดูการสร้างกราฟโดยใช้คำสั่งให้น้อยที่สุดผ่าน bokeh กัน
ติดตั้งคำสั่งทีต้องใช้ bokeh, pandas_bokeh
เราจะใช้คำสั่ง bokeh เพื่อทำการ setup และปรับแต่งกราฟ และ pandas_bokeh เพื่อสร้างให้กราฟจาก DataFrame ของ Pandas ได้ง่าย
ติดตั้ง bokeh
!pip install bokehRequirement already satisfied: bokeh ...ติดตั้ง pandas_bokeh
!pip install pandas_bokehRequirement already satisfied: pandas_bokeh ...นำคำสั่งที่ต้องใช้มาใช้บน Python
ในการใช้งาน bokeh เพื่อให้มีการแสดงผลบน Jupyter Notebook ที่เดียว ต้องมีการเรียกใช้คำสั่ง output_notebook() จาก bokeh.io และ pandas_bokeh เพื่อให้สามารถเรียกคำสั่ง .plot_bokeh() เพื่อทำงานกับ DataFrame ใช้เพื่อสร้างกราฟด้วย bokeh ได้
from bokeh.io import output_notebook
import pandas_bokehสร้างกราฟด้วย bokeh
เราจะปรับการแสดงผลของกราฟให้แสดงผ่าน notebook ด้วย output_notebook() และสร้างกราฟด้วยคำสั่ง .plot_bokeh()
output_notebook()
finished_df.plot_bokeh(title='Who Americans spend their time with, by age')
เรียนพื้นฐานการจัดการข้อมูลตาราง จนถึงการสร้างกราฟ
แอดซิปป้าขอฝากคอร์ส Excel Automation with Python ที่จะรวบรวมคำสั่งสำคัญของ Pandas ที่ใช้เพื่อจัดการข้อมูลตั้งแต่เปิดไฟล์ จัดการ วิเคราะห์ จนถึงนำมาใช้สร้างกราฟ เพื่อให้การทำงานกับข้อมูลเป็นอัตโนมัติมากขึ้น

.png)




Comments