Я использовал большинство методов для загрузки json, но полученные результаты не соответствовали моим потребностям. Когда я загружаю файл с помощью pandas read_json, я получаю фрейм данных с индексом и всеми полями в одной строке в виде строки. Вот два звонка, которые я делаю, которые у меня не работают:
import json
import pandas as pd
#Open and read the JSON file
with open('faturamento.json') as f:
d = json.load(f)
print(d)
fat = pd.read_json("faturamento.json")
И faturamento.json — это:
{
"faturamento": [
{
"day": "2024-09-01",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-02",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-03",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-04",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-05",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-06",
"fat": "1000",
"business_day": "FALSE"
},
{
"day": "2024-09-07",
"fat": " 0",
"business_day": "FALSE"
},
{
"day": "2024-09-08",
"fat": "1500",
"business_day": "TRUE"
},
{
"day": "2024-09-09",
"fat": "1500",
"business_day": "TRUE"
},
{
"day": "2024-09-10",
"fat": "1500",
"business_day": "TRUE"
},
{
"day": "2024-09-11",
"fat": "1500",
"business_day": "TRUE"
},
{
"day": "2024-09-12",
"fat": "1500",
"business_day": "TRUE"
},
{
"day": "2024-09-13",
"fat": " 0",
"business_day": "FALSE"
},
{
"day": "2024-09-14",
"fat": " 0",
"business_day": "FALSE"
},
{
"day": "2024-09-15",
"fat": "2500",
"business_day": "TRUE"
},
{
"day": "2024-09-16",
"fat": "2500",
"business_day": "TRUE"
},
{
"day": "2024-09-17",
"fat": "2500",
"business_day": "TRUE"
},
{
"day": "2024-09-18",
"fat": "2500",
"business_day": "TRUE"
},
{
"day": "2024-09-19",
"fat": "2500",
"business_day": "TRUE"
},
{
"day": "2024-09-20",
"fat": " 0",
"business_day": "FALSE"
},
{
"day": "2024-09-21",
"fat": " 0",
"business_day": "FALSE"
},
{
"day": "2024-09-22",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-23",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-24",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-25",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-26",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-27",
"fat": " 500",
"business_day": "TRUE"
},
{
"day": "2024-09-28",
"fat": "1500",
"business_day": "FALSE"
},
{
"day": "2024-09-29",
"fat": " 0",
"business_day": "FALSE"
},
{
"day": "2024-09-30",
"fat": "3500",
"business_day": "TRUE"
}
]
}
Я думал, что read_json поможет. Как я могу действительно иметь фрейм данных с тремя столбцами: день, жир, рабочий_день?
🤔 А знаете ли вы, что...
Python поддерживает динамическую типизацию, что облегчает разработку.
вам нужно использовать pd.json_normalize:
with open(file) as f:
data = json.load(f)
df = pd.json_normalize(data['faturamento'])
Выход:
day fat business_day
0 2024-09-01 500 TRUE
1 2024-09-02 500 TRUE
2 2024-09-03 500 TRUE
3 2024-09-04 500 TRUE
4 2024-09-05 500 TRUE
5 2024-09-06 1000 FALSE
6 2024-09-07 0 FALSE
7 2024-09-08 1500 TRUE
8 2024-09-09 1500 TRUE
9 2024-09-10 1500 TRUE
10 2024-09-11 1500 TRUE
11 2024-09-12 1500 TRUE
12 2024-09-13 0 FALSE
13 2024-09-14 0 FALSE
14 2024-09-15 2500 TRUE
15 2024-09-16 2500 TRUE
16 2024-09-17 2500 TRUE
17 2024-09-18 2500 TRUE
18 2024-09-19 2500 TRUE
19 2024-09-20 0 FALSE
20 2024-09-21 0 FALSE
21 2024-09-22 500 TRUE
22 2024-09-23 500 TRUE
23 2024-09-24 500 TRUE
24 2024-09-25 500 TRUE
25 2024-09-26 500 TRUE
26 2024-09-27 500 TRUE
27 2024-09-28 1500 FALSE
28 2024-09-29 0 FALSE
29 2024-09-30 3500 TRUE
Два варианта:
df = pd.json_normalize(pd.read_json("faturamento.json")["faturamento"])
или
with open("faturamento.json") as f:
d = json.load(f)
df = pd.DataFrame(d["faturamento"])
Оба выведут:
day fat business_day
0 2024-09-01 500 TRUE
1 2024-09-02 500 TRUE
2 2024-09-03 500 TRUE
3 2024-09-04 500 TRUE
4 2024-09-05 500 TRUE
5 2024-09-06 1000 FALSE
6 2024-09-07 0 FALSE
7 2024-09-08 1500 TRUE
8 2024-09-09 1500 TRUE
9 2024-09-10 1500 TRUE
10 2024-09-11 1500 TRUE
11 2024-09-12 1500 TRUE
12 2024-09-13 0 FALSE
13 2024-09-14 0 FALSE
14 2024-09-15 2500 TRUE
15 2024-09-16 2500 TRUE
16 2024-09-17 2500 TRUE
17 2024-09-18 2500 TRUE
18 2024-09-19 2500 TRUE
19 2024-09-20 0 FALSE
20 2024-09-21 0 FALSE
21 2024-09-22 500 TRUE
22 2024-09-23 500 TRUE
23 2024-09-24 500 TRUE
24 2024-09-25 500 TRUE
25 2024-09-26 500 TRUE
26 2024-09-27 500 TRUE
27 2024-09-28 1500 FALSE
28 2024-09-29 0 FALSE
29 2024-09-30 3500 TRUE