Pandas DataFrame to JSON
In this post, you will learn how to convert Pandas DataFrame to JSON.
A DataFrame is a tabular-like data structure containing an ordered collection of columns. The each column can be of different data types, like numeric, boolean, string, etc. It has both a row and a column index. It is basically used for analytical purposes.
JSON (JavaScript Object Notation) is popular among developers for data serialization. It is a data format consisting of key-value pairs. It is widely used to transmit and receive data in JSON format between a server and a web applicationormat consisting of key-value pairs. It is so popular that every modern programming language has methods to generate and parse JSON formatted data.
Convert pandas DataFrame into JSON
We can use the function DataFrame.to_json() from the pandas library in Python to convert pandas DataFrames to JSON format.
DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, lines=False, compression='infer', index=True, indent=None, storage_options=None)
Parameter | Value | Uses |
path_or_buf | str, path object, file-like object, default None | File path or object. If None, the result is returned as a string. |
orient | split, records, index, columns, values, table, default='index' | Indication of expected JSON string format. |
date_format | None, 'epoch', 'iso', default='epoch' | The default depends on the orient. For orient='table', the default is 'iso'. For all other orients, the default is 'epoch'. |
double_precision | integer value, default=10 | The number of decimal places to use when encoding floating point values. |
force_ascii | boolean value, default=True | Force encoded string to be ASCII. |
date_unit | 's', 'ms', 'us', 'ns', default='ms' | The values represent second, millisecond, microsecond, and nanosecond respectively. |
default_handler | callable, default None | Handler to call if object cannot otherwise be converted to a suitable format for JSON. |
lines | bool, default False | If orient is 'records' write out line delimited json format. Will throw ValueError if incorrect orient since others are not list like. |
compression | str or dict, default 'infer' | A string representing the compression to use in the output file, only used when the first argument is a filename. |
index | bool, default True | Whether to include the index values in the JSON string. |
indent | integer value | Length of whitespace used to indent each record. |
Create a DataFrame
Suppose, we have the following data -
Name | Subject | Marks |
Smith | PHY | 90 |
Priska | CHM | 88 |
Andy | BIO | 89 |
Paul | SST | 82 |
STEP1: Create a dataframe
import pandas as pd
stu_dict = {'Name': ["Smith", "Priska", "Kashyap", "Andy"]
,'Subject': ["Phy", "Maths", "Chm", "Bio"],
'Marks': [90, 99, 92, 89]}
df = pd.DataFrame(stu_dict)
print(df)
Name Subject Marks
0 Smith Phy 90
1 Priska Maths 99
2 Kashyap Chm 92
3 Andy Bio 89
Convert pandas DataFrame into JSON
Here is the simple Python code to convert pandas Dataframe to JSON.
import pandas as pd
data = stu_dict = {'Name': ["Smith", "Priska", "Kashyap", "Andy"]
,'Subject': ["Phy", "Maths", "Chm", "Bio"],
'Marks': [90, 99, 92, 89]}
dataFrame = pd.DataFrame(data, columns = ['col1', 'col2', 'col3'])
json = dataFrame.to_json()
print(json)
Output of the above code:
{"Name":{"0":"Smith","1":"Priska","2":"Kashyap","3":"Andy"},
"Subject":{"0":"Phy","1":"Maths","2":"Chm","3":"Bio"},
"Marks":{"0":90,"1":99,"2":92,"3":89}}
Use DataFrame.to_json() to orient = 'records'
Here, we have used to orient='records' to convert DataFrame to JSON in format.
dataFrame = pd.DataFrame(data, columns = ['Name', 'Subject', 'Marks'])
json = dataFrame.to_json( orient = 'records')
print(json)
Output of the above code:
[{"Name":"Smith","Subject":"Phy","Marks":90},
{"Name":"Priska","Subject":"Maths","Marks":99},
{"Name":"Kashyap","Subject":"Chm","Marks":92},
{"Name":"Andy","Subject":"Bio","Marks":89}]
Use DataFrame.to_json() to orient = 'index'
Here, we have used to orient='index' to convert DataFrame to JSON in format.
dataFrame = pd.DataFrame(data, columns = ['Name', 'Subject', 'Marks'])
json = dataFrame.to_json( orient = 'index')
print(json)
Output of the above code:
{"0":{"Name":"Smith","Subject":"Phy","Marks":90},
"1":{"Name":"Priska","Subject":"Maths","Marks":99},
"2":{"Name":"Kashyap","Subject":"Chm","Marks":92},
"3":{"Name":"Andy","Subject":"Bio","Marks":89}}
Use DataFrame.to_json() to orient = 'split'
Here, we have used to orient='split' to convert DataFrame to JSON in format.
dataFrame = pd.DataFrame(data, columns = ['Name', 'Subject', 'Marks'])
json = dataFrame.to_json( orient = 'split')
print(json)
Output of the above code:
{"columns":["Name","Subject","Marks"],
"index":[0,1,2,3],
"data":[["Smith","Phy",90],["Priska","Maths",99],["Kashyap","Chm",92],["Andy","Bio",89]]}
Use DataFrame.to_json() to orient = 'table'
Here, we have used to orient='table' to convert DataFrame to JSON in format.
dataFrame = pd.DataFrame(data, columns = ['Name', 'Subject', 'Marks'])
json = dataFrame.to_json( orient = 'table')
print(json)
Output of the above code:
{"schema":{"fields":[{"name":"index","type":"integer"},{"name":"Name","type":"string"},{"name":"Subject","type":"string"},{"name":"Marks","type":"integer"}],"primaryKey":["index"],"pandas_version":"0.20.0"},"data":[{"index":0,"Name":"Smith","Subject":"Phy","Marks":90},{"index":1,"Name":"Priska","Subject":"Maths","Marks":99},{"index":2,"Name":"Kashyap","Subject":"Chm","Marks":92},{"index":3,"Name":"Andy","Subject":"Bio","Marks":89}]}
Use DataFrame.to_json() to orient = 'values'
Here, we have used to orient='values' to convert DataFrame to JSON in format.
dataFrame = pd.DataFrame(data, columns = ['Name', 'Subject', 'Marks'])
json = dataFrame.to_json( orient = 'values')
print(json)
Output of the above code:
[["Smith","Phy",90],["Priska","Maths",99],["Kashyap","Chm",92],["Andy","Bio",89]]
Related Articles
Python convert dataframe to numpy arrayWrite Python Pandas Dataframe to CSV
Python Pandas DataFrame
Python program to list even and odd numbers of a list
Convert List to Dataframe Python
Sort list in descending order Python
Convert array to list Python
Python take screenshot of specific window
Web scraping Python BeautifulSoup
Convert dictionary to dataframe Python
Python program to add two numbers
Print new line python
Python for loop index
Convert List to Dataframe Python
numpy random choice
Python Pandas CSV to Dataframe
Check if list is empty Python
Python raise keyword
Python program to get the largest number from a list
Python program to map two lists into a dictionary