Trong khi xử lý dữ liệu, đôi khi bạn có thể bắt gặp một tập dữ liệu thiên vị. Trong thống kê, độ lệch là theo đó giá trị mong đợi của kết quả khác với thông số định lượng cơ bản thực được ước tính. Làm việc với những dữ liệu như vậy có thể nguy hiểm và có thể dẫn bạn đến những kết luận không chính xác. Để tìm hiểu thêm về nhiều khái niệm khác về Python, hãy xem qua Hướng dẫn Python của chúng tôi hoặc đăng ký trong các khóa học Lập trình Python cho người mới bắt đầu của chúng tôi. Ngoài ra, hãy nhấp vào đây để tìm hiểu về hệ thống. đối số dòng lệnh argv
Ngoài ra, hãy đọc về Self in Python tại đây
Có nhiều loại sai lệch như sai lệch lựa chọn, sai lệch báo cáo, sai lệch lấy mẫu, v.v. Tương tự, xu hướng làm tròn có liên quan đến dữ liệu số. Trong bài viết này, chúng ta sẽ thấy những điều sau đây
- Tại sao điều quan trọng là phải biết cách làm tròn số
- Cách sử dụng các chiến lược khác nhau để làm tròn số
- Làm tròn dữ liệu bị ảnh hưởng như thế nào
- Cách sử dụng mảng NumPy và Pandas DataFrames để làm tròn số
Trước tiên chúng ta hãy tìm hiểu về quy trình làm tròn tích hợp sẵn của Python
Giới thiệu về chức năng round[] tích hợp sẵn của Python
Lập trình Python cung cấp một hàm round[] tích hợp giúp làm tròn một số thành số chữ số đã cho và làm cho việc làm tròn số dễ dàng hơn. Hàm round[] chấp nhận hai đối số là n và n chữ số sau đó trả về số n sau khi làm tròn nó thành chữ số. Nếu số chữ số không được cung cấp để làm tròn, hàm sẽ làm tròn số n thành số nguyên gần nhất
Giả sử bạn muốn làm tròn một số, chẳng hạn như 4. 5. Nó sẽ được làm tròn đến số nguyên gần nhất là 5. Tuy nhiên, số 4. 74 sẽ được làm tròn đến một chữ số thập phân để cho 4. 7
Điều quan trọng là làm tròn số nhanh chóng và dễ dàng khi bạn đang làm việc với số thực có nhiều chữ số thập phân. Hàm Python có sẵn round[] làm cho nó đơn giản và dễ dàng
cú pháp
round[number, number of digits]
Các tham số trong hàm round[] là
- số - số cần làm tròn
- số chữ số [Tùy chọn] - số chữ số mà số đã cho sẽ được làm tròn
Tham số thứ hai là tùy chọn. Trường hợp thiếu thì hàm round[] trả về
- Đối với một số nguyên, 12, nó làm tròn thành 12
- Đối với số thập phân, nếu chữ số cuối cùng sau dấu thập phân >=5 thì sẽ làm tròn thành số nguyên tiếp theo và nếu =5
print[round[5.476, 2]]
# when the [ndigit+1]th digit is 1 print[round["x", 2]]
TypeError: type str doesn't define __round__ method
Một vi dụ khac,
________số 8_______đầu ra sẽ là
2 2 2
Hàm round[] làm tròn 1. 5 đến 2 và 2. 5 xuống còn 2. Đây không phải là lỗi, hàm round[] hoạt động theo cách này. Trong bài viết này, bạn sẽ tìm hiểu một vài cách khác để làm tròn số. Chúng ta hãy xem xét các phương pháp khác nhau để làm tròn một số
Phương pháp đa dạng để làm tròn
Có nhiều cách làm tròn số với ưu và nhược điểm riêng. Để hiểu rõ hơn, những phương pháp đa dạng này để làm tròn người học mới bắt đầu cũng có thể tham gia khóa học nâng cao về python. Nhưng trước đó, ở đây chúng ta sẽ tìm hiểu một số kỹ thuật làm tròn số
cắt ngắn
Truncation, như tên cho thấy, có nghĩa là rút ngắn mọi thứ. Đây là một trong những phương pháp đơn giản nhất để làm tròn một số bao gồm việc cắt ngắn một số thành một số chữ số nhất định. Phương pháp này thay thế mỗi chữ số sau một vị trí nhất định bằng 0. Chúng ta hãy xem xét một số ví dụ
Giá trị bị cắt bớt ToResult19. 345Hàng chục vị trí1019. 345Một chỗ1919. 345Hàng phần mười19. 319. 345Hàng phần trăm19. 34Hàm truncate[] có thể được sử dụng cho số dương cũng như số âm
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
0Hàm truncate[] cũng có thể được sử dụng để cắt bớt các chữ số về phía bên trái của dấu thập phân bằng cách chuyển một số âm
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
1Khi một số dương bị cắt bớt, về cơ bản chúng tôi sẽ làm tròn số đó xuống. Tương tự, khi chúng ta cắt bớt một số âm, số đó sẽ được làm tròn lên. Chúng ta hãy xem xét các phương pháp làm tròn khác nhau
Tập trung
Có một chiến lược khác được gọi là "làm tròn số" trong đó một số được làm tròn đến một số chữ số cụ thể. Ví dụ
Giá trịLàm tròn đếnResult12. 345Hàng chục vị trí2018. 345Một chỗ1918. 345Hàng phần mười18. 418. 345Hàng phần trăm18. 35Thuật ngữ trần được sử dụng trong toán học để giải thích số nguyên gần nhất lớn hơn hoặc bằng một số cụ thể. Trong Python, để "làm tròn số", chúng tôi sử dụng hai hàm cụ thể là,
- hàm trần [] và
- hàm toán học []
Một số không nguyên nằm giữa hai số nguyên liên tiếp. Chẳng hạn xét số 5. 2, điều này sẽ nằm giữa 4 và 5. Ở đây, trần nhà là điểm cuối cao hơn của khoảng, trong khi sàn nhà là điểm cuối thấp hơn. Do đó, mức trần 5. 2 là 5, và tầng 5. 2 là 4. Tuy nhiên, trần của 5 là 5
Trong Python, hàm để thực hiện hàm trần là toán học. chức năng trần[]. Nó luôn trả về số nguyên gần nhất lớn hơn hoặc bằng đầu vào của nó
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
2Nếu để ý bạn sẽ thấy mức trần -0. 5 là 0 chứ không phải -1
Chúng ta hãy xem xét một đoạn mã ngắn để triển khai chiến lược “làm tròn số” bằng cách sử dụng hàm round_up[]# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
3Hãy xem cách hàm round_up[] hoạt động với các đầu vào khác nhau
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
4Bạn có thể chuyển các giá trị âm sang số thập phân, giống như chúng ta đã làm trong phần cắt ngắn
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
5Bạn có thể theo dõi sơ đồ bên dưới để hiểu cách làm tròn lên và làm tròn xuống. Vòng lên bên phải và xuống bên trái
Làm tròn lên luôn làm tròn một số ở bên phải trên dòng số và làm tròn xuống luôn làm tròn một số ở bên trái trên dòng số
Làm tròn xuống
Tương tự như làm tròn lên, chúng ta có một chiến lược khác gọi là làm tròn xuống nơi
Giá trị được làm tròn xuống thànhResult19. 345Hàng chục vị trí1019. 345Một chỗ1919. 345Hàng phần mười19. 319. 345Hàng phần trăm19. 34Trong Python, làm tròn xuống có thể được triển khai bằng thuật toán tương tự khi chúng ta cắt bớt hoặc làm tròn lên. Đầu tiên, bạn sẽ phải thay đổi dấu thập phân và sau đó làm tròn một số nguyên. Cuối cùng, chuyển dấu thập phân trở lại
Toán học. ceil[] được sử dụng để làm tròn lên đến mức trần của số sau khi dấu thập phân được dịch chuyển. Để “làm tròn xuống”, trước tiên chúng ta cần làm tròn sàn của số sau khi dấu thập phân được dịch chuyển
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
6Đây là định nghĩa của round_down[]
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
7Điều này khá giống với hàm round_up[]. Ở đây chúng tôi đang sử dụng toán học. sàn [] thay vì toán học. trần nhà[]
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
8Làm tròn số lên hoặc xuống có tác dụng cực lớn đối với tập dữ liệu lớn. Sau khi làm tròn lên hoặc xuống, bạn thực sự có thể loại bỏ rất nhiều độ chính xác cũng như thay đổi phép tính
Làm tròn một nửa
Chiến lược “làm tròn một nửa” làm tròn mọi số đến số gần nhất với độ chính xác được chỉ định và phá vỡ các mối quan hệ bằng cách làm tròn lên. Dưới đây là một số ví dụ
Giá trịLàm tròn một nửa đếnResult19. 825Hàng chục vị trí1019. 825Ones place2019. 825Hàng phần mười19. 819. 825Hàng phần trăm19. 83Trong Python, chiến lược làm tròn nửa số có thể được triển khai bằng cách dịch chuyển dấu thập phân sang phải theo số vị trí mong muốn. Trong trường hợp này, bạn sẽ phải xác định xem chữ số sau dấu thập phân đã dịch chuyển nhỏ hơn hay lớn hơn 5
Bạn có thể thêm 0. 5 thành giá trị được dịch chuyển và sau đó làm tròn nó xuống bằng phép toán. hàm sàn []
# For integers print[round[12]] # For floating point print[round[21.7]] print[round[21.4]]
9Nếu để ý bạn có thể thấy round_half_up[] giống với round_down. Sự khác biệt duy nhất là thêm 0. 5 sau khi dịch chuyển dấu thập phân để kết quả làm tròn xuống khớp với giá trị dự kiến
12 22 21
0Làm tròn một nửa xuống
Trong phương pháp làm tròn này, nó làm tròn đến số gần nhất tương tự như phương pháp “làm tròn một nửa”, điểm khác biệt là nó phá vỡ các ràng buộc bằng cách làm tròn đến số nhỏ hơn trong hai số. Dưới đây là một số ví dụ
Giá trịRound Half Down ToResult16. 825Hàng chục vị trí1716. 825Một chỗ1716. 825Hàng phần mười16. 816. 825Hàng phần trăm16. 82Trong Python, chiến lược “làm tròn một nửa xuống” có thể được thực hiện bằng cách thay thế toán học. floor[] trong hàm round_half_up[] với toán học. ceil[] và sau đó bằng cách trừ 0. 5 thay vì thêm
12 22 21
1Hãy để chúng tôi xem xét một số trường hợp thử nghiệm
12 22 21
2Nói chung, không có sự thiên vị nào cho cả round_half_up[] và round_half_down[]. Tuy nhiên, làm tròn dữ liệu với số lượng mối quan hệ nhiều hơn dẫn đến sai lệch. Hãy xem xét một ví dụ để hiểu rõ hơn
12 22 21
3Hãy để chúng tôi tính giá trị trung bình của những con số này
12 22 21
4Bây giờ chúng ta hãy tính giá trị trung bình của dữ liệu sau khi làm tròn đến một chữ số thập phân với round_half_up[] và round_half_down[]
12 22 21
5Hàm round_half_up[] dẫn đến vòng quay về hướng vô cực dương và round_half_down[] dẫn đến vòng về hướng vô cực âm
Làm tròn một nửa từ số không
Nếu bạn để ý kỹ khi đi qua round_half_up[] và round_half_down[], cả hai đều không đối xứng quanh 0
12 22 21
6Để giới thiệu tính đối xứng, bạn luôn có thể làm tròn cà vạt cách xa số không. Bảng được đề cập dưới đây minh họa rõ ràng
Việc thực hiện chiến lược “làm tròn nửa số 0” trên số n rất đơn giản. Tất cả những gì bạn cần làm là bắt đầu như bình thường bằng cách chuyển dấu thập phân sang bên phải của một số vị trí nhất định và sau đó chú ý đến chữ số d ngay bên phải vị trí thập phân trong số mới này. Ở đây, có bốn trường hợp cần xem xét
- Nếu n dương và d >= 5, làm tròn lên
- Nếu n dương và d < 5, làm tròn xuống
- Nếu n âm và d >= 5, làm tròn xuống
- Nếu n âm và d < 5, làm tròn lên
Sau khi làm tròn theo quy tắc nêu trên, bạn có thể dịch chuyển chữ số thập phân về bên trái
Có một câu hỏi có thể xuất hiện trong đầu bạn - Làm thế nào để bạn xử lý các tình huống trong đó số lượng các mối quan hệ tích cực và tiêu cực khác nhau đáng kể? . Python tích hợp sẵn
Làm tròn một nửa đến chẵn
Có một cách để giảm thiểu sai lệch làm tròn trong khi bạn đang làm tròn các giá trị trong tập dữ liệu. Bạn có thể chỉ cần làm tròn các mối quan hệ đến số chẵn gần nhất với độ chính xác mong muốn. Chúng ta hãy xem xét một số ví dụ
ValueRound Half Đến Chẵn ĐếnResult16. 255Hàng chục vị trí2016. 255Một chỗ1616. 255Hàng phần mười16. 216. 255Hàng phần trăm16. 26Để chứng minh rằng round[] thực sự làm tròn đến chẵn, chúng ta hãy thử một vài giá trị khác nhau
12 22 21
7Lớp thập phân
Mô-đun thập phân trong Python là một trong những tính năng ngôn ngữ mà bạn có thể không biết nếu bạn mới bắt đầu học Python. Số thập phân “dựa trên một mô hình dấu phẩy động được thiết kế có tính đến con người và nhất thiết phải có một nguyên tắc hướng dẫn tối quan trọng – máy tính phải cung cấp một phép tính số học hoạt động giống như phép tính số học mà mọi người học ở trường. ” – ngoại trừ đặc tả số học thập phân.
Một số lợi ích của mô-đun thập phân được đề cập bên dưới -
Biểu diễn thập phân chính xác. 0. 1 thực ra là 0. 1 và 0. 1 + 0. 1 + 0. 1 - 0. 3 trả về 0, như mong đợi
Bảo toàn chữ số có nghĩa. Khi bạn thêm 1. 50 và 2. 30, kết quả là 3. 80 với số 0 ở cuối được duy trì để biểu thị tầm quan trọng
Độ chính xác do người dùng thay đổi. Độ chính xác mặc định của mô-đun thập phân là hai mươi tám chữ số, nhưng người dùng có thể thay đổi giá trị này để phù hợp với vấn đề hiện tại
Hãy cho chúng tôi xem cách làm tròn hoạt động trong mô-đun thập phân
12 22 21
8Hàm số thập phân. getcontext[] trả về một đối tượng bối cảnh đại diện cho bối cảnh mặc định của mô-đun thập phân. Nó cũng bao gồm độ chính xác mặc định và chiến lược làm tròn mặc định
Trong ví dụ trên, bạn sẽ thấy chiến lược làm tròn mặc định cho mô-đun thập phân là ROUND_HALF_EVEN. Nó cho phép căn chỉnh với chức năng round[] tích hợp
Hãy để chúng tôi tạo một thể hiện Số thập phân mới bằng cách chuyển một chuỗi chứa giá trị mong muốn và khai báo một số bằng cách sử dụng lớp Số thập phân của mô-đun thập phân
12 22 21
9Bạn có thể tạo một thể hiện Số thập phân từ một số dấu phẩy động, nhưng trong trường hợp đó, lỗi biểu diễn dấu phẩy động sẽ xuất hiện. Ví dụ: đây là điều xảy ra khi bạn tạo một thể hiện Số thập phân từ số dấu phẩy động 0. 1
# when the [ndigit+1]th digit is =5 print[round[5.465, 2]] # when the [ndigit+1]th digit is >=5 print[round[5.476, 2]] # when the [ndigit+1]th digit is =5 print[round[5.476, 2]] # when the [ndigit+1]th digit is =5 print[round[5.476, 2]] # when the [ndigit+1]th digit is =5 print[round[5.476, 2]] # when the [ndigit+1]th digit is =5 print[round[5.476, 2]] # when the [ndigit+1]th digit is =5 print[round[5.476, 2]] # when the [ndigit+1]th digit is =5 print[round[5.476, 2]] # when the [ndigit+1]th digit is