Как создать фрейм данных из словаря фреймов данных? - PullRequest
0 голосов
/ 30 декабря 2018

Проблема в том, что я хочу создать Dataframe из рекурсивно вложенного файла JSON, и я придумал собственный способ сделать это.Если у вас есть другие способы сделать это более простым способом, пожалуйста, дайте мне знать

У меня есть записи данных о полетных данных за 24 часа в файле json, и я хотел создать фрейм данных, используя его для формирования фрейма данныхна день.Я мог бы сделать это, создавая объект для каждого часа, а затем, используя append, объединил их все, но это казалось утомительным процессом даже в течение 24 часов, что если бы у меня была проблема с объединением 1000 записей таким образом.Поэтому я придумал этот код - я попытался перебрать JSON-файл для почасовых данных и создать два фрейма одновременно, объединяя их с помощью concat.Позже я сохраню пару фреймов данных, которые были собраны в словаре со значениями ключей, обозначенными переменной z.Когда я его печатаю, выходные данные содержат 2 записи одновременно и распечатываются 12 раз, следовательно, все данные делаются за 24 часа, но когда я сохраняю данные в CSV-файле, сохраняются только данные, соответствующие двум последним часам.,

    import pandas as pd
    z = 0
    result1 = {}
    for i in range(0,24):
        if (i%2)==0:
            dataF = data["data"]["weather"][0]["hourly"][i]
            dataF2 = data["data"]["weather"][0]["hourly"][i+1]
            dataFrame = pd.DataFrame(dataF,index=[i+1])
            dataFrame2 = pd.DataFrame(dataF2,index=[i+2])
            frame = [dataFrame,dataFrame2]
            result = pd.concat(frame)
            #result.append(result)
            #print(result1)
            result1[z] = result
            z += 1

    print(result1)`

Результат печати:

{0:   windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC windspeedMiles  \
1            11         46             NW          8         8              7   
2            13         42             NW          6         7              8   

  DewPointF HeatIndexF cloudcover HeatIndexC ...   \
1        47         49        100         10 ...    
2        44         46        100          8 ...    

                         weatherDesc visibility weatherCode tempC tempF  \
1  {'value': 'Patchy rain possible'}         10         176    10    49   
2  {'value': 'Patchy rain possible'}         10         176     8    46   

  WindChillF WindChillC winddirDegree humidity time  
1         46          8           318       91    0  
2         42          6           317       92  100  

[2 rows x 25 columns], 1:   windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC windspeedMiles  \
3            14         38             NW          3         5              9   
4            16         33             NW          1         3             10   

  DewPointF HeatIndexF cloudcover HeatIndexC ...             weatherDesc  \
3        41         43        100          6 ...   {'value': 'Overcast'}   
4        38         40        100          4 ...   {'value': 'Overcast'}   

  visibility weatherCode tempC tempF WindChillF WindChillC winddirDegree  \
3         10         122     6    43         38          3           315   
4         10         122     4    40         33          1           314   

  humidity time  
3       92  200  
4       93  300  

[2 rows x 25 columns], 2:   windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC windspeedMiles  \
5            17         33             NW          1         3             10   
6            17         33             NW          0         3             11   

  DewPointF HeatIndexF cloudcover HeatIndexC ...             weatherDesc  \
5        38         40        100          4 ...   {'value': 'Overcast'}   
6        38         39        100          4 ...   {'value': 'Overcast'}   

  visibility weatherCode tempC tempF WindChillF WindChillC winddirDegree  \
5         10         122     4    40         33          1           314   
6         10         122     4    40         33          0           315   

  humidity time  
5       93  400  
6       93  500  

[2 rows x 25 columns], 3:   windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC windspeedMiles  \
7            18         32             NW          0         3             11   
8            18         33             NW          1         3             11   

  DewPointF HeatIndexF cloudcover HeatIndexC ...             weatherDesc  \
7        38         39        100          4 ...   {'value': 'Overcast'}   
8        38         40        100          4 ...   {'value': 'Overcast'}   

  visibility weatherCode tempC tempF WindChillF WindChillC winddirDegree  \
7         10         122     4    40         32          0           315   
8         10         122     5    41         33          1           317   

  humidity time  
7       93  600  
8       93  700  

[2 rows x 25 columns], 4:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
9             17         34             NW          1         4   
10            17         35             NW          2         4   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC ...   \
9              11        38         40        100          5 ...    
10             11        39         41        100          5 ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
9   {'value': 'Overcast'}         10         122     5    42         34   
10  {'value': 'Overcast'}         10         122     6    42         35   

   WindChillC winddirDegree humidity time  
9           1           318       92  800  
10          2           319       92  900  

[2 rows x 25 columns], 5:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
11            17         36             NW          2         4   
12            17         37             NW          3         4   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
11             10        38         42        100          6  ...    
12             10        38         43        100          6  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
11  {'value': 'Overcast'}         10         122     7    44         36   
12  {'value': 'Overcast'}         10         122     7    45         37   

   WindChillC winddirDegree humidity  time  
11          2           318       88  1000  
12          3           317       84  1100  

[2 rows x 25 columns], 6:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
13            17         38             NW          3         3   
14            17         38             NW          4         3   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
13             10        38         44        100          7  ...    
14             10        38         44        100          7  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
13  {'value': 'Overcast'}         10         122     8    47         38   
14  {'value': 'Overcast'}         10         122     9    47         38   

   WindChillC winddirDegree humidity  time  
13          3           317       81  1200  
14          4           317       79  1300  

[2 rows x 25 columns], 7:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
15            17         39             NW          4         3   
16            17         39             NW          4         3   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
15             10        38         44        100          7  ...    
16             11        37         45        100          7  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
15  {'value': 'Overcast'}         10         122     9    48         39   
16  {'value': 'Overcast'}         10         122    10    49         39   

   WindChillC winddirDegree humidity  time  
15          4           317       76  1400  
16          4           317       74  1500  

[2 rows x 25 columns], 8:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
17            17         39             NW          4         3   
18            17         39             NW          4         2   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
17             11        37         44        100          7  ...    
18             11        36         44        100          7  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
17  {'value': 'Overcast'}         10         122     9    48         39   
18  {'value': 'Overcast'}         10         122     8    46         39   

   WindChillC winddirDegree humidity  time  
17          4           318       74  1600  
18          4           318       73  1700  

[2 rows x 25 columns], 9:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
19            17         38             NW          3         2   
20            17         37             NW          3         2   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
19             11        36         44        100          7  ...    
20             11        35         43        100          6  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
19  {'value': 'Overcast'}         10         122     7    45         38   
20  {'value': 'Overcast'}         10         122     7    44         37   

   WindChillC winddirDegree humidity  time  
19          3           319       73  1800  
20          3           318       72  1900  

[2 rows x 25 columns], 10:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
21            17         37             NW          3         1   
22            16         36             NW          2         1   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
21             10        34         43        100          6  ...    
22             10        33         42        100          6  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
21  {'value': 'Overcast'}         10         122     6    43         37   
22  {'value': 'Overcast'}         10         122     6    42         36   

   WindChillC winddirDegree humidity  time  
21          3           317       71  2000  
22          2           316       71  2100  

[2 rows x 25 columns], 11:    windspeedKmph FeelsLikeF winddir16Point FeelsLikeC DewPointC  \
23            16         35             NW          2         1   
24            16         35             NW          2         1   

   windspeedMiles DewPointF HeatIndexF cloudcover HeatIndexC  ...   \
23             10        33         41         95          5  ...    
24             10        33         41         91          5  ...    

              weatherDesc visibility weatherCode tempC tempF WindChillF  \
23  {'value': 'Overcast'}         10         122     5    41         35   
24  {'value': 'Overcast'}         10         122     5    41         35   

   WindChillC winddirDegree humidity  time  
23          2           317       72  2200  
24          2           318       74  2300  

[2 rows x 25 columns]}

1 Ответ

0 голосов
/ 30 декабря 2018

Только для вашего примера:

Если вы загружаете весь json как диктовку (или список), например, используя json.load, вы можете использовать json_normalize:

>>> import pandas as pd
>>> import json
>>> from pandas.io.json import json_normalize

Данные:

>>> d = {"response": {"body": {"contact": {"email": "mr@abc.com", "mobile_number": "0123456789"}, "personal": {"last_name": "Muster", "gender": "m", "first_name": "Max", "dob": "1985-12-23", "family_status": "single", "title": "Dr."}, "customer": {"verified": "true", "customer_id": "1234567"}}, "token": "dsfgf", "version": "1.1"}}
>>> df = pd.io.json.json_normalize(d)
>>> df
  response.body.contact.email response.body.contact.mobile_number response.body.customer.customer_id       ...        response.body.personal.title response.token response.version
0                  mr@abc.com                          0123456789                            1234567       ...                                 Dr.          dsfgf              1.1

[1 rows x 12 columns]
>>> df.columns = df.columns.map(lambda x: x.split(".")[-1])
>>> df
        email mobile_number customer_id verified         dob family_status first_name gender last_name title  token version
0  mr@abc.com    0123456789     1234567     true  1985-12-23        single        Max      m    Muster   Dr.  dsfgf     1.1

посмотрите на здесь

еще сообщение

...