การเขียน iterator เพื่อโหลดข้อมูลเป็น chunk (3)
ตอนนี้คุ้นเคยกับการอ่านและประมวลผลข้อมูลเป็น chunk แล้ว มาต่อยอดทักษะอีกขั้นด้วยการเพิ่มคอลัมน์ใหม่ลงใน DataFrame
ต่อจากโค้ดในแบบฝึกหัดที่แล้ว จะใช้ list comprehension เพื่อสร้างค่าสำหรับคอลัมน์ใหม่ 'Total Urban Population' จากลิสต์ของ tuple ที่สร้างไว้ก่อนหน้า ทบทวนจากแบบฝึกหัดที่แล้วว่า องค์ประกอบแรกและที่สองของแต่ละ tuple คือค่าจากคอลัมน์ 'Total Population' และ 'Urban population (% of total)' ตามลำดับ ดังนั้นค่าในคอลัมน์ 'Total Urban Population' จึงเป็นผลคูณขององค์ประกอบที่หนึ่งและที่สองในแต่ละ tuple นอกจากนี้ เนื่องจากองค์ประกอบที่ 2 เป็นเปอร์เซ็นต์ จึงต้องหารผลลัพธ์ทั้งหมดด้วย 100 หรือคูณด้วย 0.01
นอกจากนี้ยังจะพล็อตข้อมูลจากคอลัมน์ใหม่นี้เพื่อสร้างการแสดงผลของข้อมูลประชากรในเมือง
ได้นำเข้าแพ็กเกจ pandas และ matplotlib.pyplot ในชื่อ pd และ plt ตามลำดับแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python Toolbox
คำแนะนำการฝึกหัด
- เขียน list comprehension เพื่อสร้างลิสต์ของค่าจาก
pops_listสำหรับคอลัมน์ใหม่'Total Urban Population'โดย output expression ควรเป็นผลคูณขององค์ประกอบที่หนึ่งและที่สองในแต่ละ tuple ในpops_listเนื่องจากองค์ประกอบที่ 2 เป็นเปอร์เซ็นต์ จึงต้องคูณผลลัพธ์ด้วย0.01หรือหารด้วย100ด้วย นอกจากนี้ คอลัมน์'Total Urban Population'ควรรับค่าเป็นจำนวนเต็มเท่านั้น ดังนั้นให้แปลง output expression เป็นจำนวนเต็มด้วยint() - สร้างกราฟ scatter โดยให้แกน x เป็นค่าจากคอลัมน์
'Year'และแกน y เป็นค่าจากคอลัมน์'Total Urban Population'
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Code from previous exercise
urb_pop_reader = pd.read_csv('ind_pop_data.csv', chunksize=1000)
df_urb_pop = next(urb_pop_reader)
df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == 'CEB']
pops = zip(df_pop_ceb['Total Population'],
df_pop_ceb['Urban population (% of total)'])
pops_list = list(pops)
# Use list comprehension to create new DataFrame column 'Total Urban Population'
df_pop_ceb['Total Urban Population'] = [____]
# Plot urban population data
df_pop_ceb.plot(kind=____, x=____, y=____)
plt.show()