Trích xuất dữ liệu json trong python

Nếu bạn đang làm bất cứ điều gì liên quan đến dữ liệu cho dù đó là Kỹ thuật dữ liệu, Phân tích dữ liệu hay thậm chí là Khoa học dữ liệu, chắc chắn bạn sẽ bắt gặp JSON

JSON [Ký hiệu đối tượng JavaScript] là một trong những định dạng dữ liệu được sử dụng nhiều nhất để trao đổi dữ liệu qua web. Cơ sở dữ liệu dựa trên NoSQL như MongoDB lưu trữ dữ liệu ở định dạng này. Mặc dù định dạng này hoạt động tốt để lưu trữ dữ liệu nhưng nó cần được chuyển đổi thành dạng bảng để phân tích thêm

Trong câu chuyện này, chúng ta sẽ thấy việc phân tích cú pháp dữ liệu JSON và chuyển đổi nó thành dạng bảng dễ dàng như thế nào. Bạn có thể tải xuống dữ liệu mẫu từ kho GitHub được đề cập bên dưới. Ngoài ra, hãy xem sổ ghi chép để biết thêm chi tiết về dữ liệu và API được sử dụng

ankitgoel1602/data-khoa học

Bạn không thể thực hiện hành động đó vào lúc này. Bạn đã đăng nhập bằng tab hoặc cửa sổ khác. Bạn đã đăng xuất trong một tab khác hoặc…

github. com

Chi tiết dữ liệu

Tôi sẽ sử dụng dữ liệu mà tôi đã tạo khi xử lý sự cố phân cụm Máy học. Không cần lo lắng nếu dữ liệu này không có ý nghĩa vì nó chỉ được sử dụng cho mục đích demo. Tôi sẽ sử dụng hai JSON khác nhau-

  1. JSON đơn giản không có danh sách/từ điển lồng nhau

Đây là JSON đã được làm phẳng và yêu cầu xử lý tối thiểu

Sample Record:
{
"Scaler": "Standard",
"family_min_samples_percentage": 5,
"original_number_of_clusters": 4,
"eps_value": 0.1,
"min_samples": 5,
"number_of_clusters": 9,
"number_of_noise_samples": 72,
"adjusted_rand_index": 0.001,
"adjusted_mutual_info_score": 0.009,
"homogeneity_score": 0.330,
"completeness_score": 0.999,
"v_measure_score": 0.497,
"fowlkes_mallows_score": 0.0282,
"silhouette_coefficient": 0.653,
"calinski_harabasz_score": 10.81,
"davies_bouldin_score": 1.70
}

2. JSON với danh sách/từ điển lồng nhau

Điều này có vẻ hơi phức tạp và nói chung, sẽ yêu cầu bạn viết một kịch bản để làm phẳng. Sau này, chúng ta sẽ xem cách nó có thể được chuyển đổi thành DataFrame chỉ với 1 dòng mã

Sample Record:
{
'Scaler': 'Standard',
'family_min_samples_percentage': 5,
'original_number_of_clusters': 4,
'Results':
[
{
'eps_value': 0.1,
'min_samples': 5,
'number_of_clusters': 9,
'number_of_noise_samples': 72,
'scores':
{
'adjusted_rand_index': 0.001,
'adjusted_mutual_info_score': 0.009,
'homogeneity_score': 0.331,
'completeness_score': 0.999,
'v_measure_score': 0.497,
'fowlkes_mallows_score': 0.028,
'silhouette_coefficient': 0.653,
'calinski_harabasz_score': 10.81,
'davies_bouldin_score': 1.70
}
},
{
'eps_value': 0.1,
'min_samples': 10,
'number_of_clusters': 6,
'number_of_noise_samples': 89,
'scores':
{
'adjusted_rand_index': 0.001,
'adjusted_mutual_info_score': 0.008,
'homogeneity_score': 0.294,
'completeness_score': 0.999,
'v_measure_score': 0.455,
'fowlkes_mallows_score': 0.026,
'silhouette_coefficient': 0.561,
'calinski_harabasz_score': 12.528,
'davies_bouldin_score': 1.760
}
}
]
}

Gấu trúc read_json[]

API này từ Pandas giúp đọc dữ liệu JSON và hoạt động hiệu quả đối với dữ liệu đã được làm phẳng như chúng ta có trong Ví dụ 1. Bạn có thể tải xuống JSON từ đây

# Reading JSON
pd.read_json['level_1.json']

Chỉ cần đọc JSON đã chuyển đổi nó thành một bảng phẳng bên dưới

Làm phẳng dữ liệu bằng cách sử dụng read_json[] của Tác giả

Nó không hoạt động tốt khi dữ liệu JSON ở dạng bán cấu trúc. e. chứa danh sách lồng nhau hoặc từ điển như chúng ta có trong Ví dụ 2

# Example 2 JSON
pd.read_json['multiple_levels.json']

Sau khi đọc JSON này, chúng ta có thể thấy bên dưới danh sách lồng nhau của chúng ta được đưa vào một cột duy nhất 'Kết quả'. Trong phần tiếp theo, chúng ta sẽ xem cách chúng ta có thể làm phẳng dữ liệu này

Nguồn. Hình ảnh của tác giả

Gấu trúc json_normalize[]

API này được thiết kế chủ yếu để chuyển đổi dữ liệu JSON bán cấu trúc thành bảng phẳng hoặc DataFrame. Bạn có thể tải xuống ví dụ JSON từ đây

# load data using Python JSON module
with open['multiple_levels.json','r'] as f:
data = json.loads[f.read[]]
# Normalizing data
multiple_level_data = pd.json_normalize[data, record_path =['Results'], meta =['original_number_of_clusters','Scaler','family_min_samples_percentage'], meta_prefix='config_params_', record_prefix='dbscan_']
# Saving to CSV format
multiple_level_data.to_csv['multiplelevel_normalized_data.csv', index=False]

Làm phẳng dữ liệu bằng cách sử dụng json_normalize[] của Tác giả

Bây giờ, hãy hiểu 1 dòng ma thuật mà tôi đã sử dụng ở đây để chuyển đổi JSON sang bảng phẳng. API này cung cấp các tham số khác nhau và bạn có thể đọc thêm về chúng tại đây. Ở đây chúng tôi đã sử dụng-

  • record_path
  • bản ghi_prefix
  • meta
  • meta_prefix

Hãy đi qua từng cái một

record_path

Đây là đường dẫn đến mảng hoặc danh sách lồng nhau mà chúng tôi muốn làm phẳng. Trong ví dụ của chúng tôi, đó là 'Kết quả' có nhiều từ điển lồng nhau chứa siêu tham số thuật toán và điểm số

bản ghi_prefix

Theo mặc định, json_normalize sẽ nối thêm tiền tố [chuỗi] cho các từ điển lồng nhau dựa trên dữ liệu gốc như trong ví dụ của chúng tôi davies_bouldin_score được chuyển đổi thành điểm số. davies_bouldin_score. Đối với danh sách lồng nhau, chúng ta có thể sử dụng record_prefix để nối vào dữ liệu đã được làm phẳng. Trong ví dụ của chúng tôi, mỗi giá trị trong danh sách 'Kết quả' có liên quan đến thuật toán DBSCAN và do đó chúng tôi có thể nối thêm giá trị tương tự[dbscan_]. Điều này sẽ chuyển đổi điểm số. davies_bouldin_score đến dbscan_scores. davies_bouldin_score

meta

Tham số này giúp thêm siêu dữ liệu với mỗi bản ghi vào bảng kết quả. Ở đây, siêu dữ liệu sẽ nằm ngoài record_path i. e. Công cụ chia tỷ lệ, original_number_of_clusters hoặc family_min_samples_percentage

meta_prefix

Tương tự như record_prefix, meta_prefix sẽ nối chuỗi vào siêu dữ liệu được xác định là một phần của 'meta'. Trong ví dụ của chúng tôi, tất cả siêu dữ liệu có liên quan đến tham số cấu hình cho vấn đề ML của chúng tôi và do đó chúng tôi đã thêm 'config_params_' vào từng siêu dữ liệu

Tôi hy vọng bài viết này sẽ hữu ích trong lần tiếp theo bạn xử lý dữ liệu JSON. Tôi đã từng viết các tập lệnh python để làm phẳng dữ liệu hoặc sử dụng các gói khác nhau mà tôi sẽ mất cả ngày để tìm ra mọi thứ và bây giờ chỉ cần 10 giây. Nếu bạn quan tâm đến Khoa học dữ liệu hoặc muốn tìm hiểu về một số thư viện python thú vị, hãy xem blog khác của tôi- Bắt đầu hành trình Khoa học dữ liệu của bạn ngay hôm nay

Làm cách nào để trích xuất dữ liệu từ dữ liệu JSON trong Python?

Bạn gọi dữ liệu JSON bằng Python như thế nào? .
Tạo một tệp Python mới nhập JSON
Tạo một từ điển ở dạng chuỗi để sử dụng làm JSON
Sử dụng mô-đun JSON để chuyển đổi chuỗi của bạn thành từ điển
Viết một lớp để tải dữ liệu từ chuỗi của bạn
Khởi tạo một đối tượng từ lớp của bạn và in một số dữ liệu từ nó

Làm cách nào để trích xuất một trường từ JSON trong Python?

Làm cách nào để trích xuất dữ liệu cụ thể từ tệp JSON? . Hàm json_extract lấy cột chứa chuỗi JSON và tìm kiếm nó bằng cách sử dụng biểu thức giống như JSONPath với dấu chấm. use the json_extract function as in the following example. The json_extract function takes the column containing the JSON string, and searches it using a JSONPath -like expression with the dot .

Làm cách nào để đọc các giá trị JSON trong Python?

Python có một mô-đun tích hợp cho phép bạn làm việc với dữ liệu JSON. Ở đầu tệp của bạn, bạn sẽ cần nhập mô-đun json. Nếu bạn cần phân tích một chuỗi JSON trả về một từ điển, thì bạn có thể sử dụng json. phương thức load[] .

Làm cách nào để lấy dữ liệu từ tệp JSON?

Mã jQuery sử dụng phương thức getJSON[] để tìm nạp dữ liệu từ vị trí của tệp bằng yêu cầu AJAX HTTP GET . Phải mất hai đối số. Một là vị trí của tệp JSON và một là hàm chứa dữ liệu JSON. Hàm each[] dùng để lặp qua tất cả các đối tượng trong mảng.

Chủ Đề