Kamus bersarang python ke kerangka data

Pertimbangkan pemahaman kamus untuk membuat kamus dengan kunci tupel. Kemudian, gunakan MultiIndex.from_tuples panda. Di bawah ast_ digunakan untuk membangun kembali kamus asli Anda dari string (abaikan langkah di pihak Anda)

import pandas as pd
import ast

origDict = ast.literal_eval("""
{'l1':{'c1': {'a': 0, 'b': 1, 'c': 2},
       'c2': {'a': 3, 'b': 4, 'c': 5}},
 'l2':{'c1': {'a': 0, 'b': 1, 'c': 2},
       'c2': {'a': 3, 'b': 4, 'c': 5}}
}""")

# DICTIONARY COMPREHENSION
newdict = {(k1, k2):v2 for k1,v1 in origDict.items() \
                       for k2,v2 in origDict[k1].items()}
print(newdict)
# {('l1', 'c2'): {'c': 5, 'a': 3, 'b': 4},
#  ('l2', 'c1'): {'c': 2, 'a': 0, 'b': 1},
#  ('l1', 'c1'): {'c': 2, 'a': 0, 'b': 1},
#  ('l2', 'c2'): {'c': 5, 'a': 3, 'b': 4}}

# DATA FRAME ASSIGNMENT
df = pd.DataFrame([newdict[i] for i in sorted(newdict)],
                  index=pd.MultiIndex.from_tuples([i for i in sorted(newdict.keys())]))    
print(df)
#        a  b  c
# l1 c1  0  1  2
#    c2  3  4  5
# l2 c1  0  1  2
#    c2  3  4  5

Pandas adalah alat khusus yang memungkinkan kita melakukan manipulasi data yang rumit secara efektif dan efisien. Di dalam panda, kami kebanyakan berurusan dengan kumpulan data dalam bentuk DataFrame. DataFrames adalah struktur data 2 dimensi dalam panda. DataFrames terdiri dari baris, kolom, dan data

Untuk membuat DataFrame panda dari item dalam kamus bersarang, kami akan menggunakan sintaks berikut

Jika kita memiliki kamus bersarang yang sangat besar, metode ini memungkinkan kita mengekstrak kunci di dalam kunci dan mengambil nilainya untuk membuat kolom dan baris DataFrame

Sering kali python akan menerima data dari berbagai sumber yang bisa dalam format berbeda seperti csv, JSON dll yang dapat dikonversi ke daftar python atau kamus dll. Tetapi untuk menerapkan perhitungan atau analisis menggunakan paket seperti panda, kita perlu mengubah data ini menjadi kerangka data. Pada artikel ini kita akan melihat bagaimana kita dapat mengonversi daftar python yang diberikan yang elemennya adalah kamus bersarang, menjadi Datframe panda

Kami pertama-tama mengambil daftar kamus bersarang dan mengekstrak baris data darinya. Kemudian kami membuat loop for lainnya untuk menambahkan baris ke dalam daftar baru yang awalnya dibuat kosong. Akhirnya kami menerapkan fungsi DataFrames di perpustakaan panda untuk membuat Bingkai Data

Contoh

import pandas as pd

# Given nested dictionary
list = [
   {
      "Fruit": [{"Price": 15.2, "Quality": "A"},
         {"Price": 19, "Quality": "B"},
         {"Price": 17.8, "Quality": "C"},
      ],
      "Name": "Orange"
   },
   {
      "Fruit": [{"Price": 23.2, "Quality": "A"},
         {"Price": 28, "Quality": "B"}
      ],
      "Name": "Grapes"
   }
]

rows = []

# Getting rows
for data in list:
   data_row = data['Fruit']
   n = data['Name']

   for row in data_row:
      row['Name'] = n
      rows.append(row)

# Convert to data frame
df = pd.DataFrame(rows)
print(df)

_

Menjalankan kode di atas memberi kita hasil berikut -

Keluaran

Price Quality   Name
0 15.2    A Orange
1 19.0    B Orange
2 17.8    C Orange
3 23.2    A Grapes
4 28.0    B Grapes

Menerapkan pivot

Kita juga dapat menerapkan fungsi pivot_table untuk mengatur ulang data seperti yang kita inginkan

Contoh

import pandas as pd

# List of nested dictionary initialization
list = [
   {
      "Fruit": [{"Price": 15.2, "Quality": "A"},
         {"Price": 19, "Quality": "B"},
         {"Price": 17.8, "Quality": "C"},
      ],
      "Name": "Orange"
   },
   {
      "Fruit": [{"Price": 23.2, "Quality": "A"},
         {"Price": 28, "Quality": "B"}
      ],
      "Name": "Grapes"
   }
]

#print(list)
rows = []

# appending rows
for data in list:
   data_row = data['Fruit']
   n = data['Name']

   for row in data_row:
      row['Name'] = n
      rows.append(row)

   # using data frame
df = pd.DataFrame(rows)

df = df.pivot_table(index='Name', columns=['Quality'],
               values=['Price']).reset_index()
print(df)

Menjalankan kode di atas memberi kita hasil berikut -

Keluaran

       Name Price         
Quality          A    B    C
0      Grapes 23.2 28.0 NaN
1      Orange 15.2 19.0 17.8
_

Dalam tutorial ini, Anda akan belajar tentang kamus bersarang Python – kamus yang merupakan nilai dari kamus lain. Anda akan belajar cara membuat kamus bersarang, mengakses elemennya, memodifikasinya, dan lainnya. Anda juga akan mempelajari cara menggunakan kamus bersarang untuk mengonversinya menjadi Pandas DataFrame

Di akhir tutorial ini, Anda akan belajar

  • Kamus bersarang apa yang ada di Python
  • Cara membuat kamus bersarang dengan Python
  • Cara mengakses, memodifikasi, dan menghapus elemen dalam kamus bersarang
  • Cara mengonversi kamus bersarang ke Pandas DataFrames

Daftar isi

Kamus Bersarang Python

Kamus Python adalah struktur data wadah yang menampung

# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
1 pasang informasi. Mereka dibuat dengan menggunakan kurung kurawal
# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
2, di mana nilai dapat dicari dengan mengakses kunci uniknya. Mari kita lihat contoh kamus sederhana

# A Simple Python Dictionary
user = {
    'Name': 'Nik', 
    'Profession':'datagy'
    }

Dalam kamus di atas, kami memiliki item yang disebut

# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
3. Kita dapat mengakses nilainya dengan mereferensikan kunci kamus. Katakanlah kami ingin mengakses nilai kamus untuk kunci
# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
4, kami dapat menulis

# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik

Hal yang menarik tentang kamus Python adalah kita bahkan dapat menggunakan kamus lain sebagai nilainya. Ini membawa kita ke topik utama artikel ini

Katakanlah kami ingin memiliki kamus yang berisi informasi pengguna berdasarkan ID pengguna seseorang. Mari buat kamus yang menyimpan informasi tentang banyak pengguna, dikelompokkan berdasarkan ID

# Understanding Nested Dictionaries
users = {
    1: {
        'Name': 'Nik', 
        'Profession':'datagy'
        }, 
    2: {
        'Name': 'Kate',
        'Profession': 'Government'
    }    
}

Dalam contoh ini, kamus kami sebelumnya disematkan ke dalam kamus baru yang lebih besar. Apa yang kami lakukan adalah membuat kamus bersarang baru. Di bagian berikut, kami membahas cara membuat kamus bersarang

Membuat Kamus Bersarang dengan Python

Di bagian ini, Anda akan mempelajari cara membuat kamus bersarang. Kamus bersarang adalah kamus yang memiliki kamus lain sebagai salah satu atau beberapa nilainya. Mari telusuri bagaimana kita bisa membuat kamus bersarang Python

Mari kita lihat sebuah contoh

# Creating a Nested Dictionary in Python
users = {}
Nik = {
        'Name': 'Nik', 
        'Profession':'datagy'
    }

Kate = {
        'Name': 'Kate',
        'Profession': 'Government'
}

users[1] = Nik
users[2] = Kate

print(users)

# Returns: {1: {'Name': 'Nik', 'Profession': 'datagy'}, 2: {'Name': 'Kate', 'Profession': 'Government'}}

Mari kita uraikan apa yang kita lakukan di sini

  1. Kami membuat kamus kosong,
    # Accessing a Dictionary Value
    print(user.get('Name')).   # Same as user['Name']
    
    # Returns: Nik
    5
  2. Kami membuat dua kamus lebih lanjut,
    # Accessing a Dictionary Value
    print(user.get('Name')).   # Same as user['Name']
    
    # Returns: Nik
    6 dan
    # Accessing a Dictionary Value
    print(user.get('Name')).   # Same as user['Name']
    
    # Returns: Nik
    7
  3. Kami kemudian menugaskan kamus ini untuk menjadi nilai dari kunci masing-masing,
    # Accessing a Dictionary Value
    print(user.get('Name')).   # Same as user['Name']
    
    # Returns: Nik
    8 dan
    # Accessing a Dictionary Value
    print(user.get('Name')).   # Same as user['Name']
    
    # Returns: Nik
    9, dalam kamus
    # Accessing a Dictionary Value
    print(user.get('Name')).   # Same as user['Name']
    
    # Returns: Nik
    5

Mengakses Item di Nested Dictionaries dengan Python

Di bagian ini, Anda akan mempelajari cara mengakses item dalam kamus Python bersarang. Di bagian sebelumnya, kita menjelajahi menggunakan metode

# Understanding Nested Dictionaries
users = {
    1: {
        'Name': 'Nik', 
        'Profession':'datagy'
        }, 
    2: {
        'Name': 'Kate',
        'Profession': 'Government'
    }    
}
1 untuk mengakses item. Mari kita lihat apa yang terjadi saat kita mencoba mengakses item dalam kamus bersarang

# Accessing an Item in a Nested Dictionary
users = {
    1: {'Name': 'Nik', 'Profession': 'datagy'}, 
    2: {'Name': 'Kate', 'Profession': 'Government'}
    }

print(users.get(1))

# Returns: {'Name': 'Nik', 'Profession': 'datagy'}

Kita dapat melihat bahwa ini mengembalikan kamus. Karena kamus dikembalikan, kami dapat mengakses item di kamus yang dikembalikan

Katakanlah kami ingin mengakses

# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
_4 pengguna
# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
8, kami dapat menulis yang berikut ini

# Accessing Nested Items in Python Dictionaries
users = {
    1: {'Name': 'Nik', 'Profession': 'datagy'}, 
    2: {'Name': 'Kate', 'Profession': 'Government'}
    }

print(users.get(1).get('Name'))

# Returns: Nik 

Kami dapat memanggil metode

# Understanding Nested Dictionaries
users = {
    1: {
        'Name': 'Nik', 
        'Profession':'datagy'
        }, 
    2: {
        'Name': 'Kate',
        'Profession': 'Government'
    }    
}
_1 beberapa kali karena kami mengakses kamus di dalam kamus. Di bagian selanjutnya, Anda akan mempelajari cara mengubah item dalam kamus bertingkat

Memodifikasi Item di Nested Dictionaries dengan Python

Di bagian ini, Anda akan mempelajari cara mengubah item dalam kamus bersarang. Untuk memodifikasi item, kami menggunakan proses yang sama seperti yang kami lakukan untuk menyetel item baru di kamus. Dalam hal ini, kita hanya perlu menavigasi sedikit lebih jauh ke bawah, ke kunci kamus bersarang

Misalkan kita ingin mengubah profesi untuk pengguna 2 menjadi

# Understanding Nested Dictionaries
users = {
    1: {
        'Name': 'Nik', 
        'Profession':'datagy'
        }, 
    2: {
        'Name': 'Kate',
        'Profession': 'Government'
    }    
}
5. Kita kemudian bisa menulis

# Modifying Items in a Nested Dictionary
users = {
    1: {'Name': 'Nik', 'Profession': 'datagy'}, 
    2: {'Name': 'Kate', 'Profession': 'Government'}
    }

users[2]['Profession'] = 'Habitat for Humanity'
print(users)

# Returns: 
# {1: {'Name': 'Nik', 'Profession': 'datagy'}, 2: {'Name': 'Kate', 'Profession': 'Habitat for Humanity'}}

Dalam hal ini, kami dapat mengakses nilai kunci melalui penugasan langsung. Jika kunci itu sebelumnya tidak ada, maka kunci (dan nilainya) akan dibuat

Menghapus Item di Nested Dictionaries dengan Python

Kamus Python menggunakan kata kunci

# Understanding Nested Dictionaries
users = {
    1: {
        'Name': 'Nik', 
        'Profession':'datagy'
        }, 
    2: {
        'Name': 'Kate',
        'Profession': 'Government'
    }    
}
_6 untuk menghapus pasangan
# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
1 dalam kamus. Untuk melakukan ini dalam kamus bersarang, kita hanya perlu masuk lebih jauh ke dalam kamus. Mari kita lihat bagaimana kita dapat menghapus kunci
# Understanding Nested Dictionaries
users = {
    1: {
        'Name': 'Nik', 
        'Profession':'datagy'
        }, 
    2: {
        'Name': 'Kate',
        'Profession': 'Government'
    }    
}
8 dari kamus
# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
8

# Deleting an item from a nested dictionary
users = {
    1: {'Name': 'Nik', 'Profession': 'datagy'}, 
    2: {'Name': 'Kate', 'Profession': 'Government'}
    }

del users[1]['Profession']

print(users)

# Returns: 
# {1: {'Name': 'Nik'}, 2: {'Name': 'Kate', 'Profession': 'Government'}}

Demikian pula, kita dapat menghapus seluruh kamus bersarang menggunakan metode yang sama. Karena kamus bersarang sebenarnya hanyalah pasangan

# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
1 dalam kamus kita yang lebih luas, metode yang sama berlaku. Mari kita hapus seluruh kamus pertama ________5______8

# Deleting an entire nested dictionary
users = {
    1: {'Name': 'Nik', 'Profession': 'datagy'}, 
    2: {'Name': 'Kate', 'Profession': 'Government'}
    }

del users[1]

print(users)

# Returns: 
# {2: {'Name': 'Kate', 'Profession': 'Government'}}

Di bagian selanjutnya, Anda akan mempelajari cara melakukan iterasi melalui kamus bersarang dengan Python

Iterasi Melalui Kamus Bersarang dengan Python

Di bagian ini, Anda akan mempelajari cara melakukan iterasi melalui kamus bersarang. Ini dapat membantu saat Anda ingin mencetak nilai dalam kamus. Kita dapat membangun fungsi rekursif untuk menangani ini. Mari kita lihat seperti apa ini

# Iterating through nested dictionaries recursively
users = {
    1: {'Name': 'Nik', 'Profession': 'datagy'}, 
    2: {'Name': 'Kate', 'Profession': 'Government'}
    }

def iterate_dict(dict_to_iterate):
    for key, value in dict_to_iterate.items():
        if type(value) == dict:
            print(key)
            iterate_dict(value)
        else:
            print(key + ":" + value)

iterate_dict(users)

# Returns:
# 1
# Name:Nik
# Profession:datagy
# 2
# Name:Kate
# Profession:Government

Mengonversi Kamus Python Bersarang menjadi Pandas DataFrame

Di bagian terakhir ini, Anda akan belajar cara mengubah kamus bersarang menjadi Pandas DataFrame. Kami cukup meneruskan kamus bersarang ke konstruktor

# Creating a Nested Dictionary in Python
users = {}
Nik = {
        'Name': 'Nik', 
        'Profession':'datagy'
    }

Kate = {
        'Name': 'Kate',
        'Profession': 'Government'
}

users[1] = Nik
users[2] = Kate

print(users)

# Returns: {1: {'Name': 'Nik', 'Profession': 'datagy'}, 2: {'Name': 'Kate', 'Profession': 'Government'}}
2. Namun, Panda akan membaca DataFrame dengan kunci sebagai indeksnya

Untuk mengatasinya, kita dapat mengubah urutan DataFrame menggunakan metode

# Creating a Nested Dictionary in Python
users = {}
Nik = {
        'Name': 'Nik', 
        'Profession':'datagy'
    }

Kate = {
        'Name': 'Kate',
        'Profession': 'Government'
}

users[1] = Nik
users[2] = Kate

print(users)

# Returns: {1: {'Name': 'Nik', 'Profession': 'datagy'}, 2: {'Name': 'Kate', 'Profession': 'Government'}}
3

# Accessing a Dictionary Value
print(user.get('Name')).   # Same as user['Name']

# Returns: Nik
0

Kesimpulan

Dalam tutorial ini, Anda belajar tentang kamus bersarang di Python. Anda telah mempelajari apa itu kamus bersarang. Kemudian Anda belajar cara mengakses, memodifikasi, dan menghapus item mereka. Terakhir, Anda belajar cara mengulangi kamus bersarang serta cara membacanya ke dalam Pandas DataFrames

Bagaimana cara mengubah kamus bersarang menjadi DataFrame dengan Python?

Kami pertama-tama mengambil daftar kamus bersarang dan mengekstrak baris data darinya. Kemudian kami membuat loop for lainnya untuk menambahkan baris ke dalam daftar baru yang awalnya dibuat kosong. Akhirnya kami menerapkan fungsi DataFrames di perpustakaan panda untuk membuat Bingkai Data

Bagaimana cara mengubah kamus kamus ke DataFrame dengan Python?

Kita dapat mengonversi kamus menjadi kerangka data panda dengan menggunakan pd. DataFrame. from_dict() metode kelas .

Bagaimana cara mendapatkan data dari kamus bersarang?

Akses Item Kamus Bersarang . Metode get() mengembalikan nilai untuk kunci jika kuncinya ada di kamus, jika tidak, ia mengembalikan Tidak Ada. using the special dictionary get() method. The get() method returns the value for the key if the key is in the dictionary, otherwise, it returns None.

Bagaimana Anda meratakan kamus bersarang dengan Python?

Pada dasarnya dengan cara yang sama Anda akan meratakan daftar bersarang, Anda hanya perlu melakukan pekerjaan ekstra untuk mengulangi dict dengan kunci/nilai, membuat kunci baru untuk kamus baru Anda dan . Untuk Python >= 3. 3, ubah impor menjadi dari koleksi. . For Python >= 3.3, change the import to from collections.