Búsqueda de sitios web

¿Cómo convertir pandas DataFrame a JSON en Python?


Pandas es una popular biblioteca de Python para manipulación y análisis de datos. Una tarea común al trabajar con Pandas es convertir un DataFrame a un formato JSON (JavaScript Object Notation), que es un formato ligero de intercambio de datos ampliamente utilizado en aplicaciones web. La conversión de pandas DataFrame a JSON puede resultar útil para compartir, almacenar y transferir datos entre diferentes lenguajes de programación.

En este tutorial, analizaremos cómo convertir un DataFrame de Pandas a JSON utilizando las funciones integradas de Pandas, exploraremos diferentes opciones y parámetros para la conversión y proporcionaremos ejemplos de cómo manejar escenarios específicos.

Conversión de Pandas DataFrame a JSON

En la biblioteca pandas de Python, podemos utilizar la función DataFrame.to_json() para transformar pandas DataFrames al formato JSON. Esta función ofrece diversas personalizaciones que nos permiten obtener los formatos JSON deseados. En las próximas secciones profundizaremos en los parámetros aceptados de esta función y examinaremos las opciones de personalización con más detalle.

Estos son algunos de los parámetros importantes y sus posibles valores que se pueden usar en la función DataFrame.to_json() para convertir un DataFrame de pandas a JSON:

  • path_or_buf: la ubicación de salida donde se guardará el JSON resultante. Puede ser una ruta de archivo o un objeto de búfer. El valor predeterminado es Ninguno.

  • orient: el formato del JSON resultante. Los valores posibles son "división", "registros", "índice", "columnas" y "valores". El valor predeterminado es 'columnas'.

  • date_format: el formato de fecha utilizado para columnas similares a fechas en el DataFrame. Puede ser cualquier cadena de formato de fecha y hora válida. El valor predeterminado es Ninguno.

  • double_precision: la precisión de los números de punto flotante en JSON. Puede ser un valor entero que especifique el número de decimales que se incluirán. El valor predeterminado es 10.

  • force_ascii: si se codifican caracteres que no sean ASCII como secuencias de escape Unicode. El valor por defecto es verdadero.

  • date_unit: la unidad de la marca de tiempo en columnas similares a fechas. Los valores posibles son 's' para segundos, 'ms' para milisegundos y 'us' para microsegundos. El valor predeterminado es 'ms'.

Examinemos algunos ejemplos para comprender mejor cómo se usa la función DataFrame.to_json().

Ejemplo 1: uso básico

Considere el código que se muestra a continuación. En este código, creamos una matriz NumPy de 2 × 2 llamada array_data, que contiene cuatro valores de cadena. Luego convertimos esta matriz en un DataFrame de pandas llamado df, con los nombres de columna 'col1' y 'col2'. Finalmente, usamos la función to_json() para convertir el DataFrame en una cadena JSON, que imprimimos en la consola usando la función print().

import numpy as np
import pandas as pd

# create a NumPy array with two rows and two columns
array_data = np.array([['1', '2'], ['3', '4']])

# convert the NumPy array into a pandas DataFrame with column names
df = pd.DataFrame(array_data, columns=['col1', 'col2'])

# convert the DataFrame to a JSON string
json_data = df.to_json()

# print the resulting JSON string
print(json_data)

Producción

Al ejecutarse, producirá el siguiente resultado:

{"col1":{"0":"1","1":"3"},"col2":{"0":"2","1":"4"}}

Ejemplo 2: convertir DataFrame a JSON

Ahora mire un ejemplo de cómo usar estos parámetros en la función DataFrame.to_json() para convertir un DataFrame de pandas a JSON.

Considere el código que se muestra a continuación. En este ejemplo, configuramos el parámetro path_or_buf en 'output.json' para guardar los datos JSON en un archivo llamado 'output.json'. Establecemos el parámetro de orientación en 'registros' para formatear el JSON como una lista de registros.

También configuramos el parámetro date_format en 'iso' para usar el formato de fecha ISO para columnas similares a fechas, y el parámetro double_precision en 2 para incluir dos decimales para números de punto flotante. Finalmente, configuramos force_ascii en False para conservar caracteres no ASCII y date_unit en 'ms' para usar milisegundos como unidad para las marcas de tiempo.

import pandas as pd

# create a sample DataFrame
df = pd.DataFrame({
   'Name': ['John', 'Jane', 'Bob'],
   'Age': [30, 25, 40],
   'Salary': [50000.0, 60000.0, 70000.0],
   'Join_date': ['2022-01-01', '2021-06-15', '2020-11-30']
})

# convert the DataFrame to JSON
json_data = df.to_json(
   path_or_buf='output.json',
   orient='records',
   date_format='iso',
   double_precision=2,
   force_ascii=False,
   date_unit='ms'
)

# print the resulting JSON
print(json_data)

Producción :

Al ejecutarse, creará un nuevo archivo llamado "output.json" y el contenido del archivo se muestra a continuación:

[
   { "Name": "John", "Age": 30, "Salary": 50000.0, "Join_date": "2022-01-01" },
   { "Name": "Jane", "Age": 25, "Salary": 60000.0, "Join_date": "2021-06-15" },
   { "Name": "Bob", "Age": 40, "Salary": 70000.0, "Join_date": "2020-11-30" }
]

Conclusión

En conclusión, convertir un DataFrame de pandas al formato JSON en Python es un proceso sencillo que se puede lograr utilizando el método to_json() proporcionado por la biblioteca de pandas.

Este método permite una variedad de personalizaciones, como especificar el formato de salida JSON, el formato de fecha y la precisión. También brinda la capacidad de escribir la cadena JSON resultante en un archivo, lo que facilita compartir datos con otros sistemas. Con un conocimiento básico del método to_json() y sus parámetros, puede convertir fácilmente sus DataFrames de pandas al formato JSON para usarlos en una amplia gama de aplicaciones.