Преобразуйте файл JSON, содержащий несколько словарей, в фрейм данных pandas

#python #json #pandas

Вопрос:

Я прочитал файл JSON, в котором перечислены пациенты с COVID-19, называемые контентом. Я хочу преобразовать файл в фрейм данных pandas, чтобы я мог анализировать его с помощью Python. К сожалению, файл находится в нескольких словарях.

содержимое выглядит следующим образом

 [{'id': 'from_manual_250627',
  'kode_kab': '3204',
  'nama_kab': 'Kabupaten Bandung',
  'kode_kec': '3204130',
  'nama_kec': 'Ciparay',
  'kode_kel': '3204130005',
  'nama_kel': 'Manggungharja',
  'status': 'CONFIRMATION',
  'stage': 'Selesai',
  'umur': 29.0,
  'gender': 'Laki-laki',
  'longitude': 107.698,
  'latitude': -7.045,
  'tanggal_konfirmasi': '2021-03-30',
  'tanggal_update': '2021-05-10',
  'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan',
  'current_location_district_code': None,
  'current_location_subdistrict_code': None,
  'current_location_village_code': None,
  'current_location_address': None,
  'report_source': None,
  'tanggal_update_nasional': '2021-04-01'},
 {'id': 'from_manual_170876',
  'kode_kab': '3204',
  'nama_kab': 'Kabupaten Bandung',
  'kode_kec': '3204',
  'nama_kec': 'Lembursitu',
  'kode_kel': '3204',
  'nama_kel': 'Lembursitu',
  'status': 'CONFIRMATION',
  'stage': 'Selesai',
  'umur': 45.0,
  'gender': 'Perempuan',
  'longitude': 107.611,
  'latitude': -7.1,
  'tanggal_konfirmasi': '2021-02-09',
  'tanggal_update': '2021-03-01',
  'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan',
  'current_location_district_code': None,
  'current_location_subdistrict_code': None,
  'current_location_village_code': None,
  'current_location_address': None,
  'report_source': None,
  'tanggal_update_nasional': '2021-02-11'},
 {'id': 'from_manual_171165',
  'kode_kab': '3204',
  'nama_kab': 'Kabupaten Bandung',
  'kode_kec': '3204',
  'nama_kec': 'Purwakarta',
  'kode_kel': '3204',
  'nama_kel': 'Munjuljaya',
  'status': 'CONFIRMATION',
  'stage': 'Selesai',
  'umur': 20.0,
  'gender': 'Perempuan',
  'longitude': 107.611,
  'latitude': -7.1,
  'tanggal_konfirmasi': '2021-02-08',
  'tanggal_update': '2021-03-01',
  'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan',
  'current_location_district_code': None,
  'current_location_subdistrict_code': None,
  'current_location_village_code': None,
  'current_location_address': None,
  'report_source': None,
  'tanggal_update_nasional': '2021-02-11'},
 

Если я запущу этот код

     for dict in content:
    print(dict)
 

Результат выглядит следующим образом

 {'id': 'from_manual_250627', 'kode_kab': '3204', 'nama_kab': 'Kabupaten Bandung', 'kode_kec': '3204130', 'nama_kec': 'Ciparay', 'kode_kel': '3204130005', 'nama_kel': 'Manggungharja', 'status': 'CONFIRMATION', 'stage': 'Selesai', 'umur': 29.0, 'gender': 'Laki-laki', 'longitude': 107.698, 'latitude': -7.045, 'tanggal_konfirmasi': '2021-03-30', 'tanggal_update': '2021-05-10', 'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan', 'current_location_district_code': None, 'current_location_subdistrict_code': None, 'current_location_village_code': None, 'current_location_address': None, 'report_source': None, 'tanggal_update_nasional': '2021-04-01'}
{'id': 'from_manual_170876', 'kode_kab': '3204', 'nama_kab': 'Kabupaten Bandung', 'kode_kec': '3204', 'nama_kec': 'Lembursitu', 'kode_kel': '3204', 'nama_kel': 'Lembursitu', 'status': 'CONFIRMATION', 'stage': 'Selesai', 'umur': 45.0, 'gender': 'Perempuan', 'longitude': 107.611, 'latitude': -7.1, 'tanggal_konfirmasi': '2021-02-09', 'tanggal_update': '2021-03-01', 'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan', 'current_location_district_code': None, 'current_location_subdistrict_code': None, 'current_location_village_code': None, 'current_location_address': None, 'report_source': None, 'tanggal_update_nasional': '2021-02-11'}
{'id': 'from_manual_171165', 'kode_kab': '3204', 'nama_kab': 'Kabupaten Bandung', 'kode_kec': '3204', 'nama_kec': 'Purwakarta', 'kode_kel': '3204', 'nama_kel': 'Munjuljaya', 'status': 'CONFIRMATION', 'stage': 'Selesai', 'umur': 20.0, 'gender': 'Perempuan', 'longitude': 107.611, 'latitude': -7.1, 'tanggal_konfirmasi': '2021-02-08', 'tanggal_update': '2021-03-01', 'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan', 'current_location_district_code': None, 'current_location_subdistrict_code': None, 'current_location_village_code': None, 'current_location_address': None, 'report_source': None, 'tanggal_update_nasional': '2021-02-11'}
 

Как я могу преобразовать его в фрейм данных pandas и использовать ключ словаря в качестве имени столбца?

Ответ №1:

Если ваша структура данных представляет собой список словарей, просто сделайте это:

 import pandas as pd

list_of_dicts = [{'id': 'from_manual_250627', 'kode_kab': '3204', 'nama_kab': 'Kabupaten Bandung', 'kode_kec': '3204130', 'nama_kec': 'Ciparay', 'kode_kel': '3204130005', 'nama_kel': 'Manggungharja', 'status': 'CONFIRMATION', 'stage': 'Selesai', 'umur': 29.0, 'gender': 'Laki-laki', 'longitude': 107.698, 'latitude': -7.045, 'tanggal_konfirmasi': '2021-03-30', 'tanggal_update': '2021-05-10', 'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan', 'current_location_district_code': None, 'current_location_subdistrict_code': None, 'current_location_village_code': None, 'current_location_address': None, 'report_source': None, 'tanggal_update_nasional': '2021-04-01'}, {'id': 'from_manual_170876', 'kode_kab': '3204', 'nama_kab': 'Kabupaten Bandung', 'kode_kec': '3204', 'nama_kec': 'Lembursitu', 'kode_kel': '3204', 'nama_kel': 'Lembursitu', 'status': 'CONFIRMATION', 'stage': 'Selesai', 'umur': 45.0, 'gender': 'Perempuan', 'longitude': 107.611, 'latitude': -7.1, 'tanggal_konfirmasi': '2021-02-09', 'tanggal_update': '2021-03-01', 'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan', 'current_location_district_code': None, 'current_location_subdistrict_code': None, 'current_location_village_code': None, 'current_location_address': None, 'report_source': None, 'tanggal_update_nasional': '2021-02-11'}, {'id': 'from_manual_171165', 'kode_kab': '3204', 'nama_kab': 'Kabupaten Bandung', 'kode_kec': '3204', 'nama_kec': 'Purwakarta', 'kode_kel': '3204', 'nama_kel': 'Munjuljaya', 'status': 'CONFIRMATION', 'stage': 'Selesai', 'umur': 20.0, 'gender': 'Perempuan', 'longitude': 107.611, 'latitude': -7.1, 'tanggal_konfirmasi': '2021-02-08', 'tanggal_update': '2021-03-01', 'current_location_type': 'Rumah Sakit Umum Daerah Al Ihsan', 'current_location_district_code': None, 'current_location_subdistrict_code': None, 'current_location_village_code': None, 'current_location_address': None, 'report_source': None, 'tanggal_update_nasional': '2021-02-11'}]

df = pd.DataFrame(list_of_dicts)