Chuyển đổi đối tượng thành 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. Thoát()

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

Ký hiệu đối tượng JavaScript (JSON) là một trong những định dạng phổ biến nhất mà bạn sẽ gặp khi làm việc với dữ liệu – đặc biệt là dữ liệu web. Có thể chuyển đổi định dạng sang các định dạng khác, chẳng hạn như CSV, là một kỹ năng quan trọng. Trong hướng dẫn này, bạn sẽ tìm hiểu cách chuyển đổi dữ liệu được lưu trữ ở định dạng JSON sang định dạng CSV bằng Python

Có hai cách chính để thực hiện điều này

  1. Sử dụng thư viện Pandas phổ biến để chuyển đổi JSON sang CSV và
  2. Chỉ sử dụng các thư viện JSON và CSV tích hợp

Hãy đi sâu vào cách sử dụng cả hai phương pháp này để chuyển đổi JSON sang CSV

Mục lục

Đang tải tệp JSON mẫu

Để theo dõi, chúng tôi sẽ sử dụng chuỗi JSON dựng sẵn. Nếu bạn đang làm việc với chuỗi của riêng mình, vui lòng sử dụng chuỗi đó. Tuy nhiên, kết quả của bạn tất nhiên sẽ thay đổi. Chúng ta hãy xem những gì chuỗi có

[
   {
      "Name":"Nik",
      "Age":30,
      "Active":true
   },
   {
      "Name":"Kate",
      "Age":32,
      "Active":true
   },
   {
      "Name":"Evan",
      "Age":45,
      "Active":false
   }
]

Trong chuỗi được in đẹp ở trên, chúng ta có thể thấy rằng chúng ta có ba bản ghi, mỗi bản ghi có ba trường bên trong chúng. Hãy cô đọng đối tượng JSON này và biến nó thành một chuỗi

# Loading a JSON String
json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'

Bây giờ chúng tôi đã tải chuỗi JSON của mình, hãy xem cách chúng tôi có thể sử dụng Pandas để chuyển đổi nó thành tệp CSV

Sử dụng Pandas để chuyển đổi JSON sang CSV

Pandas giúp dễ dàng chuyển đổi tệp JSON sang CSV bằng hàm pd.read_json(), kết hợp với phương thức .to_csv()

Hãy xem cách chúng ta có thể sử dụng Pandas để chuyển đổi chuỗi JSON thành tệp CSV

# Using Pandas to Convert a JSON String to a CSV File
import pandas as pd

json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}, {"Name": "Kyra", "Age": 43, "Active": true}]'

df = pd.read_json(json_string)
df.to_csv('file.csv')

Các bước sau chuyển đổi chuỗi JSON thành tệp CSV bằng Python

  1. nhập gấu trúc

    Nhập gấu trúc bằng cách sử dụng import pandas as pd

  2. Tải chuỗi JSON dưới dạng Pandas DataFrame

    Tải Khung dữ liệu bằng cách sử dụng pd.read_json(json_string)

  3. Chuyển đổi DataFrame thành tệp CSV

    Sử dụng phương thức df.to_csv() để chuyển đổi Khung dữ liệu thành tệp CSV, bằng cách chỉ định tên tệp trong phương thức

Chỉ sử dụng Python để chuyển đổi JSON sang CSV

Nếu bạn đang tìm cách chuyển đổi chuỗi JSON thành tệp CSV mà không sử dụng Pandas, bạn có thể sử dụng thư viện

# Loading a JSON String
json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
0 và
# Loading a JSON String
json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
1 tích hợp sẵn. Điều này cho phép bạn viết mã không có phụ thuộc bên ngoài, có lẽ làm cho mã của bạn dễ chuyển nhượng hơn

Hãy xem cách chúng ta có thể sử dụng thư viện Python tích hợp sẵn để chuyển đổi chuỗi JSON thành tệp CSV

# Convert a JSON String to CSV Using Python
import csv
import json
json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}, {"Name": "Kyra", "Age": 43, "Active": true}]'

data = json.loads(json_string)
headers = data[0].keys()

with open('file.csv', 'w') as f:
    writer = csv.DictWriter(f, fieldnames=headers)
    writer.writeheader()
    writer.writerows(data)

Đoạn mã trên có thêm một chút đang diễn ra. Hãy chia nhỏ khối mã đang làm gì

  1. Chúng tôi nhập cả json và csv và tải
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    2, như trước đây
  2. Sau đó, chúng tôi tải chuỗi vào một đối tượng, trong trường hợp này là danh sách từ điển sử dụng hàm
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    3
  3. Sau đó, chúng tôi tạo một đối tượng
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    4 bằng cách truy cập các khóa của mục đầu tiên (tuy nhiên, bất kỳ mục nào cũng được)
  4. Sau đó, chúng tôi sử dụng trình quản lý bối cảnh để mở một tệp mới
  5. Chúng tôi tạo một đối tượng nhà văn
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    5 mới, chuyển vào tệp mới và chuyển các tiêu đề của chúng tôi vào tham số
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    6
  6. Sau đó, chúng tôi viết tiêu đề bằng cách sử dụng phương pháp
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    7
  7. Cuối cùng, chúng tôi viết các hàng dữ liệu bằng phương pháp
    # Loading a JSON String
    json_string = '[{"Name": "Nik", "Age": 30, "Active": true}, {"Name": "Kate", "Age": 32, "Active": true}, {"Name": "Evan", "Age": 45, "Active": false}]'
    8

Trong phần cuối cùng bên dưới, bạn sẽ tìm hiểu cách chuyển đổi tệp JSON thành tệp CSV bằng Python

Chuyển đổi tệp JSON thành tệp CSV bằng Pandas

Cho đến nay, chúng ta đã khám phá cách chuyển đổi chuỗi JSON thành tệp CSV bằng Python. Tuy nhiên, bạn có thể có tệp JSON mà bạn muốn chuyển đổi thành tệp CSV. Cách đơn giản nhất để thực hiện điều này là sử dụng Pandas

Hàm pd.read_json() cũng chấp nhận tệp JSON làm đối số của nó, cho phép bạn tải tệp trực tiếp vào DataFrame. Hãy xem cách chúng ta có thể sao chép quy trình ở trên bằng cách sử dụng hàm pd.read_json()

# Convert a JSON File to a CSV File
import pandas as pd

df = pd.read_json('sample.json')
df.to_csv('file.csv')

Chúng tôi tải tệp JSON bằng hàm pd.read_json() trong khối mã ở trên. Sau đó, chúng tôi chuyển đổi DataFrame thành tệp CSV bằng phương pháp .to_csv() .

Phần kết luận

Trong hướng dẫn này, bạn đã học cách chuyển đổi một chuỗi hoặc tệp JSON thành tệp CSV. Trước tiên, bạn đã học được cách đơn giản nhất để thực hiện việc này, sử dụng thư viện Pandas. Sau đó, bạn đã học cách thực hiện điều này chỉ bằng các thư viện tích hợp sẵn, cụ thể là json và csv. Cuối cùng, bạn đã học cách chuyển đổi tệp JSON thành tệp CSV, sử dụng phương pháp Pandas để đơn giản

Làm cách nào để chuyển đổi 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 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