การเขียน iterator สำหรับโหลดข้อมูลแบบ chunk (2)
ในแบบฝึกหัดที่แล้ว คุณใช้ read_csv() เพื่ออ่าน DataFrame แบบ chunk จากชุดข้อมูลขนาดใหญ่ ในแบบฝึกหัดนี้ จะอ่านไฟล์โดยใช้ขนาด chunk ที่ใหญ่ขึ้น แล้วประมวลผลข้อมูลจาก chunk แรก
ในการประมวลผลข้อมูล คุณจะสร้าง DataFrame ใหม่ที่ประกอบด้วยเฉพาะแถวของประเทศหนึ่งๆ จากนั้นจะ zip สองคอลัมน์จาก DataFrame ใหม่นั้นเข้าด้วยกัน ได้แก่ 'Total Population' และ 'Urban population (% of total)' และสุดท้ายจะสร้างลิสต์ของ tuple จาก zip object โดยแต่ละ tuple ประกอบด้วยค่าจากทั้งสองคอลัมน์ที่กล่าวถึง
จะใช้ข้อมูลจาก 'ind_pop_data.csv' ซึ่งอยู่ใน directory ปัจจุบัน โดย pandas ถูก import ไว้แล้วในชื่อ pd
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python Toolbox
คำแนะนำการฝึกหัด
- ใช้
pd.read_csv()เพื่ออ่านไฟล์'ind_pop_data.csv'แบบ chunk ขนาด1000แล้วกำหนดผลลัพธ์ให้กับตัวแปรurb_pop_reader - ดึง DataFrame chunk แรก จาก iterable
urb_pop_readerแล้วกำหนดให้กับตัวแปรdf_urb_pop - เลือกเฉพาะแถวใน
df_urb_popที่มี'CountryCode'เป็น'CEB'โดยเปรียบเทียบว่าdf_urb_pop['CountryCode']เท่ากับ'CEB'หรือไม่ ภายในวงเล็บก้ามปูdf_urb_pop[____] - ใช้
zip()เพื่อ zip คอลัมน์'Total Population'และ'Urban population (% of total)'ของdf_pop_cebเข้าด้วยกัน แล้วกำหนด zip object ที่ได้ให้กับตัวแปรpops
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Initialize reader object: urb_pop_reader
urb_pop_reader = pd.read_csv(____, ____)
# Get the first DataFrame chunk: df_urb_pop
df_urb_pop = next(____)
# Check out the head of the DataFrame
print(df_urb_pop.head())
# Check out specific country: df_pop_ceb
df_pop_ceb = df_urb_pop[____]
# Zip DataFrame columns of interest: pops
pops = zip(____, ____)
# Turn zip object into list: pops_list
pops_list = list(pops)
# Print pops_list
print(pops_list)