Giả sử tôi có một. csv theo định dạng này. Tên, Mức lương, Bộ phận, Cướp bắt buộc, 5500, Hàng không, Có Bob, 1000, Cơ sở vật chất, Không Tom, 6000, CNTT, Có Sau khi xuất nội dung này sang pandas/modin, tôi muốn
Đầu ra của DataFrame gấu trúc của bạn có thể không giống như những gì bạn mong đợi do lỗi trong mã của bạn hoặc thay đổi về định dạng dữ liệu. Việc sử dụng dữ liệu khác với những gì bạn mong đợi có thể gây ra lỗi hoặc dẫn đến giảm hiệu suất
Vì vậy, điều quan trọng là phải xác thực dữ liệu của bạn trước khi sử dụng. Một công cụ tốt để xác thực DataFrame của gấu trúc là pandera. Pandara rất dễ đọc và sử dụng
Bạn cũng có thể sử dụng công cụ trang trí của gấu trúc
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
1để xác thực DataFrame của gấu trúc đầu vào trước khi nhập hàm. Kiểm tra ví dụ trên Quy trình công việc phân tích và kỹ thuật dữ liệu hiện đại thường sẽ liên quan đến việc sử dụng các thư viện thao tác dữ liệu, trong vũ trụ Python, sẽ là các công cụ như gấu trúc. Một vấn đề mà bạn có thể gặp phải với công cụ thao tác dữ liệu mạnh mẽ này là khung dữ liệu có thể là một đối tượng không rõ ràng khó giải thích về nội dung, kiểu dữ liệu và các thuộc tính khác của nó
Một công cụ có thể giúp bạn giải quyết vấn đề này là pandera, được pyOpenSci chấp nhận như một phần của hệ sinh thái các gói vào tháng 9 năm 2019. Pandera cung cấp bộ công cụ xác thực dữ liệu linh hoạt và biểu cảm giúp người dùng đưa ra các xác nhận thống kê về cấu trúc dữ liệu của gấu trúc
Bộ công cụ xác thực dữ liệu thống kê cho gấu trúc
Để minh họa khả năng của
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
0, hãy sử dụng một ví dụ về đồ chơi nhỏ. Giả sử bạn đang phân tích dữ liệu để biết một số thông tin chi tiết trong ngữ cảnh của một dự án quan trọng, trong đó điều quan trọng là phải đảm bảo chất lượng của các bộ dữ liệu mà bạn đang xem xétMỗi hàng trong tập dữ liệu được xác định duy nhất bởi một
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
1 và mỗi cột mô tả các height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
2 và height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
3 của người đóimport pandas as pd
dataset = pd.DataFrame[
data={
"height_in_cm": [150, 145, 122, 176, 137, 151],
"age_category": ["20-30", "10-20", "10-20", "20-30", "10-20", "20-30"],
},
index=pd.Series[[100, 101, 102, 103, 104, 105], name="person_id"],
]
print[dataset]
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
Bạn muốn đảm bảo rằng một số cột có kiểu dữ liệu chính xác hoặc tập dữ liệu đáp ứng các thuộc tính thống kê nhất định. Pandara cho phép bạn xác thực DataFrame để đảm bảo rằng các điều kiện này được đáp ứng. Nó cho phép bạn dành ít thời gian hơn để lo lắng về tính chính xác của dữ liệu của DataFrame để bạn có thể đưa ra các giả định đúng khi phân tích dữ liệu đó
Kiểm tra sự hiện diện và loại cột
Loại lược đồ cơ bản nhất là loại đơn giản kiểm tra xem các cột cụ thể có tồn tại với các kiểu dữ liệu cụ thể không
import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
Đối tượng
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
4 có thể gọi được, vì vậy bạn có thể xác thực tập dữ liệu bằng cách chuyển nó làm đối số cho lệnh gọi height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
4. Nếu khung dữ liệu vượt qua xác thực lược đồ, height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
4 chỉ cần trả về khung dữ liệuNếu không, nó sẽ cung cấp các thông báo lỗi hữu ích
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
0 height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
1Kiểm tra thống kê cơ bản
Nếu bạn muốn đưa ra các khẳng định chặt chẽ hơn về các thuộc tính thực nghiệm của tập dữ liệu, chúng ta có thể cung cấp đối số từ khóa
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
7 cho các hàm tạo và có một hoặc danh sách các import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
0 height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
4Đối tượng
import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
0 chỉ định cách triển khai chính xác cách xác thực cột hoặc chỉ mục. Đối số vị trí đầu tiên trong hàm tạo của nó có thể gọi được với chữ ký height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
6Lưu ý rằng ràng buộc duy nhất đối với khả năng gọi được là lấy
import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
3 làm đầu vào và trả về một chuỗi boolean hoặc boolean. Theo thiết kế, kiểm tra có quyền truy cập vào toàn bộ gấu trúc import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
3 API để đưa ra xác nhận về các thuộc tính của một cột hoặc chỉ mục cụ thểThông báo lỗi được lập chỉ mục
Trong trường hợp
import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
0 trả về giá trị boolean import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
3, các vi phạm lược đồ được báo cáo theo vị trí chỉ mục của các trường hợp lỗi height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
1 height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
2Lỗi được báo cáo dưới dạng một khung dữ liệu được xâu chuỗi trong đó chỉ mục
import pandera as pa
schema = pa.DataFrameSchema[
columns={
"height_in_cm": pa.Column[pa.Int],
"age_category": pa.Column[pa.String],
},
index=pa.Index[pa.Int, name="person_id"],
]
schema[dataset]
7 liệt kê các trường hợp của giá trị height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
2 không xác thực được dữ liệu, cột height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
1 là vị trí chỉ mục của trường hợp lỗi và cột height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
00 hiển thị số lượng trường hợp của một trường hợp lỗi cụ thểKiểm tra giả thuyết thống kê
Điều gì sẽ xảy ra nếu chúng ta muốn kiểm tra giả thuyết rằng người lớn tuổi có xu hướng cao hơn?
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
8Xác thực Pandas Dataframes của bạn ngay hôm nay
Cho dù bạn sử dụng công cụ này trong sổ ghi chép Jupyter, tập lệnh một lần, mã đường ống ETL hay kiểm tra đơn vị, thì
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
0 đều cho phép bạn làm cho mã gấu trúc dễ đọc và mạnh mẽ hơn bằng cách thực thi các thuộc tính xác định và thống kê của cấu trúc dữ liệu gấu trúc trong thời gian chạyHy vọng rằng bài đăng này đã mang đến cho bạn hương vị của những gì
height_in_cm age_category
person_id
100 150 20-30
101 145 10-20
102 122 10-20
103 176 20-30
104 137 10-20
105 151 20-30
0 có thể làm. Nó cung cấp thêm một vài tính năng mà bạn có thể thấy hữu ích- Xác thực giản đồ sê-ri
- Kiểm tra trang trí đầu vào/đầu ra
Cái gì tiếp theo?
Tôi đang tích cực phát triển dự án này và sắp có một số tính năng thú vị, chẳng hạn như kiểm tra tích hợp, hỗ trợ Dask hạng nhất và đặc tả lược đồ yaml. Nếu bạn muốn đóng góp cho dự án này, bạn có thể truy cập repo github