บทความนี้ใช้ IPython Notebook ในการเขียนโปรแกรม
ข้อมูลที่ผมจะนำมาใช้ในบทความนี้
สรุปข้อมูลด้านเศรษฐกิจ (โหลดข้อมูลได้จาก http://data.go.th/DatasetDetail.aspx?id=c14f05d7-bb79-4bf0-95cb-35483b6421ac)
เป็นข้อมูลในการประเมินความพร้อมในการให้ความช่วยแหลือด้านการเงิน การสถานประกอบการโรงฆ่าสัตว์ รวมไปถึงการควบคุมสุขอนามัยในโรงฆ่าสัตว์
ผมต้องการกราฟรูปแท่งเพื่อแสดงข้อมูลจำนวนโรงฆ่าสัตว์ของเอกชน (แห่ง) โดยแยกตามจังหวัด
ทำโหลดไฟล์ "สรุปข้อมูลด้านเศรษฐกิจCSV" ได้ไฟล์ชื่อ 02.csv (โหลดข้อมูลได้จาก http://data.go.th/DatasetDetail.aspx?id=c14f05d7-bb79-4bf0-95cb-35483b6421ac)
บทความนี้ใช้ความรู้จากบทความ
- แนะนำการใช้งานไลบรารี CSV ใน Python
- สร้างกราฟแสดงข้อมูลด้วย python-nvd3
- ติดตั้งเครื่องมือทางวิทยาศาสตร์และคณิตศาสตร์ในภาษาไพทอน
ผมทำการสร้าง Notebook สำหรับใช้ประมวลผลข้อมูลขึ้นมาใน IPython Notebook แล้วมาลงมือเขียนโค้ดกันเลยครับ
อย่างแรก ทำการ import โมดูลที่จำเป็นเข้ามา
[python]import csv
from IPython.core.display import HTML
from nvd3 import multiBarChart[/python]
ต่อมากำหนดข้อมูลการตั้งค่ากราฟแท่งของโมดูล nvd3
[python]chart = multiBarChart(width=1024, height=600, x_axis_format=None) # กว่าง * ยาว = 1024 พิกเซล * 600 พิกเซล[/python]
เสร็จ ผมต้องดึงไฟล์ 02.csv เข้ามา แล้วดึงข้อมูลเข้ามาเก็บไว้ในตัวแปร data
[python]data = [] # กำหนดให้เก็บข้อมูลเป็นข้อมูลชนิด List
with open('02.csv', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
data.append(row) # เพิ่มข้อมูลเข้าไปยัง data
[/python]
หากผู้อ่านได้เปิดไฟล์ 02.csv ดูจะพบกว่า จะมีข้อมูลอธิบายส่วนหัว
และข้อมูลสรุปรวมที่ส่วนล่างของไฟล์ 02.csv
ต้องลบข้อมูลทั้งสองนี้ก่อนนำไปใช้งาน ผมจึงทำการลบข้อมูลส่วนนี้ออก
[python]
del data[0] # ลบส่วนหัวออก
del data[76] # ลบส่วนล่างออก[/python]
สร้างตัวแปรไว้เก็บข้อมูล
- ชื่อจังหวัด เป็นแถวยาว อยู่แกน x เป็นตัวแปรชื่อ xdata
- ข้อมูลจำนวนโรงฆ่าสัตว์ของเอกชน (แห่ง) อยู่แกน y เป็นตัวแปรชื่อ ydata
[python]
xdata = []
ydata = []
[/python]
สร้างตัวแปรเก็บค่าจำนวนครั้งการลูป และทำการลูปดึงข้อมูลเพื่อเพิ่มข้อมูลที่กำหนดออกมาจากตัวแปร data
[python]
i = 0
while i < len(data):
xdata.append(data[i][0]) # ชื่อจังหวัด
ydata.append(int(data[i][5])) # ข้อมูลจำนวนโรงฆ่าสัตว์ของเอกชน (แห่ง)
i+=1 # เพื่อค่าอีก 1
[/python]
รู้หรือไม่ ?
การลูปด้วย for ในภาษาไพทอนมีประสิทธิภาพดีกว่าการลูปแบบอื่น ๆ
# แก้ไขครั้งที่ 1 วันที่ 5/10/2015 แก้จาก while เป็น for ขอขอบคุณคุณ why มา ณ ที่นี้ครับ
ที่มา https://stackoverflow.com/questions/1377429/what-is-faster-in-python-while-or-for-xrange
เสร็จ จากนั้นนำข้อมูลมาแสดงผลใน IPython Notebook
[python]
chart.add_serie(name="จำนวนโรงฆ่าสัตว์ของเอกชน(แห่ง)", y=ydata, x=xdata)
chart.buildhtml()
HTML(chart.htmlcontent) # แสดงผลข้อมูล[/python]
ผลลัพธ์
โค้ดฉบับเต็ม
โหลดไฟล์ IPython Notebook ได้ที่ http://1drv.ms/1M625PT
ลองนำความรู้ที่ได้ไปประยุกต์ใช้งานกันดูครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)