Thiếu dữ liệu luôn là một vấn đề trong các tình huống thực tế. Các lĩnh vực như học máy và khai thác dữ liệu phải đối mặt với các vấn đề nghiêm trọng về độ chính xác của dự đoán mô hình do chất lượng dữ liệu kém do thiếu giá trị. Trong những lĩnh vực này, xử lý giá trị còn thiếu là điểm tập trung chính để làm cho các mô hình của họ chính xác và hợp lệ hơn
Khi nào và tại sao dữ liệu bị bỏ lỡ?
Hãy để chúng tôi xem xét một cuộc khảo sát trực tuyến cho một sản phẩm. Nhiều khi mọi người không chia sẻ hết những thông tin liên quan đến mình. Rất ít người chia sẻ kinh nghiệm của họ, nhưng không biết họ đã sử dụng sản phẩm trong bao lâu; . Do đó, theo cách này hay cách khác, một phần dữ liệu luôn bị thiếu và điều này rất phổ biến trong thời gian thực
Bây giờ chúng ta hãy xem cách chúng ta có thể xử lý các giá trị bị thiếu [giả sử NA hoặc NaN] bằng cách sử dụng Pandas
# import the pandas library import pandas as pd import numpy as np df = pd.DataFrame[np.random.randn[5, 3], index=['a', 'c', 'e', 'f', 'h'],columns=['one', 'two', 'three']] df = df.reindex[['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']] print df
Đầu ra của nó như sau -
one two three a 0.077988 0.476149 0.965836 b NaN NaN NaN c -0.390208 -0.551605 -2.301950 d NaN NaN NaN e -2.000303 -0.788201 1.510072 f -0.930230 -0.670473 1.146615 g NaN NaN NaN h 0.085100 0.532791 0.887415
Sử dụng lập chỉ mục lại, chúng tôi đã tạo một DataFrame với các giá trị bị thiếu. Ở đầu ra, NaN có nghĩa là Không phải là Số
Kiểm tra giá trị còn thiếu
Để giúp phát hiện các giá trị bị thiếu dễ dàng hơn [và trên các kiểu mảng khác nhau], Pandas cung cấp các hàm isnull[] và notnull[], đây cũng là các phương thức trên các đối tượng Series và DataFrame -
Thí dụ
import pandas as pd import numpy as np df = pd.DataFrame[np.random.randn[5, 3], index=['a', 'c', 'e', 'f', 'h'],columns=['one', 'two', 'three']] df = df.reindex[['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']] print df['one'].isnull[]
Đầu ra của nó như sau -
a False b True c False d True e False f False g True h False Name: one, dtype: bool
Dọn dẹp/Điền dữ liệu bị thiếu
Pandas cung cấp các phương pháp khác nhau để làm sạch các giá trị còn thiếu. Hàm fillna có thể “điền vào” các giá trị NA với dữ liệu khác null theo một số cách mà chúng tôi đã minh họa trong các phần sau
Thay thế NaN bằng một giá trị vô hướng
Chương trình sau đây cho thấy cách bạn có thể thay thế "NaN" bằng "0"
import pandas as pd import numpy as np df = pd.DataFrame[np.random.randn[3, 3], index=['a', 'c', 'e'],columns=['one', 'two', 'three']] df = df.reindex[['a', 'b', 'c']] print df print ["NaN replaced with '0':"] print df.fillna[0]
Đầu ra của nó như sau -
one two three a -0.576991 -0.741695 0.553172 b NaN NaN NaN c 0.744328 -1.735166 1.749580 NaN replaced with '0': one two three a -0.576991 -0.741695 0.553172 b 0.000000 0.000000 0.000000 c 0.744328 -1.735166 1.749580
Ở đây, chúng tôi đang điền vào giá trị bằng không;
Điền NA Tiến và lùi
Sử dụng các khái niệm điền được thảo luận trong Chương Lập chỉ mục lại, chúng tôi sẽ điền các giá trị còn thiếu
Thí dụ
import pandas as pd import numpy as np df = pd.DataFrame[np.random.randn[5, 3], index=['a', 'c', 'e', 'f', 'h'],columns=['one', 'two', 'three']] df = df.reindex[['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']] print df.fillna[method='pad']
Đầu ra của nó như sau -
one two three a 0.077988 0.476149 0.965836 b 0.077988 0.476149 0.965836 c -0.390208 -0.551605 -2.301950 d -0.390208 -0.551605 -2.301950 e -2.000303 -0.788201 1.510072 f -0.930230 -0.670473 1.146615 g -0.930230 -0.670473 1.146615 h 0.085100 0.532791 0.887415
Bỏ các giá trị còn thiếu
Nếu bạn chỉ muốn loại trừ các giá trị bị thiếu, thì hãy sử dụng hàm dropna cùng với đối số axis. Theo mặc định, trục=0, i. e. , dọc theo hàng, có nghĩa là nếu bất kỳ giá trị nào trong một hàng là NA thì toàn bộ hàng đó sẽ bị loại trừ
Thí dụ
________số 8Đầu ra của nó như sau -
one two three a 0.077988 0.476149 0.965836 c -0.390208 -0.551605 -2.301950 e -2.000303 -0.788201 1.510072 f -0.930230 -0.670473 1.146615 h 0.085100 0.532791 0.887415
Thay thế các giá trị chung bị thiếu [hoặc]
Nhiều lần, chúng ta phải thay thế một giá trị chung bằng một số giá trị cụ thể. Chúng ta có thể đạt được điều này bằng cách áp dụng phương pháp thay thế