เขียน generator เพื่อโหลดข้อมูลเป็นส่วน ๆ (3)
ยอดเยี่ยม! ตอนนี้คุณสร้างฟังก์ชัน generator สำหรับประมวลผลไฟล์ขนาดใหญ่ได้แล้ว
คราวนี้ลองนำฟังก์ชัน generator ที่สร้างไว้มาใช้ประมวลผลชุดข้อมูล World Bank เหมือนที่เคยทำก่อนหน้านี้ โดยจะอ่านไฟล์ทีละบรรทัด แล้วสร้าง dictionary นับจำนวนครั้งที่แต่ละประเทศปรากฏในคอลัมน์ของชุดข้อมูล แต่ครั้งนี้จะไม่ประมวลผลแค่ 1,000 แถว — จะประมวลผลชุดข้อมูลทั้งหมดเลย!
ฟังก์ชัน read_large_file() และไฟล์ CSV 'world_dev_ind.csv' ถูกโหลดไว้ให้พร้อมใช้งานแล้ว ลุยเลย!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python Toolbox
คำแนะนำการฝึกหัด
- กำหนดให้ไฟล์
'world_dev_ind.csv'เป็นfileใน context manager โดยใช้open() - เติม
forloop ให้วนซ้ำผ่าน generator ที่ได้จากการเรียกread_large_file()เพื่อประมวลผลทุกแถวในไฟล์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Initialize an empty dictionary: counts_dict
counts_dict = {}
# Open a connection to the file
with ____ as ____:
# Iterate over the generator from read_large_file()
for line in ____:
row = line.split(',')
first_col = row[0]
if first_col in counts_dict.keys():
counts_dict[first_col] += 1
else:
counts_dict[first_col] = 1
# Print
print(counts_dict)