Python: Convert Python Dictionary to DataFrame

Harsh S.
By
Harsh S.
Hello, I'm Harsh, I hold a degree in Masters of Computer Applications. I have worked in different IT companies as a development lead on many large-scale...
9 Min Read

Python’s Pandas library is a powerful tool for data manipulation and analysis. It offers various data structures, and one of the most commonly used is the DataFrame. A data frame is essentially a two-dimensional, size-mutable, and labeled data structure with columns of potentially different types. In this tutorial, we will explore different methods to convert a Python dictionary to DataFrame pandas. We will also compare these methods and advise on the most suitable one.

Different Ways to Convert Python Dictionary to DataFrame

  1. Method 1: pd.DataFrame Constructor
    • Description: The simplest method, ideal for flat data dictionaries.
  2. Method 2: from_dict Method
    • Description: A structured way to create a DataFrame from a dictionary with flat or slightly nested data.
  3. Method 3: pd.DataFrame Constructor (with Transposition)
    • Description: This method proves useful when your data dictionary arranges information in rows instead of columns.
  4. Method 4: pd.json_normalize Function
    • Description: Best for dictionaries with nested structures, such as JSON data.
  5. Method 5: List of Dictionaries

First of all, explore each method from the below sections. After that, choose the one that matches your data structure and complexity to efficiently convert your Python dictionaries into Pandas DataFrames.

Method 1: Using the pd.DataFrame Constructor

The simplest way to create a data frame from a dictionary is by using the pd.DataFrame constructor. Here’s how you can do it:

Python code:

import pandas as pd

# Create a sample dictionary
data = {'StudentID': [101, 102, 103, 104],
        'Math_Score': [90, 85, 78, 92],
        'Science_Score': [88, 79, 92, 87]}

# Convert the dictionary to a DataFrame
df = pd.DataFrame(data)

# Print the data frame
print(df)

This code defines a dictionary data with keys as column names and values as lists representing the data for each column. It then uses the pd.DataFrame constructor to convert the dictionary into a DataFrame. This method is straightforward and works well for small to medium-sized datasets.

Also Read: Merge CSV Using Panda Library

Method 2: Using the from_dict Method

Pandas provides the from_dict method, which is a more structured way to convert a dictionary into a DataFrame. It allows you to specify the orient parameter to control the orientation of the DataFrame. By default, it assumes ‘columns’ orientation.

Python code:

import pandas as pd

# Create a sample dictionary
data = {'StudentID': [101, 102, 103, 104],
        'Math_Score': [90, 85, 78, 92],
        'Science_Score': [88, 79, 92, 87]}

# Convert the dictionary to a DataFrame using 'from_dict'
df = pd.DataFrame.from_dict(data)

# Print the data frame
print(df)

This code is very similar to the first method, but it uses the from_dict method instead of the constructor. It allows for more flexibility, especially when dealing with dictionaries that might have nested structures.

Method 3: Using the pd.DataFrame Constructor with Transposition

Your dictionary might sometimes arrange data in an alternate orientation, for example, using dictionary keys as column names and dictionary values as rows. In such cases, you can use the transposition technique to convert it into a DataFrame:

Python code:

import pandas as pd

# Create a sample dictionary with transposed data
data = {'StudentID': [101, 102, 103, 104],
        'Math_Score': [90, 85, 78, 92],
        'Science_Score': [88, 79, 92, 87]}

# Convert the dictionary to a DataFrame with transposition
df = pd.DataFrame(data).T

# Print the data frame
print(df)

In this example, the dictionary exists in a transposed format, and we use the .T attribute to transpose it after converting it into a DataFrame. This approach comes in handy when your data fits in rows, rather than columns.

Method 4: Using the pd.json_normalize Function

If your dictionary contains nested structures, such as dictionaries within dictionaries, you can use pd.json_normalize to flatten them into a DataFrame. This function is particularly useful for working with JSON data:

Python code:

import pandas as pd

# Create a sample dictionary with nested data
data = {
    'StudentID': [101, 102, 103, 104],
    'Scores': [{'Math': 90, 'Science': 88},
               {'Math': 85, 'Science': 79},
               {'Math': 78, 'Science': 92},
               {'Math': 92, 'Science': 87}]
}

# Convert the dictionary to a DataFrame using json_normalize
df = pd.json_normalize(data)

# Print the data frame
print(df)

In this example, the ‘Scores’ key in the dictionary contains nested dictionaries. pd.json_normalize is used to flatten this structure into separate columns in the DataFrame.

Also Try: How to Convert List to String in Python

Method 5: Using the pd.DataFrame Constructor with a List of Dictionaries

If your data is structured as a list of dictionaries, where each dictionary represents a row, you can directly convert it into a DataFrame using the pd.DataFrame constructor:

Python code:

import pandas as pd

# Create a list of dictionaries
data = [{'StudentID': 101, 'Math_Score': 90, 'Science_Score': 88},
        {'StudentID': 102, 'Math_Score': 85, 'Science_Score': 79},
        {'StudentID': 103, 'Math_Score': 78, 'Science_Score': 92},
        {'StudentID': 104, 'Math_Score': 92, 'Science_Score': 87}]

# Convert the list of dictionaries to a DataFrame
df = pd.DataFrame(data)

# Print the data frame
print(df)

This method is useful when you have a list of records, and each record is represented as a dictionary.

Method Comparison

Now, let’s compare the different ways to convert a Python dictionary to a dataframe.

MethodUse CaseFlexibilityNesting Support
pd.DataFrame ConstructorSimple dictionary with flat dataLimitedNot applicable
from_dictFlat or slightly nested dataModerateNot applicable
pd.DataFrame Constructor (with Transposition)Transposed dataLimitedNot applicable
pd.json_normalizeNested data (e.g., JSON structures)HighSupported
List of DictionariesList of dictionariesHighNot applicable
Python Dictionary to DataFrame
  • Use Case: Different methods are suitable for different data structures. Choose the one that best fits your specific use case.
  • Flexibility: Some methods offer more flexibility in handling different data structures, making them more versatile.
  • Nesting Support: If your data contains nested structures, the most suitable option pd.json_normalize is the most suitable option.

Also Read: Convert Python String to Int and Back to String

Conclusion

In conclusion, the choice of method to convert Python dictionary to DataFrame pandas depends on your specific use case and the structure of your data. The following is a step-by-step summary.

  • Use the pd.DataFrame constructor when you have simple, flat data in your dictionary.
  • If you have flat or slightly nested data, from_dict is a structured option.
  • Transpose your data if it is already oriented differently using the pd.DataFrame constructor with .T.
  • For nested data, especially in JSON-like structures, pd.json_normalize is the most suitable choice.
  • When you have a list of dictionaries representing individual records, convert it directly to a data frame.

Consider the structure and complexity of your data to make an informed decision.

Now that you have a solid understanding of these methods, you can efficiently transform your Python dictionaries into Pandas DataFrames for data analysis and manipulation.

Happy Coding!

Share This Article
Subscribe
Notify of
guest

0 Comments
Newest
Oldest
Inline Feedbacks
View all comments