Converter JSON para CSV

PythonBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como converter dados JSON para o formato CSV usando Python. Esta é uma tarefa comum em ciência de dados e desenvolvimento, pois JSON é frequentemente usado para respostas de API, enquanto CSV é um formato popular para armazenar dados tabulares.

👀 Visualização

$ head result.csv
"IP","Status","Time","HttpReferer","HttpUserAgent","Request","HttpXForwardedFor","BodyBytesSent","RemoteUser","RequestLength"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0; .NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0; .NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como ler e entender dados JSON
  • Como converter dados JSON para um arquivo CSV
  • Como escrever o arquivo CSV com os nomes de coluna e formatação corretos

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Converter eficientemente dados JSON obtidos de APIs para um formato CSV estruturado
  • Entender o processo de análise de dados JSON e sua escrita em um arquivo CSV
  • Aplicar essas habilidades a uma variedade de tarefas de processamento e análise de dados

Ler e Compreender os Dados JSON

Nesta etapa, você aprenderá como ler e entender os dados JSON do arquivo web_access.json.

  1. Abra o arquivo web_access.json localizado no diretório ~/project usando um editor de texto.
  2. Examine o conteúdo do arquivo. Você deve ver um array de objetos, onde cada objeto representa uma entrada de log de acesso web. Cada entrada possui várias propriedades, como "IP", "Status", "Time", "HttpReferer", "HttpUserAgent", "Request", "HttpXForwardedFor", "BodyBytesSent", "RemoteUser" e "RequestLength".
  3. Familiarize-se com a estrutura e o conteúdo dos dados JSON. Essa informação será útil na próxima etapa, quando você converter os dados para o formato CSV.
✨ Verificar Solução e Praticar

Converter JSON para CSV

Nesta etapa, você aprenderá como converter os dados JSON do arquivo web_access.json para um arquivo CSV.

  1. Crie um novo arquivo Python chamado convert.py no diretório ~/project.
  2. No arquivo convert.py, importe as bibliotecas necessárias:
import csv
import json
  1. Leia os dados JSON do arquivo web_access.json:
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)
  1. Defina a ordem das colunas no arquivo CSV:
fieldnames = [
    "IP",
    "Status",
    "Time",
    "HttpReferer",
    "HttpUserAgent",
    "Request",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "RequestLength",
]
  1. Abra um novo arquivo CSV chamado result.csv no diretório ~/project e crie um objeto csv.DictWriter:
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
  1. Escreva a linha de cabeçalho no arquivo CSV:
writer.writeheader()
  1. Escreva as linhas de dados no arquivo CSV:
for row in data:
    writer.writerow(row)

Seu arquivo convert.py completo deve ser assim:

import csv
import json

## Read JSON data from the file
with open("web_access.json", "r") as json_file:
    data = json.load(json_file)

## Define the order of columns
fieldnames = [
    "IP",
    "Status",
    "Time",
    "HttpReferer",
    "HttpUserAgent",
    "Request",
    "HttpXForwardedFor",
    "BodyBytesSent",
    "RemoteUser",
    "RequestLength",
]

## Writing to CSV file
with open("result.csv", "w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)

    ## Writing header
    writer.writeheader()

    ## Writing data rows
    for row in data:
        writer.writerow(row)
✨ Verificar Solução e Praticar

Executar o Script Python

Nesta etapa, você executará o script convert.py para gerar o arquivo result.csv.

  1. Abra um terminal e navegue até o diretório ~/project.
  2. Execute o script convert.py usando o seguinte comando:
python convert.py
  1. Após a conclusão do script, você deverá ver um novo arquivo chamado result.csv no diretório ~/project.
  2. Você pode visualizar as primeiras 10 linhas do arquivo result.csv usando o seguinte comando:
head result.csv

Isso deve exibir a linha de cabeçalho e as primeiras 9 linhas de dados do arquivo CSV.

"IP","Status","Time","HttpReferer","HttpUserAgent","Request","HttpXForwardedFor","BodyBytesSent","RemoteUser","RequestLength"
"72.55.30.187","202","[2016-02-23 16:25:10]","http://www.google.cn/search?q=hive","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)","GET /index.html HTTP/1.1","-","-","-","0"
"55.222.156.202","200","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0; .NET CLR 1.1.4322)","GET /login.php HTTP/1.1","-","-","-","0"
"190.215.55.29","201","[2016-02-23 16:25:10]","-","Mozilla/4.0 (compatible; MSIE6.0; Windows NT 5.0; .NET CLR 1.1.4322)","GET /view.php HTTP/1.1","-","-","-","0"
"63.132.98.30","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /list.php HTTP/1.1","-","-","-","0"
"214.124.190.132","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53","GET /login.php HTTP/1.1","-","-","-","0"
"98.215.187.30","202","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /upload.php HTTP/1.1","-","-","-","0"
"143.55.168.187","201","[2016-02-23 16:25:10]","-","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /login.php HTTP/1.1","-","-","-","0"
"98.190.201.29","200","[2016-02-23 16:25:10]","-","Mozilla/5.0 (Linux; Android 4.2.1; Galaxy Nexus Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19","GET /view.php HTTP/1.1","-","-","-","0"
"10.168.55.143","301","[2016-02-23 16:25:10]","http://cn.bing.com/search?q=spark mlib","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)","GET /admin/login.php HTTP/1.1","-","-","-","0"

Parabéns! Você converteu com sucesso os dados JSON do arquivo web_access.json para um arquivo CSV chamado result.csv.

✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.