Danh sách JSON sang CSV Python

JSON [Ký hiệu đối tượng JavaScript] là một công cụ lưu trữ và truyền dữ liệu phổ biến được sử dụng trong nhiều chương trình phía máy chủ. Python hỗ trợ JSON bằng cách sử dụng gói dựng sẵn có tên là json. Chúng tôi có thể chuyển đổi cấu trúc JSON thành cấu trúc văn bản được phân cách bằng dấu phẩy. Trong bài viết này, bạn sẽ tìm hiểu về các phương pháp khác nhau để chuyển đổi cấu trúc JSON sang CSV

Tệp CSV là gì?

CSV [Giá trị được phân tách bằng dấu phẩy] là định dạng tệp được sử dụng để lưu trữ dữ liệu theo kiểu bảng. Cấu trúc của tệp CSV có thể được diễn giải ở định dạng bảng tính hoặc cơ sở dữ liệu. Nó có thể lưu trữ dữ liệu ở dạng văn bản thuần túy [thường là kiểu dữ liệu chuỗi & số]. Mỗi dòng của một. tệp csv xác định bản ghi dữ liệu. Bản ghi sẽ chứa một hoặc nhiều trường có giá trị được phân tách bằng dấu phẩy

Chuyển đổi JSON sang CSV

Dữ liệu JSON thường chứa dữ liệu theo cặp khóa-giá trị. Các khóa này sẽ là tiêu đề cho tệp CSV và các giá trị dưới dạng dữ liệu mô tả vẫn được thụt vào trong json

Phương pháp 1. Sử dụng mô-đun CSV

Đây là một mô-đun Python tích hợp triển khai các lớp để đọc và ghi dữ liệu dạng bảng trong cấu trúc CSV. Sử dụng điều này, các lập trình viên có thể ghi dữ liệu này ở định dạng được Excel phê duyệt hoặc đọc dữ liệu từ tệp excel hoặc CSV. Các lập trình viên và nhà phát triển cũng có thể trình bày các định dạng CSV được các ứng dụng khác nhận dạng hoặc xác định các định dạng CSV có mục đích đặc biệt của họ. Đây là mô-đun được sử dụng rộng rãi nhất. Vì là mô-đun tích hợp nên bạn không cần cài đặt riêng

Chương trình

import json
import csv

# Open the JSON file & load its data
with open['data_file.json'] as dat_file:
    data = json.load[dat_file]
stud_data = data['stud_details']
 
# Opening a CSV file for writing in write mode
data_file = open['data_file.csv', 'w'] 
csv_writer = csv.writer[data_file]

count = 0 
for cnt in stud_data:
    if count == 0:
        header = cnt.keys[]
        csv_writer.writerow[header]
        count += 1
    csv_writer.writerow[cnt.values[]]
data_file.close[]

Giải trình

Đầu tiên, chúng tôi sẽ nhập các mô-đun json và csv. Tiếp theo, chúng tôi sẽ mở tệp JSON và tải dữ liệu của nó vào đối tượng 'dữ liệu'. Tiếp theo, chúng ta phải mở tệp CSV để ghi ở chế độ ghi. Chúng tôi đã gán biến đếm bằng 0. Sau đó, sử dụng vòng lặp for để lấy dữ liệu từ stud_data. Bây giờ, chỉ định cnt. keys[] trong tiêu đề. Cung cấp csv_writer. writerow[] và chuyển tiêu đề làm đối số. Khi bạn đếm các giá trị, bạn nên đóng data_file. đóng lại[]

Phương pháp 2. Sử dụng thư viện Pandas

Nó là một công cụ phân tích dữ liệu nguồn mở nhanh, linh hoạt, mạnh mẽ và dễ triển khai được phát triển trên ngôn ngữ Python. Đây là một thư viện phân tích và thao tác dữ liệu hoạt động tốt với các cuộc hội thoại và các tệp khác nhau như CSV, JSON, v.v. Ở đây, chúng tôi sẽ sử dụng phương thức to_scv[] để chuyển đổi tệp sang CSV

Chương trình

import pandas as pd
from pathlib import Path
import json

# absolute path to json file
jsonpath = Path['file.json']

# reading the json file
with jsonpath.open['r', encoding='utf-8'] as dat_f:
    dat = json.loads[dat_f.read[]]

# creating the dataframe
df = pd.json_normalize[dat]

# converted a file to csv
df.to_csv['datafile.csv', encoding='utf-8', index=False]

Giải trình

Đầu tiên, chúng ta sẽ nhập thư viện pandas, đường dẫn và mô-đun json. Tìm nạp đường dẫn tệp json bằng hàm tạo Path[] và gán nó cho đối tượng jsonpath. Tiếp theo, bạn phải đọc tệp json và gán nó cho đối tượng 'dat'. Sau đó, tạo Dataframe bằng phương thức json_normalize[] và chuyển đối tượng 'dat' vào đó làm tham số. Cuối cùng, chuyển đổi df. to_csv[] để chuyển đổi đối tượng khung dữ liệu sang định dạng csv với tên tệp 'datafile. csv', có lược đồ mã hóa là UTF-8 và lập chỉ mục là Sai

Phần kết luận

Cả hai phương pháp này đều được sử dụng để chuyển đổi cấu trúc JSON thành tệp CSV. Nhưng sử dụng mô-đun CSV có lợi vì đây là mô-đun tích hợp và do đó nhẹ hơn so với thư viện Pandas. Ngoài ra, việc chuyển đổi khung dữ liệu mất nhiều thời gian hơn khiến nó trở nên phức tạp. Do đó, phương pháp đầu tiên nên được ưu tiên

Trong hướng dẫn này, trước tiên, chúng tôi sẽ chuyển đổi nhiều tệp JSON lồng nhau thành CSV bằng cách sử dụng các mô-đun sẵn có của Python có tên là json và csv bằng các bước sau, sau đó sử dụng Python Pandas. -

  1. Trước hết, chúng tôi sẽ đọc tệp JSON bằng mô-đun JSON
  2. Sau đó, chúng tôi sẽ tạo một danh sách dữ liệu mà chúng tôi muốn trích xuất từ ​​​​từng tệp JSON
  3. Sau đó, chúng tôi sẽ ghi dữ liệu từ nhiều tệp JSON lồng nhau này vào tệp CSV bằng Mô-đun CSV

Bạn phải lưu ý rằng chúng tôi sẽ chuyển đổi nhiều tệp JSON lồng nhau thành tệp CSV

Chuyển đổi JSON sang CSV bằng các mô-đun sẵn có json và csv

Đọc trong tệp JSON

Vì vậy, tôi có một thư mục có tên là 'json_to_csv'. Thư mục này có một thư mục khác có tên là 'mô tả' trong đó, chứa nhiều tệp JSON lớn mà tôi cần phân tích cú pháp và chuyển đổi thành một CSV duy nhất. Chúng tôi sẽ sử dụng một mô-đun sẵn có gọi là mô-đun json

Đầu tiên, chúng tôi sẽ kiểm tra xem mỗi tệp JSON có gì. Tạo một cuộc gọi tệp Python 'json_to_csv. py’ trong thư mục cơ sở và viết đoạn mã sau. -

import json
from pprint import pprint
# we are using pprint for making the output more readable.
with open['descriptions/ISIC_0000000'] as f:
    data = json.load[f]
    pprint[data]

Dữ liệu đầu ra ở dạng với các phím. - ‘_id’, ‘_modelType’, ‘created’, ‘creator’, ‘dataset’, ‘meta’, ‘name’, ‘notes’, ‘updated’ và một số giá trị khác ở dạng JSON lồng nhau. Vì vậy, sử dụng hướng dẫn này, bạn có thể dễ dàng chuyển đổi tệp JSON lồng nhau thành tệp CSV. -

Chúng ta cần phân tích các cột sau từ tệp json lồng nhau này và chuyển đổi nó thành tệp csv. -

_id, _modelType, creator___id, creator__name, dataset___accessLevel, dataset___id, dataset__description, dataset__name, meta__acquisition__image_type, meta__acquisition__pixelsX, meta__acquisition__pixelsY, meta__clinical__age_approx, meta__clinical__benign_malignant, meta__clinical__diagnosis, meta__clinical__diagnosis_confirm_type, meta__clinical__melanocytic, meta__clinical__sex, meta__unstructured__diagnosis, meta__unstructured__race, name

Vì vậy, hãy tạo một 'đầu ra' trống. csv' và sao chép, dán dòng trên làm tiêu đề trong đó. -

$ nano output.csv

Chúng tôi sẽ biến nó thành một tập lệnh có thể sử dụng lại và do đó, chúng tôi sẽ không thực hiện bất kỳ mã hóa cứng nào cho nó. Chúng tôi sẽ sử dụng mô-đun os để duyệt qua các thư mục

Trước hết, chúng tôi sẽ lướt qua thư mục 'mô tả' và thêm tất cả các tệp [tên tệp] vào một danh sách. -

import os
import json
import csv

def get_list_of_json_files[]:
    list_of_files = os.listdir['descriptions']
    return list_of_files

Trích xuất dữ liệu mong muốn từ từng tệp JSON lồng nhau sang CSV

Bây giờ đối với mỗi tệp JSON lồng nhau, chúng tôi sẽ trích xuất dữ liệu của các cột có liên quan e. g. ‘_id’, ‘_modelType’. vân vân. và nối nó vào một danh sách mà sau này chúng tôi sẽ ghi vào một CSV. Chúng ta phải lưu ý rằng một số cột trong số này là khóa của JSON lồng nhau [từ điển cấp hai] như trong hình trên. Tạo chức năng sau. -

def create_list_from_json[jsonfile]:

    with open[jsonfile] as f:
        data = json.load[f]

    data_list = []  # create an empty list

    # append the items to the list in the same order.
    data_list.append[data['_id']]
    data_list.append[data['_modelType']]
    data_list.append[data['creator']['_id']]
    data_list.append[data['creator']['name']]
    data_list.append[data['dataset']['_accessLevel']]
    data_list.append[data['dataset']['_id']]
    data_list.append[data['dataset']['description']]
    data_list.append[data['dataset']['name']]
    data_list.append[data['meta']['acquisition']['image_type']] #here we are reading in the nested JSON
    data_list.append[data['meta']['acquisition']['pixelsX']]
    data_list.append[data['meta']['acquisition']['pixelsY']]
    data_list.append[data['meta']['clinical']['age_approx']]
    data_list.append[data['meta']['clinical']['benign_malignant']]
    data_list.append[data['meta']['clinical']['diagnosis']]
    data_list.append[data['meta']['clinical']['diagnosis_confirm_type']]
    data_list.append[data['meta']['clinical']['melanocytic']]
    data_list.append[data['meta']['clinical']['sex']]
    data_list.append[data['meta']['unstructured']['diagnosis']]
    # In few json files, the race was not there so using KeyError exception to add '' at the place
    try:
        data_list.append[data['meta']['unstructured']['race']]
    except KeyError:
        data_list.append[""]  # will add an empty string in case race is not there.
    data_list.append[data['name']]

    return data_list

Có một số điều cần lưu ý đối với đoạn mã trên. -

[i] Thứ tự của các cột phải được giữ chính xác như mong muốn ở đầu ra.
[ii] Đối với tệp JSON lồng nhau, bạn sẽ phải gọi tất cả các khóa [key1][key2][key3].
[iii] Khi xem xét kỹ lưỡng tệp json, tôi nhận thấy rằng có một số tệp không chứa '['meta']['unstructured']['race']' và do đó . Sử dụng KeyError Exception để cung cấp cho nó giá trị mong muốn trong kết quả. Tôi đã cho nó “” [một chuỗi trống] làm giá trị mặc định.

Ghi chú. - Chúng ta cũng có thể sử dụng. get [] để tránh các lỗi chính, cú pháp giống nhau là dữ liệu. lấy [khóa, giá_trị_mặc_định]

Bây giờ, nhiệm vụ cuối cùng. Chúng ta sẽ tạo một hàm write_csv[], hàm này sẽ mở 'đầu ra. csv’ ở chế độ chắp thêm, sau đó lặp qua nhiều tệp json lồng nhau này, tạo danh sách dữ liệu mong muốn rồi ghi vào tệp csv

Ghi dữ liệu từ nhiều tệp JSON vào tệp CSV

def write_csv[]:
    list_of_files = get_list_of_json_files[]
    for file in list_of_files:
        row = create_list_from_json[f'descriptions/{file}']  # create the row to be added to csv for each file [json-file]
        with open['output.csv', 'a'] as c:
            writer = csv.writer[c]
            writer.writerow[row]
        c.close[]

Và cuối cùng, chạy kịch bản. -

if __name__=="__main__":
    write_csv[]

Chúng tôi sẽ nhận được tệp CSV mong muốn trong tích tắc

Chuyển đổi JSON sang CSV bằng Pandas

Bạn có thể dễ dàng chuyển đổi tệp JSON phẳng sang CSV bằng mô-đun Python Pandas bằng các bước sau. -
1. Chúng tôi sẽ đọc tệp JSON bằng mô-đun json.
2. Làm phẳng tệp JSON bằng mô-đun json_normalize.
3. Chuyển đổi tệp JSON thành Pandas Dataframe.
4. Chuyển đổi Pandas Dataframe sang CSV, do đó chuyển đổi tệp JSON thành CSV.

Cài đặt gấu trúc

Như đã mô tả ở trên, chúng tôi sẽ sử dụng Pandas để chuyển đổi tệp JSON thành CSV, trước tiên chúng tôi sẽ cần cài đặt pandas. Nếu bạn chưa quen với Pandas, bạn có thể xem hướng dẫn cài đặt Pandas của chúng tôi

Đọc tệp JSON

Nói chung, các tệp JSON không ở định dạng đọc chúng trực tiếp vào Khung dữ liệu Pandas. Nói chung, một tệp có định dạng sau có thể được chuyển đổi trực tiếp thành khung dữ liệu gấu trúc. -

________số 8

Nhưng một tệp JSON chung có định dạng sau. -

{
    "fruit": "Apple",
    "size": "Large",
    "color": "Red"
}

Vì vậy, hãy đọc tệp JSON

import pandas as pd
from pathlib import Path
import json

# absolute path to json file
jsonpath = Path['file.json']

# reading the json file
with jsonpath.open['r', encoding='utf-8'] as dat_f:
    dat = json.loads[dat_f.read[]]

# creating the dataframe
df = pd.json_normalize[dat]

# converted a file to csv
df.to_csv['datafile.csv', encoding='utf-8', index=False]
0

Làm phẳng tệp JSON và chuyển đổi nó thành Pandas Dataframe

Chúng tôi sẽ sử dụng mô-đun json_normalize[] để làm phẳng tệp JSON và chuyển đổi nó thành Khung dữ liệu Pandas. Chúng ta hãy xem Pandas Dataframe

import pandas as pd
from pathlib import Path
import json

# absolute path to json file
jsonpath = Path['file.json']

# reading the json file
with jsonpath.open['r', encoding='utf-8'] as dat_f:
    dat = json.loads[dat_f.read[]]

# creating the dataframe
df = pd.json_normalize[dat]

# converted a file to csv
df.to_csv['datafile.csv', encoding='utf-8', index=False]
1

Chuyển đổi Pandas Dataframe thành tệp CSV, do đó chuyển đổi JSON thành CSV

Cuối cùng, chúng tôi sẽ chuyển đổi tệp JSON thành tệp CSV bằng Pandas. Khung dữ liệu. to_csv[] như bên dưới. -

$ nano output.csv

0

Chúng tôi đã sử dụng chỉ mục = Sai vì khi chúng tôi chuyển đổi tệp JSON của mình thành Khung dữ liệu Pandas, Pandas sẽ tự động cung cấp cho nó chỉ mục mặc định. Bạn có thể biết thêm về Chỉ mục Pandas hoặc xem video của chúng tôi về Chỉ mục Pandas

Chuyển đổi tệp JSON lồng nhau sang CSV bằng Python Pandas

Bạn cũng có thể chuyển đổi tệp JSON lồng nhau thành CSV bằng phương thức json_normalize[] của Python Pandas. Hãy thử chuyển đổi tệp JSON được sử dụng trong ví dụ trên sang csv

$ nano output.csv

1

Nếu bạn nhìn vào các cột, Python Pandas đã tự động làm phẳng JSON lồng nhau và Khung dữ liệu Pandas của chúng tôi chứa tất cả các giá trị cấp thấp nhất [ngay cả đối với các JSON lồng nhau]. Bây giờ chúng tôi sẽ loại bỏ các cột mà chúng tôi không cần sử dụng df. rơi vãi[]

$ nano output.csv

2

Và cuối cùng, chúng ta sẽ chuyển đổi JSON lồng nhau sang CSV bằng gấu trúc. Khung dữ liệu. to_csv[]

$ nano output.csv

3

Có thể tải xuống mã JSON TO CSV Python hoàn chỉnh từ GITHUB

Chúng tôi cần sự hỗ trợ của bạn để giữ cho máy chủ của chúng tôi hoạt động

Nếu bạn thích nội dung của chúng tôi và muốn giúp chúng tôi vận hành các máy chủ của mình, vui lòng đóng góp tại đây

Python एक वरह

ह ल में में एक त

तो, मेरे स ‘JSON_TO_CSV

Trong trường hợp này, bạn có thể json फ़ाइल में य् . py’ बनाएं और निम्नलिखित कोड लिखें. -

$ nano output.csv

4

Dữ liệu xuất Python की dictionary के रूप में है जिसकी keys. - ‘_id’, ‘_modelType’, ‘created’, ‘creator’, ‘dataset’, ‘meta’, ‘name’, ‘notes’, ‘updated’ ओर कुछ giá trị आगे từ điển lồng nhau के रूप में है. -

हमें json फाइल से csv फाइल में निम्नलिखित कॉलम निकालनेनेनॗनेनेनेनेनॗनेनेनेनॗन।. -

_id,_modelType,creator___id,creator__name,dataset___accessLevel,dataset___id,dataset__description,dataset__name,meta__acquisition__image_type,meta__acquisition__pixelsX,meta__acquisition__pixelsY,meta__clinical__age_approx,meta__clinical__benign_malignant,meta__clinical__diagnosis,meta__clinical__diagnosis_confirm_type,meta__clinical__melanocytic,meta__clinical__sex,meta__unstructured__diagnosis,meta__unstructured__race,name

तो एक खाली 'đầu ra. CSV xông फ़. -

$ nano output.csv

सबसे पहले हम 'mô tả' में से सभी tệp [tên tệp] की एक python लिस्ट बना लेंगग. -

$ nano output.csv

6

फिर हम ह ह एक एक एक में से हे . -

$ nano output.csv

7

उपरोक त कोड ब ें ें तों तों. -

[i] Cột उसी क्रम में रखें जैसा के हमें xuất फ़ाइल में चाहित

[ii] Các từ điển lồng nhau में, आपको keys को [key1][key2][key3] ऐसे कोल करना होगा।

.

नोट. - हम. phương thức get[] का इस्तमाल lỗi chính . get[key,default_value] है।

Vì vậy, tôi xin lỗi. . CSV xông को

Làm cách nào để chuyển đổi danh sách JSON sang CSV bằng Python?

Các bước chuyển đổi chuỗi JSON thành CSV bằng Python .
Bước 1. Chuẩn bị một chuỗi JSON. Để bắt đầu, hãy chuẩn bị một chuỗi JSON mà bạn muốn chuyển đổi sang CSV. .
Bước 2. Tạo tệp JSON. .
Bước 3. Cài đặt gói Pandas. .
Bước 4. Chuyển đổi Chuỗi JSON thành CSV bằng Python

Làm cách nào để chuyển đổi nhiều tệp JSON thành CSV bằng Python?

Bước 1. Tải các tệp json với sự trợ giúp của pandas dataframe
Bước 2. Nối các khung dữ liệu thành một khung dữ liệu
Bước 3. Chuyển đổi khung dữ liệu được nối thành tệp CSV

Làm cách nào để chuyển đổi dữ liệu JSON thành tệp CSV?

Chuyển đổi JSON sang CSV - Đây là cách. .
1 Tải lên tệp JSON của bạn. Duyệt qua máy tính của bạn để tìm tài liệu JSON mà bạn muốn chuyển đổi thành tệp CSV. .
2 Chuyển đổi tệp JSON sang tệp CSV. Sau khi tải lên, tệp JSON của bạn sẽ tự động bắt đầu chuyển đổi dữ liệu của bạn sang định dạng mới. .
3 Lưu tệp của bạn hoặc gửi đến email của bạn

Làm cách nào để chuyển đổi JSON sang CSV bằng gấu trúc?

Sau đây là các bước chi tiết liên quan đến việc chuyển đổi JSON sang CSV trong pandas. .
Tạo một tệp JSON. .
Cài đặt gấu trúc. .
Tải tệp JSON. .
Áp dụng chuyển đổi. .
Chuyển đổi JSON sang CSV

Chủ Đề