Bắt đầu ngayBắt đầu miễn phí

Viết một iterator để tải dữ liệu theo từng khối (5)

Chặng cuối cùng rồi. Bạn đã học được rất nhiều về cách xử lý một bộ dữ liệu lớn theo từng khối. Trong bài tập này, bạn sẽ gom toàn bộ mã xử lý dữ liệu vào một hàm duy nhất để có thể tái sử dụng mà không phải viết lại mọi thứ.

Bạn sẽ định nghĩa hàm plot_pop() với hai đối số: tên tệp cần xử lý và mã quốc gia của các dòng bạn muốn xử lý trong bộ dữ liệu.

Vì toàn bộ mã bạn đã viết ở các bài trước sẽ được đưa vào plot_pop(), nên việc gọi hàm sẽ tự động thực hiện những việc sau:

  • Tải tệp theo từng khối,
  • Tạo cột mới cho giá trị dân số đô thị, và
  • Vẽ biểu đồ dữ liệu dân số đô thị.

Đó là khá nhiều việc, nhưng giờ hàm giúp bạn dễ dàng lặp lại quy trình cho bất kỳ tệp và mã quốc gia nào bạn muốn xử lý và trực quan hóa!

Bạn sẽ dùng dữ liệu từ 'ind_pop_data.csv', có sẵn trong thư mục hiện tại. Các gói pandas và matplotlib.pyplot đã được nhập sẵn lần lượt là pdplt để bạn sử dụng.

Sau khi hoàn thành, hãy dành chút thời gian xem các biểu đồ và nghĩ về những kỹ năng mới bạn đã tích lũy. Hành trình chưa dừng lại ở đây! Nếu bạn thích làm việc với dữ liệu này, bạn có thể tiếp tục khám phá phiên bản đã tiền xử lý có sẵn trên Kaggle.

Bài tập này là một phần của khóa học

Hộp Công Cụ Python

Xem khóa học

Hướng dẫn bài tập

  • Định nghĩa hàm plot_pop() với hai đối số: thứ nhất là filename cho tệp cần xử lý và thứ hai là country_code cho quốc gia cần xử lý trong bộ dữ liệu.
  • Gọi plot_pop() để xử lý dữ liệu cho mã quốc gia 'CEB' trong tệp 'ind_pop_data.csv'.
  • Gọi plot_pop() để xử lý dữ liệu cho mã quốc gia 'ARB' trong tệp 'ind_pop_data.csv'.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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'
Chỉnh sửa và Chạy Mã