Empecemos por explicar qué es pandas: pandas es una herramienta de manipulación y análisis de datos de código abierto rápida, potente, flexible y fácil de usar, construida sobre el lenguaje de programación Python.
Ahora vamos a describir los metodos que vamos a utilizar las cuales son: read_csv(), to_excel(), to_csv(), todo esto lo encontramos en la documentación oficial de pandas.
read_csv: Lee un archivo de valores separados por comas (csv) en DataFrame. También admite, opcionalmente, iterar o dividir el archivo en fragmentos, este método nos permite enviar diferentes parámetros, ahora solo vamos a explicar los que usaremos más adelante.
- filepath_or_bufferstr: objeto de ruta u objeto similar a un archivo. Cualquier ruta de cadena válida es aceptable. La cadena podría ser una URL. Los esquemas de URL válidos incluyen http, ftp, s3, gs y archivo.
- sep: default ',': Delimitador a utilizar. Si sep es Ninguno, el motor C no puede detectar automáticamente el separador, pero el motor de análisis de Python sí puede, lo que significa que este último se usará y detectará automáticamente el separador mediante la herramienta rastreadora integrada de Python, csv.Sniffer.
- header: int, list of int, None, default ‘infer’: Número(s) de fila para usar como nombres de columna y el inicio de los datos. El comportamiento predeterminado es deducir los nombres de las columnas: si no se pasan nombres, el comportamiento es idéntico a header=0y los nombres de las columnas se deducen de la primera línea del archivo.
Dataframe: El DataFrame es la estructura de datos fundamental de Pandas, representa una tabla de datos panel con indexación integrada. Cada columna contiene los valores de una variable y cada fila un conjunto de valores de cada columna. El dataframe tiene algunos métodos que nos permitir generar archivo con el contenido del mismo, los cuales son;
to_excel: Escribir objeto en una hoja de Excel. Para escribir un solo objeto en un archivo .xlsx de Excel, solo es necesario especificar un nombre de archivo de destino. Para escribir en varias hojas, es necesario crear un objeto ExcelWriter con un nombre de archivo de destino y especificar una hoja en el archivo para escribir. Este método también puede recibir algunos parámetros, vamos a explicar solo el que usaremos más adelante.
- excel_writer: Ruta del archivo o ExcelWriter existente, es un string, dónde podemos espcificar el nombre del archivo y ruta dónde se va a guardar el excel resultante.
to_csv: Escriba el objeto en un archivo de valores separados por comas (csv). Al igual que to_excel a este método podemos enviar algunos paraḿetros, nuevamente solo vamos a explicar el que usaremos más adelante.
- path_or_buf: String, objeto de ruta (que implementa os.PathLike[str]) u objeto similar a un archivo que implementa una función write().
Una vez conociendo lo anterior, vamos a iniciar con la explicación del código, este lo encuentras en mi reposositorio de github, usaremos un archivo txt de ejemplo que también se encuentra en el repositorio
Importar la libreria de pandas y leer el archivo.
Leemos el archivo y le pasamos como primer parámetro la ruta del archivo, el segundo parámetro es el delimitador, para este caso es un tabulador por eso usamos \t, y como tercer parámetro un array con los nombres de las columnas.
import pandas as pd
# Leer el archivo de texto en pandas Dataframe y crear encabezados
print("Leyendo archivo") df = pd.read_csv("./files/example.txt", sep="\t", names=["Name", "Team", "Number", "Position", "Age", "Height", "Weight", "College", "Salary"])
El contenido del archivo lo guardamos en un DataFrame llamado df, si mandamos a imprimir esa dataframe obtendríamos lo siguiente:
pepe@thinkpad-t540p:~/www/personal/pandas/txt-to-excel$ python3 main.py
Leyendo archivo
Name Team Number Position Age Height Weight College Salary
0 Avery Bradley Boston Celtics 0 PG 25 6-2 180 Texas 7730337.0
1 Jae Crowder Boston Celtics 99 SF 25 6-6 235 Marquette 6796117.0
2 John Holland Boston Celtics 30 SG 27 6-5 205 Boston University NaN
3 R.J. Hunter Boston Celtics 28 SG 22 6-5 185 Georgia State 1148640.0
4 Jonas Jerebko Boston Celtics 8 PF 29 6-10 231 NaN 5000000.0
.. ... ... ... ... ... ... ... ... ...
94 Branden Dawson Los Angeles Clippers 22 SF 23 6-6 225 Michigan State 525093.0
95 Jeff Green Los Angeles Clippers 8 SF 29 6-9 235 Georgetown 9650000.0
96 Blake Griffin Los Angeles Clippers 32 PF 27 6-10 251 Oklahoma 18907726.0
97 Wesley Johnson Los Angeles Clippers 33 SF 28 6-7 215 Syracuse 1100602.0
98 DeAndre Jordan Los Angeles Clippers 6 C 27 6-11 265 Texas A&M 19689000.0
[99 rows x 9 columns]
Generar el excel
Vamos a generar un excel utilizado el método to_excel propio de un Dataframe, para esto debemos pasar la rurta, yo lo guardaré en una carpeta llamada files creada previamente y el archivo excel llevara por nombre export.xlsx
# Exportar excel
print("Generando excel")
df.to_excel("./files/export.xlsx")
Generar csv
Para eso utilizaremos el método to_csv también propio de un Dataframe y le pasaremos la ruta dónde lo deseamos guardar, al igual que el el excel lo guardaré en un carpeta llamada files creada previamente y el archivo llevará por nombre export.csv
# Exportar csv
print("Generando csv")
df.to_csv("./files/export.csv")
Si en este momento ejecutamos el script obtendremos el siguiente resultado en nuestra terminal
pepe@thinkpad-t540p:~/www/personal/pandas/txt-to-excel$ python3 main.py
Leyendo archivo
Generando excel
Generando csv
pepe@thinkpad-t540p:~/www/personal/pandas/txt-to-excel$
Y los archivos se verían de la siguiente manera
Eliminar index
En la imagen anterior observamos una columna extra sin header en la cual nos muestra el número de registros, si no necesitamos esto deberemos pasar el parámeteo index=False en nuestro método to_excel o to_csv, generaremos otro archivo llamado export-without-index.xlsx para poder notar la diferencia.
# Exportar excel sin index
print("Genernado excel sin index")
df.to_excel("./files/export-without-index.xlsx", index=False)
Ejecutar el script
Ahora volvemos a ejecutar el script y obtendremos el siguiente resultado en nuestra terminal
pepe@thinkpad-t540p:~/www/personal/pandas/txt-to-excel$ python3 main.py
Leyendo archivo
Generando excel
Generando csv
Genernado excel sin index
pepe@thinkpad-t540p:~/www/personal/pandas/txt-to-excel$
Y el resultado será un excel que se verá como el siguiente
Conclusiones
En este pequeños tutorial hemos visto un ejemplo básico de como leer un archivo text, guardar su contenido en un Dataframe y exportarlo a archivos excel y csv, si requieres algo especifico siempre puedes consultar la documentación oficial sobre Dataframe o dejar un comentario, solo tienes que registrarte y responderemos tu duda a la brevedad.0 Comentarios
0