Necesito dividir datos en una base de datos CSV utilizando pandas en Python y escribirlos en un archivo XLSX con varias hojas, además de crear una columna adicional.
Tengo una base de datos (accesible: https://datacatalog.worldbank.org/search/dataset/0041443/World—Global-Tracking-Framework, descarga el archivo CSV “Renewable Energy Indicator Results”) con la que necesito trabajar y manipular. El objetivo es importar la base de datos en Python con pandas, eliminar 2 columnas, agregar una columna adicional al final con el contenido que sea un promedio de la cantidad de datos recopilados durante 24 años (1990-2014). Una vez hecho esto, la primera columna debe ser el nombre de la serie compuesto por [‘Consumo total final de energía (TFEC) (TJ)’, ‘Participación de energía renovable en el consumo total final de energía (%)’, ‘Consumo de energía renovable (TJ)’, ‘Participación de la electricidad renovable en la producción total de electricidad (%)’, ‘Producción total de electricidad (GWh)’, ‘Producción de electricidad renovable (GWh)’], luego los nombres de los países y luego los datos de los años 1990-2014 y el promedio. El problema que tengo es que los datos están divididos en dos columnas, primero por nombre de serie y luego por país. Me gustaría exportar estos datos a un archivo xlsx en el que el archivo de Excel tenga 6 hojas, cada hoja que contenga los datos relativos al nombre de la serie. Es decir, una hoja para el consumo total final de energía (TFEC) (TJ) donde la primera columna sean los nombres de los países y luego los datos de los años posteriores, y lo mismo para las otras series.
Soy nuevo en la programación y estoy encontrando dificultades para encontrar soluciones a este problema hasta ahora. A continuación está el código que he logrado crear hasta ahora. P.S. Estoy utilizando Jupyter Notebook para programar.
1: import pandas as pd
2: df = pd.read_csv('gtfrenewableenergydata.csv')
3: df.drop(['Series Code', 'Country Code'], inplace=True, axis=1)
4: df.insert(27, "Promedio Total", df.mean(axis=1))
5: my_writer = pd.ExcelWriter('ProyectoExcel.xlsx', engine='xlsxwriter')
6: df.to_excel(my_writer, sheet_name='Proyecto de Energía Renovable', index=False)
7: my_writer.save()
Sé que en la línea 4 el código es incorrecto, ya que la nueva columna está produciendo NaN en lugar del promedio de los 24 años. También no tengo ningún código para dividir los datos en múltiples hojas, ya que aún no puedo resolver ese problema.
¡CUALQUIER AYUDA SERÍA MUY APRECIADA!
davy.ai
Para calcular el promedio de los 24 años de datos, necesitas seleccionar solo las columnas con los datos (años 1990-2014), por lo que puedes utilizar el método de filtro de pandas para seleccionar las columnas relevantes:
Esto seleccionará todas las columnas que comienzan con un número del 1 al 2, seguido de 3 dígitos, que corresponden a los años 1990-2014.
Luego, puedes calcular el valor promedio de cada fila utilizando el método mean a lo largo del eje 1:
Esto calculará el valor promedio para cada fila (es decir, para cada país e indicador).
Para dividir los datos en múltiples hojas según el nombre del indicador, puedes utilizar el método groupby de pandas:
Esto agrupará el dataframe por la columna “Nombre de la Serie” y recorrerá cada grupo. Para cada grupo, seleccionará las columnas relevantes, eliminará la columna duplicada del nombre de la serie y escribirá los datos en una hoja con el nombre del indicador.
El código final se vería así: