Phân biệt rỗng, chưa biết và không áp dụng trong dữ liệu
Mô hình hóa lý do thiếu, điều kiện đủ và điều chỉnh đến muộn; tính mức bao phủ cùng cận trung bình mà không tự tạo câu trả lời.

Hãy biểu diễn giá trị thiếu theo những gì đã biết về nó. Câu hỏi chưa được trả lời, trường không áp dụng và phép đo thất bại đều có thể không có giá trị số nhưng cần cách xử lý khác nhau trong báo cáo. Lưu lý do riêng khi nó ảnh hưởng điều kiện đủ, kiểm tra chất lượng hoặc cách diễn giải.
Nếu bạn thiết kế bộ dữ liệu thay vì chỉ truy vấn, một cột cho phép null mới là một phần của hợp đồng. Cột đó cho biết giá trị có sẵn hay không. Nó chưa nhất thiết giải thích vì sao giá trị thiếu hoặc dòng có thuộc mẫu số của chỉ số hay không.
Khảo sát đi lại với bốn trạng thái khác nhau
Xét khảo sát nơi làm việc giả lập hỏi tổng số phút đi lại hằng tuần. Một người báo không phút. Người khác từ chối câu hỏi. Một người làm việc từ xa đánh dấu câu hỏi không áp dụng. Câu trả lời của người thứ tư bị mất trong quá trình thu thập.
rows = [
{"person": "A", "minutes": 0, "missing_reason": None},
{"person": "B", "minutes": None, "missing_reason": "declined"},
{"person": "C", "minutes": None, "missing_reason": "not-applicable"},
{"person": "D", "minutes": None, "missing_reason": "collection-failure"},
]
allowed_reasons = {"declined", "not-applicable", "collection-failure"}
for row in rows:
value, reason = row["minutes"], row["missing_reason"]
if value is None and reason not in allowed_reasons:
raise ValueError("missing value needs a known reason")
if value is not None and (reason is not None or value < 0):
raise ValueError("observed value violates the survey contract")
eligible = [r for r in rows if r["missing_reason"] != "not-applicable"]
observed = [r for r in eligible if r["minutes"] is not None]
print("eligible:", len(eligible), "observed:", len(observed))
print("numeric response coverage:", len(observed) / len(eligible))
Kết quả có ba người đủ điều kiện và một câu trả lời số quan sát được, nên mức bao phủ là một phần ba. Trung bình quan sát bằng không vì giá trị quan sát duy nhất bằng không. Trung bình đó nói rất ít về những người đủ điều kiện còn lại, do thời gian đi lại của họ chưa biết.
Người làm từ xa bị loại theo định nghĩa đủ điều kiện đã chọn của khảo sát này. Khảo sát khác có thể định nghĩa làm từ xa là không phút đi lại và bao gồm người ấy. Cả hai quy ước đều có thể dùng; đổi giữa chúng sẽ đổi tập đối tượng được mô tả và phải được nêu trong hướng dẫn khảo sát.
Hình tách lý do thiếu khỏi giá trị. Không vẫn là một phép đo, trong khi ba giá trị vắng mặt giữ những lời giải thích khác nhau.
Chuỗi rỗng là cách biểu diễn khi lưu
Tệp CSV có thể mã hóa cả ba giá trị vắng mặt thành trường rỗng. Khi khác biệt đã mất, người phân tích phía sau không thể khôi phục nó từ chuỗi rỗng. Cần ghi lý do tại thời điểm thu thập nếu quyết định sau này phụ thuộc vào nó.
Chuỗi quy ước như “N/A” cũng có thể mơ hồ: không áp dụng, chưa có sẵn hoặc một mã nhóm có thật. Định nghĩa cách hiểu theo từng trường nguồn. Thay thế toàn cục trên mọi cột văn bản có thể phá hủy giá trị hợp lệ ở cột không liên quan.
Trong bảng có kiểu dữ liệu, nên dùng cột giá trị số cộng cột lý do có ràng buộc thay vì trộn số với chuỗi giải thích trong cùng ô. Cách này giữ phép toán số có nghĩa rõ ràng và cho phép kiểm tra tổ hợp mâu thuẫn. Lý do “declined” cạnh một giá trị số phải bị từ chối theo hợp đồng ví dụ.
Quy tắc giá trị thiếu của thư viện phụ thuộc kiểu
Hướng dẫn dữ liệu thiếu của pandas mô tả các cách biểu diễn thiếu và phép kiểm tra tường minh. NaN dấu phẩy động, dấu thời gian thiếu và giá trị thiếu trong cột số nguyên cho phép null có thể xử lý phép bằng và số học khác nhau.
Dùng thao tác kiểm tra thiếu của thư viện cho cấu trúc tương ứng thay vì giả định mọi giá trị thiếu bằng chính nó hoặc bằng một giá trị đại diện duy nhất. Ví dụ Python nhỏ dùng None trong từ điển thông thường nên kiểm tra đồng nhất là đủ. Sao chép đúng phép so sánh ấy vào mọi thư viện số không phải quy tắc có thể áp dụng ở mọi nơi.
Giá trị mặc định cần được xem xét tương tự. Điền không cho mọi thời gian đi lại bị thiếu sẽ biến ba giá trị vắng mặt thành các quan sát được khẳng định. Loại mọi dòng thiếu trước khi đo mức bao phủ sẽ che lỗi thu thập và việc từ chối trả lời. Giữ quy tắc biến đổi gắn với chỉ số mà chúng phục vụ.
Lý do thiếu vẫn là dữ liệu cần kiểm tra
Lược đồ thực tế phải ràng buộc cả kiểu số lẫn quan hệ với lý do. Dữ liệu giả lập nhỏ đã cung cấp số nguyên, nhưng biểu diễn lỏng có thể nhận chuỗi “zero” hoặc Boolean. Kiểm tra kiểu và kiểm tra thiếu trả lời hai câu hỏi riêng. Nêu rõ cả hai giúp tránh việc mã lý do hợp lệ che đi giá trị đo sai kiểu.
Hệ thống thu thập có thể gán sai lý do. Bộ phân tích đánh dấu mọi ngoại lệ là “không áp dụng” có thể loại bản ghi khó khỏi mẫu số và khiến mức bao phủ trông cao hơn. Giữ lỗi phân tích riêng với câu trả lời của người tham gia, rồi đo số lượng của chúng trước khi công bố bảng đã xử lý.
Lý do cũng có thể đổi theo thời gian. Lỗi thu thập tạm thời có thể được giải quyết khi câu trả lời đến muộn. Giữ phiên bản trước khi cần tái lập báo cáo đã lưu, hoặc ghi rõ kết quả lịch sử được điều chỉnh sau dữ liệu muộn. Thời điểm cập nhật giá trị và thời gian quan sát của khảo sát mô tả hai sự kiện khác nhau.
Quyền xem lý do từ chối chi tiết có thể cần chặt hơn quyền xem mức bao phủ tổng hợp. Báo cáo có thể trình bày số đếm theo nhóm lý do thiếu mà không tiết lộ người nào từ chối. Chỉ giữ mức chi tiết cần cho mục đích đã nêu và quy trình sửa dữ liệu.
Diễn giải cần nhiều hơn một lược đồ sạch
Lược đồ này khiến sự vắng mặt có thể kiểm tra, nhưng không xác lập rằng người đã trả lời đại diện cho tập đủ điều kiện. Người đi lại lâu có thể sẵn lòng trả lời hơn hoặc ít hơn. Điền ước lượng cho giá trị thiếu cần giả định về quá trình thiếu đó và phải được đánh giá như một bước phân tích riêng.
Với hợp đồng dữ liệu đầu tiên, hãy nêu lý do được phép, ảnh hưởng của chúng tới điều kiện đủ và những tổ hợp giá trị với lý do hợp lệ. Thử số không thật, câu trả lời thiếu, bản ghi không áp dụng và điều chỉnh đến muộn. Sau đó hiển thị mức bao phủ quan sát cạnh mọi thống kê tóm tắt để người đọc biết bao nhiêu phần của tập dự định thực sự đóng góp phép đo.
Đính kèm chính sách giá trị thiếu trong các bản xuất để bên sử dụng sau có thể bảo toàn các khác biệt ấy.
Chỉ ra điều giả định về khoảng giá trị có thể xác lập
Nhãn lý do thiếu giải thích vì sao không có giá trị, nhưng không tiết lộ những con số đang thiếu. Phép tính cận nhỏ có thể cho thấy khoảng trống thông tin mà không tự tạo câu trả lời. Trong bài tập bổ sung này, giả sử chỉ số khảo sát là số phút đi lại hằng tuần có giới hạn trên: người vượt 600 phút báo 600. Giá trị báo cáo hợp lệ vì vậy nằm từ không đến 600. Đây là quy tắc công cụ đo được nêu rõ cho nghiên cứu giả định, không phải giới hạn chung của thời gian đi lại thật.
Theo quy tắc đó, B và D mỗi người đóng góp từ không đến 600 phút. A có giá trị quan sát không, còn C vẫn nằm ngoài tập đủ điều kiện. Trung bình của tập đủ điều kiện vì vậy có thể từ không đến 400. Điền không cho cả hai giá trị thiếu chọn điểm thấp nhất của khoảng; việc ấy không chứng minh không là ước lượng đại diện.
def bounded_commute_summary(records, upper=600):
eligible_values = []
for row in records:
value, reason = row["minutes"], row["missing_reason"]
if value is None:
if reason not in allowed_reasons:
raise ValueError("missing value needs a known reason")
elif type(value) is not int or not 0 <= value <= upper or reason is not None:
raise ValueError("invalid observed capped minutes")
if reason != "not-applicable":
eligible_values.append(value)
n = len(eligible_values)
if n == 0:
return {"eligible": 0, "observed": 0, "coverage": None, "mean_bounds": None}
values = [v for v in eligible_values if v is not None]
total = sum(values)
missing = n - len(values)
return {
"eligible": n, "observed": len(values),
"coverage": len(values) / n,
"mean_bounds": (total / n, (total + missing * upper) / n),
}
print(bounded_commute_summary(rows))
corrected = [dict(row) for row in rows]
corrected[3].update(minutes=180, missing_reason=None)
print(bounded_commute_summary(corrected))
Dữ liệu ban đầu có ba người đủ điều kiện, một quan sát, mức bao phủ một phần ba và cận trung bình (0.0, 400.0). Khi lỗi thu thập của D được giải quyết bằng câu trả lời 180 phút, mức bao phủ thành hai phần ba và cận hẹp lại còn (60.0, 260.0). Trung bình trên người có câu trả lời lúc này là 90, còn trung bình toàn bộ tập đủ điều kiện vẫn chưa biết vì B từ chối. Phép tính cận giữ cả ba người đủ điều kiện trong mẫu số.
Đây là các cận số học dưới giả định giới hạn trên, không phải khoảng tin cậy. Chúng không cung cấp xác suất trung bình thật của tập đủ điều kiện ở gần đầu mút nào. Nếu câu hỏi gốc đo số phút không bị chặn trên và không có giới hạn trên đáng tin cậy, không thể suy ra cận trên hữu hạn ấy. Nêu rõ cận mô tả chỉ số nào và đừng âm thầm cắt giá trị nguồn sau thu thập để tạo ra khoảng bất định hẹp.
Kiểm tra điều chỉnh như một lần đổi trạng thái
Điều chỉnh hợp lệ phải đổi cả giá trị lẫn lý do thiếu của D cùng nhau. Đặt số phút thành 180 mà vẫn giữ collection-failure phải thất bại ở kiểm tra nhất quán của hàm mới. Giữ lý do thu thập thất bại cạnh giá trị quan sát sẽ khiến các báo cáo bất đồng tùy trường được dùng để tính bao phủ. Ghi thời điểm nhận điều chỉnh riêng với tuần khảo sát mô tả, để bản chụp đã công bố có thể được tái lập hoặc chủ ý điều chỉnh lại.
Hàm cũng từ chối Boolean, số âm và giá trị quan sát vượt giới hạn. Nó giả định cận trên đã được cấu hình đúng là số nguyên không âm và các dòng có các khóa được mô tả; kiểm tra cấu trúc và cấu hình thuộc về ranh giới đầu vào. Lý do chưa biết không được mặc định chuyển thành không áp dụng. Cách mặc định đó sẽ loại dòng khỏi tập đối tượng thay vì chỉ báo xác thực thất bại.
Với các bài tập độc lập, mỗi lần bắt đầu từ bốn dòng gốc. Sửa D thành 180 mà không xóa lý do và xác nhận bị từ chối. Sau đó ghi B là 600 và D là 180, xóa cả hai lý do: mức bao phủ đầy đủ và hai cận cùng bằng 260. Cuối cùng, truyền tập rỗng rồi tập chỉ chứa C. Cả hai đều không có người đủ điều kiện, mức bao phủ và cận không xác định; đó không phải trung bình không phút đã được đo. Các trường hợp này phân biệt biết đầy đủ về một giá trị không với không có phép đo đủ điều kiện nào để tóm tắt.
Bảng theo dõi giá trị thiếu có thể trình bày cùng lúc trung bình quan sát, mức bao phủ, số đếm lý do và các cận có cơ sở. Không đại lượng nào nên âm thầm thay đại lượng khác. Cách trình bày đó giúp người sử dụng quyết định bất định còn lại chấp nhận được để khám phá, đòi hỏi thu thập bổ sung hay ngăn công bố kết luận về toàn bộ tập đối tượng.


