Mặc dù các chương trình bảng tính và trình soạn thảo văn bản có thể được sử dụng để làm sạch dữ liệu theo cách thủ công, nhưng cách tốt nhất để làm sạch dữ liệu là viết mã cho nó. Điều này đòi hỏi ba bước
- Xác định — diễn đạt bằng lời bạn dự định giải quyết vấn đề như thế nào
- Mã — biến các định nghĩa của bạn thành mã thực thi
- Kiểm tra —kiểm tra dữ liệu của bạn để xác nhận rằng mã của bạn đã được triển khai đúng cách
tập dữ liệu. Dữ liệu thử nghiệm lâm sàng giai đoạn II insulin đường uống
Hiểu bộ dữ liệu
Tỷ lệ đái tháo đường ngày càng gia tăng trong thế kỷ XXI là một mối lo.
Bệnh nhân có các triệu chứng như.
- khát
- đi tiểu thường xuyên
- kiệt sức cùng cực
Bệnh tiểu đường cũng có thể gây ra các vấn đề nghiêm trọng hơn như đột quỵ, mù lòa, mất chi, suy thận và đau tim. Tôi sẽ kiểm tra dữ liệu thử nghiệm lâm sàng giai đoạn hai từ 350 bệnh nhân đối với Auralin, một loại insulin uống độc đáo mới là một viên nang được cấp bằng sáng chế có khả năng khắc phục vấn đề niêm mạc dạ dày
Mục đích của thử nghiệm giai đoạn hai là để
- Kiểm tra hiệu quả và đáp ứng liều lượng của một loại thuốc
- Xác định các phản ứng bất lợi
Trong thử nghiệm này, một nửa số bệnh nhân được dùng Auralin, trong khi 175 người còn lại được dùng Novodra, một loại insulin tiêm phổ biến. Tôi có thể xác định liệu Auralin có thành công hay không bằng cách phân tích các thông số quan trọng giữa hai loại thuốc này
Mục đích của việc làm sạch dữ liệu là gì?
Dữ liệu chăm sóc sức khỏe nổi tiếng là bao gồm các lỗi và không được tổ chức, và dữ liệu thử nghiệm lâm sàng cũng không ngoại lệ. Ví dụ, lỗi của con người trong quá trình đăng ký bệnh nhân có nghĩa là chúng tôi có thể có
- dữ liệu trùng lặp
- dữ liệu bị mất
- dữ liệu không chính xác
Tôi sẽ bắt đầu bằng cách kiểm tra chất lượng và sự ngăn nắp của việc thu thập dữ liệu này, sau đó làm sạch tất cả những vấn đề này bằng Python và Pandas. Mục đích là để tạo ra một phân tích đáng tin cậy
chuẩn bị để làm sạch
Trước khi có thể bắt đầu làm sạch, một bản sao của từng phần dữ liệu phải được tạo. Tất cả các quy trình làm sạch sẽ được thực hiện trên bản sao này, cho phép tôi kiểm tra bộ dữ liệu bẩn và/hoặc lộn xộn ban đầu sau này
Tạo bản sao của tập dữ liệu
Địa chỉ thiếu dữ liệu đầu tiên
Khi kiểm tra chất lượng dữ liệu, tốt nhất bạn nên xử lý các vấn đề về tính đầy đủ trước tiên. Đối với dữ liệu bị thiếu, điều này có nghĩa là
- nối
- Tham gia
- Tố cáo, nếu có thể
Bộ dữ liệu thử nghiệm lâm sàng
Trong bộ dữ liệu thử nghiệm lâm sàng, tôi đã xác định được ba vấn đề về tính đầy đủ
bảng điều trị
- thiếu thay đổi HbA1c
- bản ghi bị thiếu [280 thay vì 350]
bàn bệnh nhân
- Thiếu thông tin nhân khẩu học [địa chỉ — cột liên hệ]
Thật không may, không thể làm gì liên quan đến thông tin nhân khẩu học bị thiếu vì tôi sẽ không thể lấy thông tin đó cho đến khi những bệnh nhân đó quay trở lại
Bắt đầu với các bản ghi bị thiếu, treatments_clean
có 280 thay vì 350 bản ghi. Các bản ghi treatments
bị thiếu được lưu trữ trong một tệp có tên treatments_cut.csv.
Tôi sẽ nhập tập dữ liệu trước rồi ghép cả hai tệp để điền vào tập dữ liệu còn thiếu trong treatment_clean
Tôi sẽ kiểm tra tập dữ liệu để đảm bảo mã hoạt động
Tiếp theo, tôi xem treatments
có những thay đổi về HbA1c bị thiếu và những thay đổi về HbA1c không chính xác [số 4 dẫn đầu bị nhầm thành số 9]. Quan sát “Thay đổi HbA1c không chính xác [số 4 dẫn đầu bị nhầm thành 9]”, đây là vấn đề về độ chính xác chứ không phải vấn đề về tính đầy đủ, được bao gồm trong phần này vì nó cũng được khắc phục bằng thao tác làm sạch khắc phục quan sát “Thay đổi HbA1c bị thiếu” bị thiếu
Sau khi giải quyết dữ liệu bị thiếu, bước tự nhiên tiếp theo là dọn dẹp cho gọn gàng. Hadley Wickham, một nhà thống kê, người tiên phong về dữ liệu gọn gàng, trong ấn phẩm của mình, ‘Dữ liệu gọn gàng’ [The Journal of Statistical Software, vol. 59, 2014], nêu những điểm chính sau
- Bộ dữ liệu sạch rất đơn giản để làm việc với
- Các bộ dữ liệu gọn gàng với các vấn đề về chất lượng dữ liệu hầu như luôn dễ dàng làm sạch hơn các bộ dữ liệu lộn xộn có cùng khó khăn
Điều này có nghĩa là lý tưởng nhất là làm sạch các mối quan tâm về cấu trúc trước tiên, chẳng hạn như sự ngăn nắp, sau đó làm sạch các vấn đề về nội dung, chẳng hạn như chất lượng
ngăn nắp
Tôi đã phát hiện ra bốn phần của bộ dữ liệu thử nghiệm lâm sàng insulin đường uống không được gọn gàng
- Cột liên hệ trong bảng bệnh nhân nên được chia thành số điện thoại và email
- Ba biến trong hai cột trong bảng điều trị [điều trị, liều bắt đầu và liều kết thúc]
- Phản ứng bất lợi nên là một phần của bảng điều trị
- Các cột họ và tên đã cho trong bảng bệnh nhân được sao chép trong các bảng điều trị và phản ứng phụ
Việc tách các cột thành hai sẽ yêu cầu tôi sử dụng mẫu biểu thức chính quy. Nhìn vào cột liên hệ ta có cả email và số điện thoại
Trước tiên, tôi phải tìm mẫu mà tôi sẽ sử dụng bằng cách truy cập trang web regex này và phát hiện mẫu của tôi cho email, mẫu của tôi là
và cho số điện thoại tôi nhận được
Làm điều này trên khung dữ liệu sẽ trông như thế này
Kiểm tra tập dữ liệu để xem mã có hoạt động không
Có ba biến trong hai cột trong bảng treatments
[điều trị, liều bắt đầu và liều kết thúc]. Tôi sẽ nấu chảy cột auralin và cột novodra thành cột điều trị và cột liều [liều sẽ vẫn chứa cả liều bắt đầu và liều kết thúc tại thời điểm này]. Sau đó tách cột liều trên ‘ — ‘ để có cột start_dose và end_dose, sau đó tôi sẽ bỏ cột liều trung gian
Kiểm tra mã để xem những gì tôi đã làm có hiệu quả không
Phản ứng bất lợi phải là một phần của bảng điều trị, vì vậy tôi hợp nhất cộtphản ứng bất lợi vào bảng treatments
, tham gia vào tên và họ đã cho
Bảng phản ứng bất lợi không còn cần thiết. Tôi sẽ cô lập ID và tên bệnh nhân trong bảng patients
, sau đó chuyển những tên này thành chữ thường để nối với treatments
. Sau đó thả các cột tên và họ đã cho vào bảng điều trị
Tất cả những gì còn lại bây giờ là dọn sạch các vấn đề về chất lượng dữ liệu còn lại sau khi dữ liệu bị thiếu và các vấn đề về ngăn nắp đã được giải quyết
Tập dữ liệu này có một số vấn đề về chất lượng dữ liệu
bàn bệnh nhân
- mã zip là một float không phải là một chuỗi
- mã zip đôi khi có bốn chữ số
- Chiều cao của Tim Neudorf là 27 inch thay vì 72 inch
- tên đầy đủ của tiểu bang đôi khi, viết tắt lần khác
- David Gustafsson
- Thiếu thông tin nhân khẩu học [địa chỉ — cột liên hệ]
- Các loại dữ liệu bị lỗi [cột giới tính, tiểu bang, mã zip và ngày sinh được chỉ định]
- Nhiều định dạng số điện thoại
- Dữ liệu John Doe mặc định
- Nhiều kỷ lục cho Jakobsen, Gersten, Taylor
- kg thay vì lbs cho cân nặng của Zaitseva
bảng điều trị
- thiếu thay đổi HbA1c
- chữ u ở liều bắt đầu và kết thúc cho Auralin và Novodra
- chữ thường cho tên và họ
- bản ghi bị thiếu [280 thay vì 350]
- Kiểu dữ liệu sai [cột auralin và novodra]
- Thay đổi HbA1c không chính xác [4s bị nhầm thành 9s]
- Nulls được biểu thị dưới dạng dấu gạch ngang [-] trong các cột auralin và novodra
bảng bất lợi_reactions
- chữ thường cho tên và họ
Các giải pháp
Mã zip là một float không phải là một chuỗi và đôi khi mã zip có bốn chữ số. Tôi sẽ chuyển đổi kiểu dữ liệu của cột mã zip từ float sang string bằng cách sử dụng astype, xóa dấu '. 0' bằng cách cắt chuỗi và nhập mã zip bốn chữ số với số 0 ở đầu
Đôi khi có tên tiểu bang đầy đủ, đôi khi viết tắt, tôi sẽ áp dụng một hàm chuyển đổi tên tiểu bang đầy đủ thành tên viết tắt của tiểu bang cho California, New York, Illinois, Florida và Nebraska
Ngoài ra, nhiệm vụ này cũng có thể được thực hiện bằng phương pháp này
Tôi sẽ thay thế tên đã đặt cho các hàng trong bảng bệnh nhân có tên đã đặt là 'Dsvid' bằng 'David'
Có kiểu dữ liệu sai [cột giới tính, trạng thái, mã zip và ngày sinh được chỉ định] và Kiểu dữ liệu sai [cột auralin và novodra] và Chữ 'u' ở liều bắt đầu và liều kết thúc cho Auralin và Novodra. Tôi sẽ chuyển đổi giới tính và trạng thái được chỉ định thành các loại dữ liệu phân loại. Loại dữ liệu mã zip đã được giải quyết ở trên. Tôi sẽ chuyển đổi kiểu dữ liệu ngày sinh thành ngày giờ. Tách chữ 'u' ở liều bắt đầu và liều kết thúc và chuyển đổi các cột đó thành kiểu dữ liệu số nguyên
Có nhiều định dạng số điện thoại. Tôi sẽ loại bỏ tất cả “ “, “-”, “[“, “]”, và “+” và lưu trữ từng số mà không có bất kỳ định dạng nào. Tôi sẽ đệm số điện thoại bằng số 1 nếu độ dài của số là 10 chữ số
Tiếp theo, tôi sẽ xóa các bản ghi John Doe không thể phục hồi khỏi bảng patients
Có nhiều bản ghi cho Jakobsen, Gersten, Taylor,
Tôi sẽ loại bỏ các hàng Jake Jakobsen, Pat Gersten và Sandy Taylor khỏi bàn bệnh nhân. Đây là những biệt hiệu, cũng không có trong bảng điều trị [xóa tên sai sẽ tạo ra vấn đề nhất quán giữa bệnh nhân và bảng điều trị]. Đây là tất cả các lần xuất hiện thứ hai của bản sao. Đây cũng là lần xuất hiện duy nhất của các địa chỉ trùng lặp không rỗng
Ghi chú. Toán tử dấu ngã ~n là toán tử phủ định theo bit
Có một ví dụ về kg thay vì lbs cho trọng lượng của Zaitseva. Sử dụng lập chỉ mục nâng cao để tách riêng hàng có họ là Zaitseva và sau đó chuyển đổi mục nhập trong trường trọng lượng của nó từ kg sang lbs, chúng ta có
Auralin có hiệu quả không?
Sử dụng các số liệu chính để so sánh
Sau khi phân tích và làm sạch dữ liệu thử nghiệm lâm sàng, tôi đã sẵn sàng để xem Auralin, một loại insulin uống mới được đề xuất, so sánh với Novodra, một loại insulin tiêm như thế nào
Tác dụng phụ
Để Auralin vượt qua thử nghiệm lâm sàng Giai đoạn II này, nó phải được coi là an toàn và các phản ứng bất lợi đối với nó là đáng khích lệ
Những phản ứng bất lợi này trước đây là các bảng riêng biệt, nhưng tôi đã kết hợp chúng với bảng điều trị để có thể thực hiện phân tích này. Số lượng của từng tác dụng phụ rất giống nhau giữa hai loại thuốc Auralin và Novodra. Một ngoại lệ là Auralin, insulin uống, gây kích ứng cổ họng vì nó được dùng bằng đường uống và đi qua miệng trước khi đến dạ dày. Một tác dụng phụ khác của Novodra, một loại insulin tiêm, là cảm giác khó chịu tại chỗ tiêm, đây là tác dụng phụ nổi tiếng của insulin tiêm do kim tiêm. Đây là một trong những lý do chính cho sự phát triển của insulin đường uống.
Trong các biểu đồ thanh ngang này, số lượng hiển thị rõ hơn
Thay đổi liều insulin trung bình trước thử nghiệm sau thử nghiệm
Việc thay đổi liều lượng là rất quan trọng vì nếu loại insulin uống mới cần liều lượng cao hơn để có hiệu quả, nhà sản xuất có thể quyết định không đưa nó ra thị trường vì nó không khả thi về mặt thương mại
Thông tin về liều lượng được ẩn trong hai cột trong bảng điều trị, auralin và novodra, với liều bắt đầu và kết thúc trong mỗi cột và giá trị điều trị trong tiêu đề cột. Bằng cách trộn biến điều trị xuống cột riêng của nó, tôi có thể chuyển đổi điều này sang định dạng dễ đọc hơn và tách liều bắt đầu và liều kết thúc. Tôi đã có thể thực hiện phân tích thay đổi liều lượng trung bình nhờ điều này
Một lần nữa, kết quả của Auralin rất hứa hẹn. So với bệnh nhân Novodra, những người cần 0. Ít hơn 4 đơn vị insulin, những người được điều trị bằng Auralin trung bình cần thêm 8 đơn vị insulin để đạt được mức đường huyết ổn định, an toàn. Bởi vì tôi hiểu rằng insulin đường uống khó đi vào máu qua niêm mạc dạ dày hơn và tám đơn vị nữa không phải là vấn đề quan trọng, nên Auralin cần thêm 8 đơn vị nữa.
Trung bình thay đổi đơn vị insulin của Auralin và Novodra
Thay đổi HbA1c
Những thay đổi về HbA1 là một dấu ấn sinh học quan trọng trong việc kiểm soát bệnh tiểu đường.
Mức HbA1c trung bình trong thử nghiệm này là 7. 9%, vì vậy nếu chúng tôi có thể chứng minh rằng Auralin tạo ra mức giảm HbA1c tương đương với tiêu chuẩn insulin tiêm hiện tại, thì đó sẽ là một thành công.
Có thể sử dụng khoảng tin cậy để đo lường điều này, nhưng trước tiên chúng ta phải xác định sự khác biệt về giá trị trung bình.
Trước khi làm sạch
Novodra thể hiện một lợi thế lớn trong việc giảm HbA1C trước khi làm sạch, 0. 71 so với 0. 35 cho Auralin