Nếu bạn đang sử dụng Python và muốn phân tích dữ liệu, có thể bạn sẽ sử dụng thư viện Pandas. Và vì lý do chính đáng, vì Pandas là một công cụ nhanh chóng và linh hoạt để thao tác và phân tích dữ liệu. Tuy nhiên, đối với một người mới sử dụng Python, tôi thấy rằng có thể hữu ích khi quay lại các khối xây dựng cơ bản của python để phân tích dữ liệu, giúp tôi học Python tốt hơn để sắp xếp dữ liệu cơ bản. Vì vậy, với tư cách là một bài tập Python, tôi sẽ thực hiện phân tích dữ liệu bằng Python mà không cần sử dụng thư viện Pandas. Chúng tôi sẽ phân tích sự gia tăng dân số trong tương lai dựa trên dữ liệu do Liên Hợp Quốc cung cấp
Chúng tôi sẽ phân tích dữ liệu dạng bảng có nghĩa là chúng tôi sẽ làm việc trên dữ liệu được lưu trữ trong danh sách hai chiều. Để thao tác với danh sách 2D, chúng tôi sẽ sử dụng nhiều các vòng lặp for đơn giản và lồng nhau, lập chỉ mục và các hàm python tích hợp như min[], max[], sort[] và append[]. Các công cụ mà bạn sẽ sử dụng trong quy trình sử dụng Pandas hoặc các thư viện khác
Dữ liệu* được tải xuống từ Gapminder. Bộ dữ liệu đầy đủ chứa các dự báo hàng năm cho 197 quốc gia từ năm 1800 đến năm 2100. Tôi đã sử dụng một tập hợp con có dữ liệu cho tất cả 197 quốc gia từ năm 2020 đến năm 2100 với khoảng thời gian 5 năm
Tập dữ liệu và mã có thể được tìm thấy trong repo Github này
Nhập dữ liệu
Như bạn có thể thấy bên dưới kết quả, dữ liệu được lưu trữ trong danh sách hai chiều, trong đó mỗi hàng là một phần tử trong danh sách. Bảng có định dạng rộng trong đó mỗi 'hàng' là một quốc gia và mỗi năm là một 'cột'. Điều đó có nghĩa là mỗi danh sách trong danh sách chứa tất cả thông tin dân số của mỗi quốc gia
Tạo bảng tóm tắt
Chúng ta sẽ bắt đầu phân tích tập dữ liệu dân số bằng cách tạo một bảng tóm tắt chứa thông tin về dân số dự kiến cao nhất và thấp nhất cho mỗi quốc gia, cũng như sự thay đổi tương đối về dân số từ hôm nay đến năm 2100. Chúng tôi sẽ tạo một bảng có tên là pop_exp_dev
sẽ chứa các cột sau
- Quốc gia
- Dân số dự kiến thấp nhất
- Năm dân số dự báo thấp nhất
- Dân số dự kiến cao nhất
- Năm có dân số dự báo cao nhất
- Biến động tương đối của dân số từ năm 2020 đến năm 2100
Chúng tôi tạo bảng này trong một vài bước
- Đầu tiên, chúng ta cần chuyển đổi dữ liệu dân số thành giá trị số nguyên. Chúng tôi làm điều này bằng cách sử dụng vòng lặp for lồng nhau. Vòng lặp bên ngoài lặp qua từng hàng và vòng lặp bên trong lặp qua từng mục trong hàng và chuyển đổi từng mục từ chuỗi thành số nguyên. Chúng tôi bắt đầu vòng lặp bên ngoài tại chỉ mục 1 vì chúng tôi không cần chuyển đổi hàng đầu tiên chứa tên cột. Chúng tôi cũng bắt đầu vòng lặp bên trong ở chỉ mục 1 vì giá trị đầu tiên của mỗi hàng chứa tên quốc gia
- Chúng tôi tạo một danh sách trống
pop_exp_dev
trong đó chúng tôi sẽ lưu trữ các giá trị mới - Để tìm các giá trị mới, chúng tôi sử dụng vòng lặp for để lặp qua các hàng để tìm giá trị cao nhất và thấp nhất rồi nối chúng vào bảng mới của chúng tôi. Chúng tôi cũng tìm các giá trị chỉ mục của chúng để chúng tôi có thể xác định và nối thêm năm của các giá trị đó
- Cuối cùng, chúng tôi muốn tìm sự thay đổi dự kiến về dân số được biểu thị bằng phần trăm trong giai đoạn 2020–2100. Chúng tôi tính toán điều này với công thức pop_2100 - pop_2020 / pop_2020 *100
Bây giờ chúng tôi có một bảng với một số tóm tắt về dữ liệu dân số. Xem dữ liệu trong danh sách 2D không vừa mắt lắm, vì vậy để minh họa, tôi cho thấy bảng mà chúng tôi đã tạo trông như thế nào nếu bạn xem nó ở dạng bảng
Hình ảnh của tác giả
Danh sách tập hợp con để trực quan hóa
Từ bảng này, chúng ta có thể vẽ một số biểu đồ để hình dung dân số dự kiến. Vẽ tất cả 197 quốc gia trong một cốt truyện nhanh chóng khiến cốt truyện quá dài và khó đọc. Thay vào đó, chúng ta có thể tập hợp các phần của bảng và tạo các ô nhỏ hơn. Ở đây, chúng tôi sẽ tập hợp các quốc gia có mức tăng dân số lớn nhất và mức giảm dân số lớn nhất cho một ô và chúng tôi sẽ tập hợp tất cả các quốc gia châu Âu cho một ô khác
Tập con tăng dân số lớn nhất và giảm dân số lớn nhất
Đối với biểu đồ đầu tiên, chúng tôi chỉ cần sắp xếp danh sách 2D theo giá trị của thay đổi tương đối, được lưu trữ trong cột 6 [chỉ mục 5]. Chúng tôi sử dụng sorted[] để thực hiện việc này và chuyển hàm lambda cho đối số chính
Hình ảnh của tác giảBiểu đồ cho thấy rằng chúng ta có thể mong đợi thấy sự gia tăng dân số lớn nhất ở các nước châu Phi và sự suy giảm dân số lớn nhất ở các nước châu Âu, ngoại trừ Jamaica sẽ có mức giảm lớn nhất trong tất cả các quốc gia
Hình ảnh của tác giả
Các quốc gia tập hợp con ở Châu Âu
Để tạo một tập hợp con gồm các quốc gia Châu Âu, chúng tôi tạo thủ công một danh sách có tất cả các quốc gia ở Châu Âu và lặp qua danh sách pop_exp_dev
để tìm bất kỳ phần tử nào khớp với các quốc gia trong danh sách Châu Âu
Tạo một biểu đồ thanh ngang, chúng ta có thể thấy rằng phần lớn các quốc gia ở Châu Âu dự đoán dân số sẽ giảm vào năm 2100
Hình ảnh của tác giả
Chuẩn hóa bảng so sánh sự phát triển dân số giữa các nước
Vì một số quốc gia có dân số đông và một số quốc gia có dân số nhỏ nên khó so sánh sự phát triển dân số của họ. Chúng ta có thể giải quyết vấn đề này bằng cách bình thường hóa các giá trị dân số. Chúng tôi sẽ thực hiện việc này bằng cách đặt năm 2020 làm năm chỉ số và tất cả các năm khác sẽ được trình bày liên quan đến năm chỉ số này. Dân số của mỗi năm được chia cho dân số của năm chỉ số và nhân với 100
Hình ảnh của tác giảNhư bạn có thể thấy trong kết quả, năm 2020 được đặt làm năm chỉ số và có giá trị 100. Dân số của các năm khác được trình bày dưới dạng phần trăm thay đổi so với dân số vào năm 2020
Sau khi dữ liệu dân số được chuẩn hóa, chúng tôi có thể chọn các quốc gia để vẽ biểu đồ bằng cách đặt lại danh sách như được hiển thị trước đây. Ở đây, chúng tôi vẽ sơ đồ phát triển dân số của Úc, Nhật Bản, Moldova, Thụy Điển, Vương quốc Anh và Hoa Kỳ. Trong số các quốc gia này, Úc dự kiến sẽ có mức tăng dân số lớn nhất, tiếp theo là Hoa Kỳ, Thụy Điển và Vương quốc Anh. Cả Nhật Bản và Moldova dự kiến sẽ chứng kiến sự suy giảm dân số của họ
Hình ảnh của tác giả
Sự kết luận
Để làm việc với dữ liệu lộn xộn hoặc thực hiện các phân tích nâng cao hơn, chắc chắn tôi sẽ sử dụng Pandas. Trên thực tế, tôi không khuyến nghị bất kỳ ai kết hợp cách giải quyết này vào quy trình làm việc thực tế của họ vì nó không phải là cách tối ưu để phân tích dữ liệu. Ví dụ: để viết mã hiệu quả, tốt nhất là tránh các vòng lặp for và vector hóa các thao tác của bạn. Tuy nhiên, tôi nhận thấy rằng việc thực hiện phân tích sơ bộ về dữ liệu dân số này đã giúp tôi nắm bắt tốt hơn các chức năng cơ bản của python, chẳng hạn như cách truy cập các mục và phần tử nhất định trong danh sách hai chiều bằng cách sử dụng các vòng lặp for đơn giản hoặc lồng nhau. Và cách tạo và nối các mục vào danh sách hai chiều mới bằng vòng lặp for. Tôi hy vọng bạn thấy những ví dụ này hữu ích
*Dữ liệu được sử dụng trong bài viết này dựa trên tài liệu miễn phí từ Liên Hợp Quốc thông qua GAPMINDER. ORG, CC-BẰNG GIẤY PHÉP
Tại sao bạn nên vector hóa mã của mình trong R
Sử dụng gói microbenchmark trong R để so sánh hiệu quả giữa các hoạt động được vector hóa và các vòng lặp for
hướng tới khoa học dữ liệu. com
Cách dễ dàng truy cập và tải xuống dữ liệu công khai từ các tổ chức thống kê quốc gia
Hướng dẫn về giao diện API PxWeb trong R, sử dụng gói pxweb
hướng tới khoa học dữ liệu. com
5 cách hiểu sai phổ biến về giá trị P
Tránh những điều này khi giải thích và báo cáo kết quả của bạn
hướng tới khoa học dữ liệu. com
Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào các câu chuyện trên Phương tiện. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ