Trong hướng dẫn này, bạn sẽ học cách chuyển đổi danh sách từ điển Python thành Khung dữ liệu Pandas. Pandas cung cấp một số cách khác nhau để chuyển đổi từ điển thành DataFrame. Bạn sẽ tìm hiểu cách sử dụng phương thức Pandas from_dict, hàm tạo DataFrame và hàm json_normalize
Đến cuối hướng dẫn này, bạn sẽ học được
- Cách chuyển đổi danh sách từ điển thành Pandas DataFrame
- Cách làm việc với các nhóm cột khác nhau trong từ điển
- Cách đặt chỉ mục khi chuyển đổi danh sách từ điển thành DataFrame
- Cách chuyển đổi từ điển lồng nhau thành Pandas DataFrame
Mục lục
Tóm tắt các phương pháp
Bảng bên dưới chia nhỏ các cách khác nhau mà bạn có thể đọc danh sách từ điển vào Khung dữ liệu Pandas. Mỗi trong số này được đề cập sâu trong suốt hướng dẫn
.set_index[]
Nofrom_records[]YesYesYesNojson_normalize[]YesYesYesYesKhám phá các phương pháp khác nhau để đọc danh sách từ điển vào Pandas DataFrameChuyển đổi danh sách từ điển thành khung dữ liệu Pandas
Trong phần này, bạn sẽ tìm hiểu cách chuyển đổi danh sách từ điển sang Khung dữ liệu Pandas bằng lớp Pandas DataFrame
. Bằng cách chuyển vào danh sách từ điển, bạn có thể dễ dàng tạo DataFrame
Mỗi từ điển sẽ đại diện cho một bản ghi trong DataFrame, trong khi các khóa trở thành các cột. Hãy xem một ví dụ trong đó mỗi từ điển chứa mọi khóa
# Converting a List of Dictionaries to a DataFrame
import pandas as pd
list_of_dicts = [
{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36, 'Location': 'London'}]
df = pd.DataFrame[list_of_dicts]
print[df]
# Returns:
# Name Age Location
# 0 Nik 33 Toronto
# 1 Kate 32 London
# 2 Evan 36 London
Vì mỗi từ điển trong danh sách chứa các khóa giống nhau nên chúng tôi có thể sử dụng một số phương pháp khác nhau để thực hiện việc này. Các phương pháp khác sau đây cũng sẽ hoạt động
# These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
Làm việc với các phím bị thiếu khi chuyển đổi danh sách từ điển thành khung dữ liệu Pandas
Bây giờ chúng ta hãy xem một ví dụ phức tạp hơn. Trong ví dụ bên dưới, chúng tôi sẽ cung cấp các từ điển trong đó một từ điển sẽ thiếu khóa. Hãy sử dụng phương pháp .from_dict[]
để đọc danh sách để xem dữ liệu sẽ được đọc như thế nào
# Reading Dictionaries with Missing Keys
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36}]
df = pd.DataFrame.from_dict[list_of_dicts]
print[df]
# Returns:
# Name Age Location
# 0 Nik 33 Toronto
# 1 Kate 32 London
# 2 Evan 36 NaN
Phương thức này trả về cùng một phiên bản, ngay cả khi bạn sử dụng hàm tạo
# These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
0, phương thức .from_dict[]
hoặc phương thức # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
2. Từ điển nào thiếu khóa sẽ trả về giá trị thiếu, # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
3Chỉ đọc một số cột khi chuyển đổi danh sách từ điển thành khung dữ liệu Pandas
Có thể nhiều lần bạn muốn đọc từ điển vào Khung dữ liệu Pandas, nhưng chỉ muốn đọc một tập hợp con của các cột. Trong trường hợp này, bạn có thể sử dụng tham số
# These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
4. Lưu ý rằng tham số này chỉ khả dụng trong hàm tạo # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
0 và phương thức # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
6. Sử dụng tham số này trong phương thức # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
7 sẽ tăng # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
8Hãy tải cùng một danh sách từ điển nhưng chỉ đọc hai trong số các cột
# Reading only a subset of columns
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36}]
df = pd.DataFrame.from_records[list_of_dicts, columns=['Name', 'Age']]
# Same as: df = pd.DataFrame[list_of_dicts, columns=['Name', 'Age']]
print[df]
# Returns:
# Name Age
# 0 Nik 33
# 1 Kate 32
# 2 Evan 36
Đặt chỉ mục khi chuyển đổi danh sách từ điển thành khung dữ liệu Pandas
Có hai loại chỉ mục khác nhau mà bạn có thể muốn đặt khi tạo DataFrame
- Chỉ mục DataFrame không phải là một phần của dữ liệu bạn đang đọc [chẳng hạn như 1, 2, 3] hoặc
- Chỉ mục DataFrame từ dữ liệu mà bạn đang đọc [chẳng hạn như một trong các cột]
Hãy xem trường hợp sử dụng đầu tiên. Đối với điều này, chúng ta chỉ có thể dựa vào hàm tạo
# These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
0 và phương thức # These methods all produce the same result
df = pd.DataFrame[list_of_dicts]
df = pd.DataFrame.from_dict[list_of_dicts]
df = pd.DataFrame.from_records[list_of_dicts]
6. Để truyền vào một chỉ mục tùy ý, chúng ta có thể sử dụng tham số # Reading Dictionaries with Missing Keys
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36}]
df = pd.DataFrame.from_dict[list_of_dicts]
print[df]
# Returns:
# Name Age Location
# 0 Nik 33 Toronto
# 1 Kate 32 London
# 2 Evan 36 NaN
1 để truyền vào một danh sách các giá trịHãy xem cách điều này được thực hiện trong Pandas
# Setting an index when reading a list of dictionaries
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36, 'Location': 'New York'}]
df = pd.DataFrame.from_records[list_of_dicts, index=['Employee_001', 'Employee_002', 'Employee_003']]
# Same as: df = pd.DataFrame[list_of_dicts, index=['Employee_001', 'Employee_002', 'Employee_003']]
print[df]
# Returns:
# Name Age Location
# Employee_001 Nik 33 Toronto
# Employee_002 Kate 32 London
# Employee_003 Evan 36 New York
Để đọc danh sách từ điển và đặt chỉ mục dựa trên một trong các khóa, chúng ta có thể sử dụng bất kỳ phương pháp nào trong ba phương pháp nêu trên. Mặc dù Pandas không trực tiếp cung cấp tham số để thực hiện việc này, nhưng chúng ta có thể sử dụng phương thức .set_index[]
để thực hiện việc này
Hãy đọc dữ liệu của chúng tôi và sử dụng cột
# Reading Dictionaries with Missing Keys
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36}]
df = pd.DataFrame.from_dict[list_of_dicts]
print[df]
# Returns:
# Name Age Location
# 0 Nik 33 Toronto
# 1 Kate 32 London
# 2 Evan 36 NaN
3 làm chỉ mục# Setting a column as an index
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36, 'Location': 'New York'}]
df = pd.DataFrame[list_of_dicts].set_index['Name']
# Same as: df = pd.DataFrame.from_dict[list_of_dicts].set_index['Name']
# Same as: df = pd.DataFrame.from_records[list_of_dicts].set_index['Name']
print[df]
# Returns:
# Age Location
# Name
# Nik 33 Toronto
# Kate 32 London
# Evan 36 New York
Trong phần cuối cùng, bạn sẽ học cách sử dụng hàm
# Reading Dictionaries with Missing Keys
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36}]
df = pd.DataFrame.from_dict[list_of_dicts]
print[df]
# Returns:
# Name Age Location
# 0 Nik 33 Toronto
# 1 Kate 32 London
# 2 Evan 36 NaN
4 để đọc danh sách các từ điển lồng vào Khung dữ liệu Pandasjson_chuẩn hóa. Đọc từ điển lồng nhau vào khung dữ liệu Pandas
Khi tải dữ liệu từ các nguồn khác nhau, chẳng hạn như API web, bạn có thể nhận được một danh sách các từ điển lồng nhau được trả về cho bạn. Khi đọc các danh sách từ điển này bằng các phương pháp được hiển thị ở trên, các từ điển lồng nhau sẽ chỉ được trả về dưới dạng từ điển trong một cột
Tuy nhiên, trong nhiều trường hợp, bạn sẽ muốn từng trường trong số này trả về cột riêng của mình. Đối với điều này, chúng ta có thể sử dụng chức năng
# Reading Dictionaries with Missing Keys
import pandas as pd
list_of_dicts = [{'Name': 'Nik', 'Age': 33, 'Location': 'Toronto'},
{'Name': 'Kate', 'Age': 32, 'Location': 'London'},
{'Name': 'Evan', 'Age': 36}]
df = pd.DataFrame.from_dict[list_of_dicts]
print[df]
# Returns:
# Name Age Location
# 0 Nik 33 Toronto
# 1 Kate 32 London
# 2 Evan 36 NaN
5Hãy cùng xem một ví dụ trong đó các từ điển trong danh sách của chúng ta được lồng vào nhau và sử dụng hàm json_normalize để chuyển đổi nó thành DataFrame
# Convert a List of Nested Dictionaries to a DataFrame
import pandas as pd
list_of_dicts = [
{'Name': 'Nik', 'Age': 33, 'Location': {'City': 'Toronto', 'Country': 'Canada'}},
{'Name': 'Kate', 'Age': 32, 'Location': {'City': 'London', 'Country': 'UK'}},
{'Name': 'Evan', 'Age': 36, 'Location': {'City': 'New York', 'Country': 'USA'}}
]
df = pd.json_normalize[list_of_dicts]
print[df]
# Returns:
# Name Age Location.City Location.Country
# 0 Nik 33 Toronto Canada
# 1 Kate 32 London UK
# 2 Evan 36 New York USA
Phần kết luận
Trong hướng dẫn này, bạn đã học cách đọc danh sách từ điển vào Khung dữ liệu Pandas. Bạn đã học cách sử dụng bốn cách khác nhau để thực hiện điều này. Bạn cũng đã học cách chỉ đọc một tập hợp con các cột, xử lý dữ liệu bị thiếu và cách đặt chỉ mục. Cuối cùng, bạn đã học cách đọc danh sách các từ điển lồng vào Khung dữ liệu Pandas của mình