Tự động xác thực dữ liệu bằng python

Một lỗi vô tình hoặc cố ý trong một chương trình có thể ngăn chương trình hoạt động bình thường hoặc thậm chí làm hỏng dữ liệu. Vì vậy, làm thế nào bạn có thể kiểm tra?

Xác thực dữ liệu là khi một chương trình kiểm tra dữ liệu để đảm bảo dữ liệu đáp ứng một số quy tắc hoặc hạn chế. Có nhiều kiểm tra xác thực dữ liệu khác nhau có thể được thực hiện. Ví dụ: chúng tôi có thể kiểm tra xem dữ liệu

  • Là loại dữ liệu chính xác, ví dụ như một số và không phải là một chuỗi
  • Không có giá trị không hợp lệ, chẳng hạn như mã zip được cung cấp có một chữ cái
  • Không nằm ngoài phạm vi, chẳng hạn như tuổi được cung cấp dưới dạng số âm hoặc có phép chia cho 0
  • Đáp ứng các ràng buộc, ví dụ: ngày nhất định chỉ có thể là trong tương lai hoặc tin nhắn không vượt quá độ dài tối đa
  • Nhất quán với các dữ liệu hoặc ràng buộc khác, ví dụ như điểm kiểm tra của học sinh và điểm viết của học sinh là nhất quán
  • Là hợp lệ, chẳng hạn như tên tệp đã cho là dành cho một tệp hiện có
  • Đã hoàn tất, chẳng hạn như đảm bảo tất cả các trường biểu mẫu bắt buộc đều có dữ liệu

Nơi chúng tôi kiểm tra dữ liệu phụ thuộc vào chương trình, nhưng đây là một số manh mối

  • Bất cứ khi nào chúng tôi nhận được đầu vào trực tiếp từ người dùng, hãy kiểm tra loại dữ liệu và phạm vi hợp lệ

  • Khi mã của chúng tôi được chứa trong thư viện nơi mọi người có thể sử dụng mã, hãy kiểm tra tất cả đầu vào cho tất cả các phương thức để người gọi không thể làm hỏng hoặc phá mã của chúng tôi

  • Bất cứ khi nào người gọi thay đổi thuộc tính lớp, hãy kiểm tra để đảm bảo rằng giá trị có thể thay đổi và giá trị mới hợp lệ

Đã xảy ra lỗi khi tải video này

Hãy thử làm mới trang hoặc liên hệ với bộ phận hỗ trợ khách hàng

Bạn phải cC tạo một tài khoản để tiếp tục xem

Đăng ký để xem bài học này

Bạn là học sinh hay giáo viên?

tôi là học sinh tôi là giáo viên

Tạo tài khoản của bạn để tiếp tục xem

Là thành viên, bạn cũng sẽ có quyền truy cập không giới hạn vào hơn 84.000 bài học về toán, tiếng Anh, khoa học, lịch sử, v.v. Ngoài ra, nhận các bài kiểm tra thực hành, câu đố và huấn luyện được cá nhân hóa để giúp bạn thành công

Nhận quyền truy cập không giới hạn vào hơn 84.000 bài học

Thử ngay bây giờ

Chỉ mất vài phút để thiết lập và bạn có thể hủy bất cứ lúc nào

Đã đăng ký?

Tài nguyên do giáo viên tạo ra cho giáo viên

Hơn 30.000 bài học video & tài nguyên giảng dạy‐tất cả ở một nơi.

bài học video

Câu đố và Bảng tính

Tích hợp lớp học

kế hoạch bài học

Tôi chắc chắn sẽ giới thiệu Study. com đến các đồng nghiệp của tôi. Nó giống như một giáo viên vung cây đũa thần và làm việc cho tôi. Tôi cảm thấy như đó là một cứu cánh

Phần lớn dữ liệu mở trên web được xuất bản ở định dạng CSV hoặc Excel. Thật không may, nó thường lộn xộn và có thể yêu cầu thao tác đáng kể để thực sự có thể sử dụng được. Trong bài đăng này, tôi hướng dẫn quy trình làm việc để tự động xác thực dữ liệu trên mỗi bản cập nhật cho kho lưu trữ dùng chung lấy cảm hứng từ các thực tiễn hiện có trong phát triển phần mềm và được hỗ trợ bởi các công cụ và tiêu chuẩn Dữ liệu không ma sát

Các dự án phần mềm từ lâu đã được hưởng lợi từ các dịch vụ Tích hợp liên tục như Travis CI và các dịch vụ khác để đảm bảo và duy trì chất lượng mã. Tích hợp liên tục là một quá trình trong đó tất cả các thử nghiệm được chạy tự động và một báo cáo được tạo trên mỗi bản cập nhật [“cam kết”] đối với kho lưu trữ dùng chung của dự án. Điều này cho phép các nhà phát triển tìm và giải quyết lỗi một cách nhanh chóng và đáng tin cậy. Ngoài ra, bằng cách hiển thị “trạng thái xây dựng”, những người khác bên ngoài dự án có thể thấy rõ trạng thái tuân thủ thử nghiệm của dự án

Đối với phần mềm, các bộ dữ liệu thường được cộng tác tạo, chỉnh sửa và cập nhật theo thời gian, đôi khi gây ra các lỗi sơ đồ và cấu trúc tinh vi [hoặc không quá tinh vi] [xem Dữ liệu Xấu để biết ví dụ]. Phần lớn "ma sát" trong việc sử dụng dữ liệu đến từ thời gian và nỗ lực cần thiết để xác định và giải quyết các lỗi này trước khi phân tích trong một công cụ nhất định. Tự động gắn cờ các vấn đề về chất lượng dữ liệu tại thời điểm tải lên trong kho lưu trữ có thể góp phần làm cho dữ liệu trở nên hữu ích hơn và có tác dụng tiếp theo đáng kể trong hệ sinh thái dữ liệu, cả mở và đóng

Tích hợp dữ liệu liên tục

Khi hệ sinh thái tiêu chuẩn và công cụ Dữ liệu không ma sát tiếp tục phát triển, giờ đây chúng tôi có các yếu tố cần thiết để cung cấp cho người quản lý dữ liệu cùng loại dịch vụ cho dữ liệu dạng bảng [e. g. Excel và CSV]. Trong vòng chưa đầy một giờ, một số người trong chúng tôi tại Kiến thức Mở đã khởi động một bản trình diễn nhỏ để cho thấy việc tích hợp dữ liệu liên tục có thể trông như thế nào. Trên mỗi cam kết với kho lưu trữ ví dụ của chúng tôi, một tập hợp các kiểm tra xác thực được chạy trên dữ liệu, đưa ra một ngoại lệ nếu dữ liệu không hợp lệ. Nếu người dùng thêm dữ liệu "xấu", thì "bản dựng" sẽ không thành công và đưa ra báo cáo cho biết điều gì đã xảy ra

Ví dụ: CSV sau có một vài vấn đề với các giá trị của nó. Trong lược đồ chúng tôi xác định trong tệp datapackage.json bên dưới [i. e. đối tượng mà schema trỏ tới], chúng tôi đã xác định loại cột “Số” thành number và loại cột Ngày thành date. Tuy nhiên, CSV chứa các giá trị không hợp lệ cho các loại đó. “x23. 5” và “2015-02” tương ứng

CSV

Date,Country,Number
2015-01-01,3,20.3
2015-02-01,United States,23.5
2015-02,United States,x23.5

gói dữ liệu. json

{
  "name": "fd-continuous-data-integration",
  "title": "",
  "resources": [
    {
      "name": "data",
      "path": "data/data.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "schema": {
        "fields": [
          {
            "name": "Date",
            "type": "date",
            "description": ""
          },
          {
            "name": "Country",
            "type": "string",
            "description": ""
          },
          {
            "name": "Number",
            "type": "number",
            "description": ""
          }
        ]
      }
    }
  ]
}

Khi chúng tôi cố gắng thêm dữ liệu không hợp lệ này vào kho lưu trữ, báo cáo sau được tạo

+----------------+------------------------------------------------------------+
| result_name    | result_message                                             |
+================+============================================================+
| Incorrect Type | The value "2015-02" in column "Date" is not a valid Date.  |
+----------------+------------------------------------------------------------+
| Incorrect Type | The value "x23.5" in column "Number" is not a valid Number.|
+----------------+------------------------------------------------------------+

Làm thế nào nó hoạt động

Tệp mô tả gói dữ liệu, gói dữ liệu. json, cung cấp cả siêu dữ liệu cấp cao cũng như lược đồ cho dữ liệu dạng bảng. Chúng tôi sử dụng gói dữ liệu thư viện Python-py để tạo mô hình cấp cao của Gói dữ liệu cho phép chúng tôi kiểm tra và làm việc với dữ liệu bên trong. Công việc thực sự được hoàn thành bằng GoodTables

Trước đây chúng tôi đã viết blog về việc sử dụng Bảng tốt để xác thực dữ liệu dạng bảng của mình. Trên mỗi lần cập nhật, hai chức năng kiểm tra nhỏ đọc datapackage.json để đọc và xác thực dữ liệu dạng bảng có trong đó theo cấu trúc của nó và tuân theo lược đồ. Đây là lần đầu tiên

def test_schema[self]:
    # We heart CSV :]

    data_format = 'csv'

    # Load our Data Package path and schema

    data = dp.metadata['resources'][0]['path']
    schema = dp.metadata['resources'][0]['schema']

    # We use the "schema" processor to test the data against its
    # expected schema.  There is also a "structure" processor.

    processor = processors.SchemaProcessor[schema=schema,
        format=data_format,
        row_limit=row_limit,
        report_limit=report_limit]
    valid, report, data = processor.run[data]

    # Various formatting options for our report follow.  

    output_format = 'txt'
    exclude = ['result_context', 'processor', 'row_name',
               'result_category', 'column_name', 'result_id',
               'result_level']

    # And here's our report!

    out = report.generate[output_format, exclude=exclude]

    self.assertTrue[valid, out]

Để biết thêm thông tin, hãy đọc hướng dẫn về dữ liệu không ma sát. io về xác thực dữ liệu. Đằng sau hậu trường, đây chỉ là một cấu hình Travis CI bình thường [xem. travis. yml]

Tự mình thử

Ví dụ của chúng tôi dựa trên GitHub làm cơ chế lưu trữ dữ liệu và Travis CI làm máy chủ để xác thực thực tế. Tuy nhiên, cách tiếp cận này được áp dụng rộng rãi cho mọi phụ trợ lưu trữ và xử lý với một số điều chỉnh bổ sung [e. g. sử dụng AWS Lambda và S3]

Kiểm tra kho lưu trữ tích hợp dữ liệu liên tục cũ trên tổ chức dữ liệu không ma sát của chúng tôi trên GitHub để xem cách bạn có thể thử điều này với dữ liệu của riêng mình. Hãy cho chúng tôi biết nó hoạt động như thế nào trên kênh trò chuyện của chúng tôi

Bình luận

Vui lòng kích hoạt JavaScript để xem các bình luận được cung cấp bởi Disqus

Chúng tôi tạo ra các công cụ, ứng dụng và thông tin chi tiết bằng nội dung mở Tham gia »

Theo dõi @okfnlabs

Đăng ký RSS

Các dự án liên quan

Trình quản lý gói dữ liệu

Dữ liệu ma sát

Mira

Bài viết gần đây

  • Giới thiệu về Thống kê với Gói dữ liệu và Gonum

    01 Th08 2019

    Sau 6 năm làm việc tại Google, Daniel Fireman hiện là tiến sĩ. D. sinh viên, giáo sư và nhà hoạt động vì sự minh bạch và trách nhiệm giải trình của chính phủ

  • Thông báo datapackage-pipelines phiên bản 2. 0

    18 Thg 10 2018

    Hôm nay, chúng tôi sẽ phát hành phiên bản chính cho đường ống gói dữ liệu, phiên bản 2. 0. 0. Phiên bản mới này đánh dấu một bước tiến lớn trong việc hiện thực hóa

  • Data Factory & DataFlows - Hướng dẫn

    30 Thg 8 2018

    Data Factory là một khung mở để xây dựng và chạy quy trình xử lý dữ liệu nhẹ một cách nhanh chóng và dễ dàng. Chúng tôi khuyên bạn nên đọc

  • Data Factory & DataFlows - Giới thiệu

    29 Thg 8 2018

    Hôm nay tôi muốn giới thiệu một thư viện mới mà chúng tôi đang làm việc - dataflows. DataFlows là một phần của

  • Xử lý các gói dữ liệu dạng bảng trong Clojure

    07 Tháng năm 2018

    Matt Thompson là một trong những người được cấp Quỹ công cụ dữ liệu Frictionless năm 2017 được giao nhiệm vụ mở rộng triển khai dữ liệu Frictionless Data cốt lõi

  • Xử lý các gói dữ liệu dạng bảng trong Java

    28 Th04 2018

    Georges Labrèche là một trong những người được cấp Quỹ công cụ dữ liệu không ma sát năm 2017 được giao nhiệm vụ mở rộng triển khai các thư viện Dữ liệu không ma sát cốt lõi

    Trăn Pandera là gì?

    Pandera là giao diện lập trình ứng dụng nguồn mở [API] trong python . Nó là một API linh hoạt và biểu cảm để làm sai lệch để có thể xây dựng một đường dẫn dữ liệu chặt chẽ và mạnh mẽ.

    Tại sao xác thực dữ liệu lại quan trọng trong python?

    Tầm quan trọng của việc xác thực dữ liệu . provides accuracy, cleanness, and completeness to the dataset by eliminating data errors from any project to ensure that the data is not corrupted.

    Xác thực đầu vào trong python là gì?

    Mã xác thực đầu vào kiểm tra xem các giá trị do người dùng nhập, chẳng hạn như văn bản từ hàm input[], có được định dạng chính xác không .

    Công cụ nào được sử dụng để xác thực dữ liệu?

    FME để xác thực dữ liệu . Bạn có thể tạo các quy trình công việc dành riêng cho xác thực dữ liệu hoặc thêm xác thực dữ liệu dưới dạng một bước trong các quy trình công việc tích hợp dữ liệu khác.

Chủ Đề