Комплекс для откорма Питона JSON

#python #json #nested #normalize

Вопрос:

У меня есть набор данных статистики подписчиков LinkedIn в следующем JSON (для удобства понимания удалены многие значения пар ключей). При этом каждый ключ имеет разное количество значений внутренней пары ключей.

Может ли кто-нибудь помочь преобразовать это в вывод CSV с помощью python?

 {  "paging": { "start": 0, "count": 10, "links": [] },  "elements": [  {  "followerCountsByAssociationType": [  {  "followerCounts": {  "organicFollowerCount": 2775,  "paidFollowerCount": 0  }  },  {  "followerCounts": {  "organicFollowerCount": 13,  "paidFollowerCount": 0  },  "associationType": "EMPLOYEE"  }  ],  "followerCountsByRegion": [  {  "region": "urn:li:region:7312",  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  }  },  {  "region": "urn:li:region:6981",  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  }  },  {  "region": "urn:li:region:620",  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  }  }  ],  "followerCountsBySeniority": [  {  "followerCounts": {  "organicFollowerCount": 12,  "paidFollowerCount": 0  },  "seniority": "urn:li:seniority:8"  },  {  "followerCounts": {  "organicFollowerCount": 5,  "paidFollowerCount": 0  },  "seniority": "urn:li:seniority:9"  },  {  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  },  "seniority": "urn:li:seniority:1"  }  ],  "followerCountsByIndustry": [  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "industry": "urn:li:industry:51"  },  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "industry": "urn:li:industry:74"  },  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "industry": "urn:li:industry:77"  },  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "industry": "urn:li:industry:78"  },  ],  "followerCountsByFunction": [  {  "followerCounts": {  "organicFollowerCount": 3,  "paidFollowerCount": 0  },  "function": "urn:li:function:14"  },  {  "followerCounts": {  "organicFollowerCount": 3,  "paidFollowerCount": 0  },  "function": "urn:li:function:21"  },  {  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  },  "function": "urn:li:function:11"  },  {  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  },  "function": "urn:li:function:17"  },  {  "followerCounts": {  "organicFollowerCount": 2,  "paidFollowerCount": 0  },  "function": "urn:li:function:1"  },  ],  "followerCountsByStaffCountRange": [  {  "followerCounts": {  "organicFollowerCount": 267,  "paidFollowerCount": 0  },  "staffCountRange": "SIZE_1001_TO_5000"  },  {  "followerCounts": {  "organicFollowerCount": 185,  "paidFollowerCount": 0  },  "staffCountRange": "SIZE_201_TO_500"  },  {  "followerCounts": {  "organicFollowerCount": 131,  "paidFollowerCount": 0  },  "staffCountRange": "SIZE_501_TO_1000"  },  {  "followerCounts": {  "organicFollowerCount": 81,  "paidFollowerCount": 0  },  "staffCountRange": "SIZE_5001_TO_10000"  },  {  "followerCounts": {  "organicFollowerCount": 74,  "paidFollowerCount": 0  },  "staffCountRange": "SIZE_2_TO_10"  },  {  "followerCounts": {  "organicFollowerCount": 10,  "paidFollowerCount": 0  },  "staffCountRange": "SIZE_1"  }  ],  "followerCountsByCountry": [  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "country": "urn:li:country:es"  },  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "country": "urn:li:country:ph"  },  {  "followerCounts": {  "organicFollowerCount": 1,  "paidFollowerCount": 0  },  "country": "urn:li:country:ng"  }  ],  "organizationalEntity": "urn:li:organization:28849398"  }  ] }   

Я попытался использовать json_normalize(data['Elements']) , но это дает следующий результат Я уверен, что должен быть какой-то параметр, json_normalize() который может упростить внутреннюю вложенность.

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

followercounbyассоциацияорганизационный счет подписчиков followercounbyассоциацияpaidфоллоу-счет Тип ассоциации Регион RegionOrganicFollowercount RegionpaidFollowercount
2775 0 Работник урна:li:регион:7312 2 0
урна:li:регион:6981 2 0

…….И так далее

Теперь я сделал только небольшую часть вывода, но в основном для стольких записей в последних столбцах (в то время как для остальных это будет null )

Буду признателен за любую возможную помощь! Спасибо!

Комментарии:

1. Существует множество способов хранения этих данных в файле CSV. Какую конкретную планировку вы имели в виду?

2. Включите в сам вопрос результат, который вы ожидаете для данного ввода. (Пока вы этим занимаетесь, ваш ввод выборки не должен быть таким большим.)

3. Вы имели в виду «Уплощение» в названии вопроса, а не «Откорм»?

4. Эй, @chepner, я добавил желаемый результат (образец-из-за слишком большого количества столбцов) в сам вопрос. Дайте мне знать, как это можно сделать, спасибо 🙂

5. Почему вы пытаетесь создать таблицу в вопросе? CSV-это просто текст с запятыми в качестве разделителей полей. Похоже, вы пытаетесь воссоздать визуальное форматирование таблицы, построенной из файла CSV.