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.
- Abra o arquivo
web_access.jsonlocalizado no diretório~/projectusando um editor de texto. - 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". - 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.
Converter JSON para CSV
Nesta etapa, você aprenderá como converter os dados JSON do arquivo web_access.json para um arquivo CSV.
- Crie um novo arquivo Python chamado
convert.pyno diretório~/project. - No arquivo
convert.py, importe as bibliotecas necessárias:
import csv
import json
- Leia os dados JSON do arquivo
web_access.json:
with open("web_access.json", "r") as json_file:
data = json.load(json_file)
- Defina a ordem das colunas no arquivo CSV:
fieldnames = [
"IP",
"Status",
"Time",
"HttpReferer",
"HttpUserAgent",
"Request",
"HttpXForwardedFor",
"BodyBytesSent",
"RemoteUser",
"RequestLength",
]
- Abra um novo arquivo CSV chamado
result.csvno diretório~/projecte crie um objetocsv.DictWriter:
with open("result.csv", "w", newline="") as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, quoting=csv.QUOTE_ALL)
- Escreva a linha de cabeçalho no arquivo CSV:
writer.writeheader()
- 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)
Executar o Script Python
Nesta etapa, você executará o script convert.py para gerar o arquivo result.csv.
- Abra um terminal e navegue até o diretório
~/project. - Execute o script
convert.pyusando o seguinte comando:
python convert.py
- Após a conclusão do script, você deverá ver um novo arquivo chamado
result.csvno diretório~/project. - Você pode visualizar as primeiras 10 linhas do arquivo
result.csvusando 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.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



