เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การเขียน iterator เพื่อโหลดข้อมูลเป็นชุด (5)

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

เราจะนิยามฟังก์ชัน plot_pop() ซึ่งรับอาร์กิวเมนต์สองตัว ได้แก่ ชื่อไฟล์ที่ต้องการประมวลผล และรหัสประเทศของแถวที่ต้องการดึงจากชุดข้อมูล

เนื่องจากโค้ดทั้งหมดที่เขียนไว้ในแบบฝึกหัดก่อนหน้าจะถูกรวมอยู่ใน plot_pop() การเรียกใช้ฟังก์ชันนี้จะดำเนินการต่อไปนี้โดยอัตโนมัติ:

  • โหลดไฟล์แบบแบ่งชุก
  • สร้างคอลัมน์ใหม่สำหรับค่าประชากรในเขตเมือง และ
  • พล็อตกราฟข้อมูลประชากรในเขตเมือง

ดูเหมือนจะมีขั้นตอนมาก แต่ฟังก์ชันนี้ช่วยให้ทำซ้ำกระบวนการเดิมกับไฟล์และรหัสประเทศใดก็ได้อย่างสะดวก!

เราจะใช้ข้อมูลจาก 'ind_pop_data.csv' ซึ่งอยู่ในไดเรกทอรีปัจจุบัน โดยมีการนำเข้า pandas และ matplotlib.pyplot ในชื่อ pd และ plt ตามลำดับ

เมื่อทำเสร็จแล้ว ลองดูกราฟที่ได้และทบทวนทักษะใหม่ที่เพิ่งได้เรียนรู้ การเดินทางยังไม่สิ้นสุดเพียงเท่านี้! หากสนใจทำงานกับข้อมูลชุดนี้ต่อ ลองสำรวจเวอร์ชันที่ผ่านการประมวลผลล่วงหน้าแล้วได้จาก Kaggle

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python Toolbox

ดูคอร์ส

คำแนะนำการฝึกหัด

  • นิยามฟังก์ชัน plot_pop() ให้มีอาร์กิวเมนต์สองตัว ได้แก่ filename สำหรับไฟล์ที่ต้องการประมวลผล และ country_code สำหรับประเทศที่ต้องการดึงข้อมูลจากชุดข้อมูล
  • เรียกใช้ plot_pop() เพื่อประมวลผลข้อมูลของรหัสประเทศ 'CEB' จากไฟล์ 'ind_pop_data.csv'.
  • เรียกใช้ plot_pop() เพื่อประมวลผลข้อมูลของรหัสประเทศ 'ARB' จากไฟล์ 'ind_pop_data.csv'.

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Define plot_pop()
def ____(____, ____):

    # Initialize reader object: urb_pop_reader
    urb_pop_reader = pd.read_csv(filename, chunksize=1000)

    # Initialize empty DataFrame: data
    data = pd.DataFrame()
    
    # Iterate over each DataFrame chunk
    for df_urb_pop in urb_pop_reader:
        # Check out specific country: df_pop_ceb
        df_pop_ceb = df_urb_pop[df_urb_pop['CountryCode'] == country_code]

        # Zip DataFrame columns of interest: pops
        pops = zip(df_pop_ceb['Total Population'],
                    df_pop_ceb['Urban population (% of total)'])

        # Turn zip object into list: pops_list
        pops_list = list(pops)

        # Use list comprehension to create new DataFrame column 'Total Urban Population'
        df_pop_ceb['Total Urban Population'] = [int(tup[0] * tup[1] * 0.01) for tup in pops_list]
        
        # Concatenate DataFrame chunk to the end of data: data
        data = pd.concat([data, df_pop_ceb])

    # Plot urban population data
    data.plot(kind='scatter', x='Year', y='Total Urban Population')
    plt.show()

# Set the filename: fn
fn = 'ind_pop_data.csv'

# Call plot_pop for country code 'CEB'


# Call plot_pop for country code 'ARB'
แก้ไขและรันโค้ด