Post Top Ad

Your Ad Spot

martes, 29 de septiembre de 2020

Cómo usar Python con Excel

 

Microsoft Excel es posiblemente el software empresarial más popular del planeta, y casi todas las empresas lo utilizan de una forma u otra. El dominio de Excel es una habilidad imprescindible en muchos trabajos. Aquí está el problema. La gestión manual de datos en Excel suele ser bastante repetitiva y tediosa. ¿No sería genial si aún pudiera aprovechar el poder de Microsoft Excel mientras reduce la repetición? Ingrese al lenguaje de programación Python. Así como Excel es una de las aplicaciones informáticas más populares, Python es uno de los lenguajes de programación más populares. Una vez que haya aprendido Python básico, puede integrar Python y Excel para optimizar su flujo de trabajo, aligerar su carga de trabajo, lograr más en menos tiempo y, en general, ser más efectivo. En este tutorial, vamos a examinar cómo empezar a usar Python y Exel juntos.


Cómo cargar y guardar datos usando Pandas

Pandas es la popular biblioteca de código abierto escrita en Python diseñada explícitamente para el análisis y la manipulación de datos. Pandas puede trabajar directamente con archivos de Excel a través de algo llamado marco de datos . Un marco de datos es como una hoja de cálculo en la memoria de su aplicación Python. Un marco de datos tiene filas indexadas y columnas de encabezado que almacenan lo que se llama una serie. La serie almacena todos los valores en las filas y columnas, casi como la lista. Dado que estos dos objetos son iterables, Pandas facilita el recorrido y la recogida de datos. Usando el marco de datos, podemos hacer cualquier tipo de análisis o agrupación que queramos y exportarlo a Excel. ¡Frio!

Instalar Pandas

Para comenzar con Pandas, asegúrese de tenerlo instalado. El comando pip install pandas debería funcionar.

pip instalar pandas

Ya que estamos en eso, también deberíamos ejecutar pip install openpyxl y pip install xlrd ya que también trabajaremos con estos módulos.


Cargando y guardando datos usando Pandas

Para comenzar a trabajar con datos en Pandas, necesitamos importar algunos datos de archivos. Los dos primeros métodos de Pandas para ayudarnos con esto son .read_excel () y .read_csv () . También puede crear marcos de datos en Pandas a partir de listas u objetos en código.

Marco de datos de Excel

En este primer ejemplo, tenemos un archivo llamado regiondata.xlsx. Solo tiene algunos datos de muestra simples para ver.

leer archivo xlsx en pandas

Ahora podemos usar Python para leer ese archivo .xlsx en un marco de datos y luego generar los resultados. Hacemos esto llamando a import pandas como pd . También podemos importar el módulo openpyxl que permitirá guardar en un documento de Excel. Una vez que los tengamos, solo necesitamos inicializar nuestro marco de datos usando .read_excel () .

Puede ver que Pandas usa índices para filas y encabezados para columnas. En este caso, los índices son números enteros y nuestros encabezados son cadenas, como región, unidad, ventas y exportaciones.

imprimir marco de datos como salida en pandas

Marco de datos CSV

Ahora sigamos adelante y leamos un archivo CSV en un marco de datos usando Pandas. Para esto podemos usar el método pandas .read_csv ()Aquí está el archivo CSV que queremos abrir.

pandas archivo CSV para leer

Podemos ver que los índices están presentes, pero la primera fila de datos actúa como encabezado para el resto del archivo. Realmente no queremos esto, por lo que debemos especificar que no hay ningún encabezado presente en el archivo CSV.

salida de python pandas read_csv

Para solucionar esto, todo lo que tenemos que hacer es agregar un argumento de encabezado y establecerlo en Ninguno. Cuando ejecutamos esto nuevamente, podemos ver que ahora los encabezados están basados ​​en números enteros.

argumento de encabezado de pandas read_csv

Establecer nombres de columna

Esos números enteros podrían ser más útiles si fueran nombres descriptivos de lo que realmente es cada columna. Podemos encargarnos de esto configurando las columnas . Simplemente asignamos una lista con cada elemento correspondiente a la columna que queremos nombrar.

pandas nombre de la columna a través de la lista

Pandas CSV a Excel

Ahora sigamos adelante y guardemos el archivo CSV en un archivo de Excel de tipo .xlsx. Esto se hace usando el método .to_excel () y pasando la ruta y el nombre del archivo.

Esto crea un nuevo archivo de Excel en el directorio que especificamos, y cuando abrimos ese archivo en Excel podemos ver que tiene los índices y encabezados como esperamos.

pandas csv para excel método

Marco de datos de archivo de texto

Curiosamente, la creación de un marco de datos a partir de un archivo de texto se realiza utilizando la misma función .read_csv (). Esto se debe a que no hay mucha diferencia entre un archivo CSV y un archivo de texto, excepto por algunas diferencias menores de formato. Tenemos un archivo de texto que tiene más de 11.000 filas de datos. Los pandas pueden leer esta gran cantidad de datos muy rápido.

El archivo en sí está delimitado por tabuladores, por lo que necesitamos especificar delimiter = '\ t' como segundo argumento de la función .read_csv (). Pandas proporciona la salida como vemos aquí, con la parte central de filas omitidas ya que hay tantas filas en el conjunto de datos.

Python pandas read_csv archivo de texto


Cómo ver e inspeccionar datos con pandas

Cuando se trabaja con pandas, obtener lo que desea de los datos es una cuestión de manipular el marco de datos. Veamos algunas funciones de selección y visualización, además de guardar nuestros valores deseados en una hoja de Excel.

Cómo trabajar con columnas en pandas

El siguiente código está operando en el mismo archivo some_names.csv de antes donde habíamos asignado nombres de columna. Imagínese si tuviera que lidiar con una hoja de cálculo con tantas columnas que fuera difícil leer los datos en la terminal. Necesita saber qué columnas contienen qué para poder acceder a los datos que necesita para continuar. Para hacer esto, podemos usar la misma función que usamos para asignar las columnas. La impresión de la variable dataframe_csv.columns nos muestra los datos con los que estamos trabajando.

Índice (['Primero', 'Último', 'Dirección', 'Ciudad', 'Estado', 'Código postal', 'Población'], dtype = 'objeto')

Esto nos muestra cómo los datos se dividen por columna, lo que nos permite ahora poder ver solo una columna si lo deseamos. Los marcos de datos de Pandas son una estructura de datos de varias filas y columnas, como una matriz. Esto facilita trabajar con todos los datos en una sola columna, o en una fila si queremos. No se necesitan bucles y todo lo que tenemos que hacer es indexar por el nombre de la columna. Digamos que queremos el nombre de pila. Luego, simplemente tomamos el índice de Nombre y esto imprime todos los valores en la columna de Nombre y sus índices.

0 Liam
1 Noé
2 Emma
3 Olivia
4 Ava
5 Santiago
Nombre: Primero, dtype: object

Si desea acceder a los datos de varias columnas, puede pasar una lista. Digamos que queremos las columnas Dirección y Estado. Simplemente construimos una lista con esos dos valores, luego los pasamos usando notación entre corchetes. Ahora tenemos tanto la Dirección como el Estado y sus índices.

            Dirección Estado
0 3 Jackson Drive MI
1 81 Emerson Way CO
2 17 Upside Lane TX
3712 Front Street CA
4 24 Seven Street ID
5 11 Breaker Lane OH

Cuando una hoja de cálculo tiene cientos de filas de datos, es posible que desee centrarse en un subconjunto de los datos en una columna en particular, por ejemplo. Esto se puede hacer usando la división, y la sintaxis es el enfoque de división estándar de Python al que está acostumbrado. En este ejemplo a continuación, queremos ver la columna Zip, pero solo los dos primeros resultados. La línea resaltada muestra la sintaxis de corte para lograrlo.

0 49508
1 80922
Nombre: Zip, dtype: int64

Cómo trabajar con filas en pandas

Veamos cómo trabajar con algunas filas en Pandas ahora que hemos aprendido un poco sobre columnas. Pandas indexa las filas con números enteros automáticamente, y podemos usar estos índices para ubicarlos específicamente con la función .iloc . En el siguiente ejemplo, pasamos 2 como índice y lo imprimimos en la pantalla. Los datos impresos son la fila que esperamos.

Primera Emma
Último Williams
Dirección 17 Upside Lane
Ciudad Watauga
Estado TX
Cremallera 76148
120000 habitantes
Nombre: 2, dtype: object

Si está mirando la hoja de cálculo real en Excel, el código anterior selecciona la fila que se ve aquí.

pandas iloc función fila

También puede profundizar y seleccionar celdas individuales en la hoja de cálculo. Nuevamente, el marco de datos en la memoria es como una matriz, tal como vemos visualmente. Consideremos que queremos acceder a los datos de la celda encerrados aquí.

acceder a una celda específica en pandas

Sería posible encontrar estos datos usando iteración, pero es más eficiente pasar dos números o variables a .iloc [] en la forma en que corresponden a un valor de fila-columna o sistema de coordenadas. Entonces, en nuestro ejemplo, queremos el texto encerrado en un círculo arriba. En Pandas, sabemos que los índices se numeran a partir de cero y nuestros encabezados son cadenas. Lo que también es cierto es que cuando se usa la función .iloc [], los encabezados también corresponden a valores enteros que comienzan en cero. El primer argumento es la fila y el segundo es la columna. Dado que estos son de base cero, queremos la fila del número entero 3 y la columna del número entero 2.

712 Front Street

Guardar datos extraídos

Ahora que tenemos el conocimiento de cómo acceder a los datos por columna, fila o coordinador, podemos ver cómo es fácil profundizar solo en los datos que queremos. Con esto en mente, digamos que queremos acceder a un subconjunto de datos y luego almacenar esos datos en su propia hoja de cálculo. Podemos usar el código como vemos aquí para lograr ese objetivo.

Al abrir el archivo extraído_datos.xlsx en Excel, se muestra que tiene los datos exactos en los que estábamos profundizando. ¡Muy genial!

los pandas extraen y guardan en una nueva hoja de cálculo


Cómo filtrar y ordenar datos usando Pandas

Puede filtrar y ordenar datos en Pandas de casi innumerables formas, veremos algunos de los ejemplos más simples aquí. Este primer ejemplo simplemente busca todas las filas que tienen el valor de Worthington en la columna Ciudad.

   Nombre Apellido Dirección Ciudad Estado Código Postal Población
4 Zach Price 99 Eleven Way Worthington OH 43085 68000
8 James Miller 11 Breaker Lane Worthington OH 43085 68000

Para combinar dos condiciones al filtrar datos en Pandas, use el operador & como vemos a continuación. Este código verifica todas las filas donde la ciudad es Kentwood * y * la primera columna tiene un valor de Sam.

  Nombre Apellido Dirección Ciudad Estado Código Postal Población
0 Sam Smith 3 Jackson Drive Kentwood MI 49508 45000
6 Sam Miller 75 High Street Kentwood MI 49508 45000

Si solo desea trabajar en un subconjunto de los datos, puede eliminar columnas usando la función .drop ().

    Primera Última Ciudad Estado Código postal
0 Sam Smith Kentwood MI 49508
1 Sally Holmes Boise ID 83704
2 Noah Johnson C Springs CO 80922
3 Emma Williams Watauga TX 76148
4 Zach Price Worthington OH 43085
5 Olivia Jones C Valley CA 94546
6 Sam Miller Kentwood MI 49508
7 Ava Brown Boise ID 83704
8 James Miller Worthington OH 43085

Aquí podemos crear una nueva columna con un valor predeterminado de falso. Luego, podemos mirar los datos en otras columnas y cambiar ese valor a Verdadero según una condición. En este caso, verificamos si la columna de estado tiene un valor de OH, y si lo tiene, seguimos adelante y configuramos la nueva columna que definimos como Verdadero.

    Primera Última Ciudad Estado Código Postal T o F
0 Sam Smith Kentwood MI 49508 Falso
1 Sally Holmes Boise ID 83704 Falso
2 Noah Johnson C Springs CO 80922 Falso
3 Emma Williams Watauga TX 76148 Falso
4 Zach Price Worthington OH 43085 Verdadero
5 Olivia Jones C Valley CA 94546 Falso
6 Sam Miller Kentwood MI 49508 Falso
7 Ava Brown Boise ID 83704 Falso
8 James Miller Worthington OH 43085 Verdadero

En los dos ejemplos siguientes, usamos el método .sort_values ​​() para ordenar los datos en una columna en particular.

    Nombre Apellido Dirección Ciudad Estado Código Postal Población
7 Ava Brown 24 Seven Street Boise ID 83704 30000
3 Emma Williams 17 Upside Lane Watauga TX 76148 120000
8 James Miller 11 Breaker Lane Worthington OH 43085 68000
2 Noah Johnson 81 Emerson Way C Resortes CO 80922 18000
5 Olivia Jones 712 Front Street C Valley CA 94546 90000
1 Sally Holmes 12 Front Drive Boise ID 83704 30000
0 Sam Smith 3 Jackson Drive Kentwood MI 49508 45000
6 Sam Miller 75 High Street Kentwood MI 49508 45000
4 Zach Price 99 Eleven Way Worthington OH 43085 68000

Para ordenar los datos en la otra dirección, simplemente agregue ascendente = Falso como segundo argumento.

    Nombre Apellido Dirección Ciudad Estado Código Postal Población
4 Zach Price 99 Eleven Way Worthington OH 43085 68000
0 Sam Smith 3 Jackson Drive Kentwood MI 49508 45000
6 Sam Miller 75 High Street Kentwood MI 49508 45000
1 Sally Holmes 12 Front Drive Boise ID 83704 30000
5 Olivia Jones 712 Front Street C Valley CA 94546 90000
2 Noah Johnson 81 Emerson Way C Resortes CO 80922 18000
8 James Miller 11 Breaker Lane Worthington OH 43085 68000
3 Emma Williams 17 Upside Lane Watauga TX 76148 120000
7 Ava Brown 24 Seven Street Boise ID 83704 30000

Controlar Excel directamente con Openpyxl

Openpyxl es otra biblioteca popular que es buena para buscar ciertos datos, copiar y pegar en nuevos documentos de Excel o simplemente para tratar de que sus datos se vean bien. Es un paquete en Python que permite que su código interactúe directamente con documentos de Excel. Con Openpyxl, puede manipular no solo los datos de la hoja de cálculo, sino también las propiedades de la propia hoja de cálculo. Openpyxl hace esto almacenando un libro de trabajo de Excel, así como las hojas de trabajo, como objetos que se pueden modificar con código Python. Openpyxl es el módulo más utilizado para trabajar específicamente con Excel, ya que permite a los desarrolladores hacer cualquier cosa, desde diseñar hojas de estilo hasta analizar datos o crear gráficos. Para comenzar con Openpyxl, instálelo con el comando pip install openpyxl .

.load_workbook ()

Tenemos un archivo llamado stock_options.xlsx que podemos usar para algunos ejemplos. Es necesario un resumen rápido de los términos de Excel antes de comenzar.

  • Libro de trabajo : el documento de Excel en sí se llama Libro de trabajo.
  • Extensión .xlsx : se guarda un solo libro en un archivo con la extensión .xlsx.
  • Hojas de trabajo (hojas) : cada libro de trabajo puede tener varias hojas de trabajo.
  • Columnas : las columnas están alineadas verticalmente y usan letras para identificación.
  • Filas : las filas se alinean horizontalmente y utilizan números para su identificación.
  • Celda : en la intersección de una columna y una fila se encuentra lo que se conoce como celda.

El archivo de Excel con el que trabajaremos se ve así.

Datos de Excel para Openpyxl

Para comenzar a trabajar con un libro de trabajo, podemos usar código como vemos aquí.

La impresión de la variable del libro de trabajo muestra que es un objeto de tipo Libro de trabajo.

<clase 'openpyxl.workbook.workbook.Workbook'>

Cómo acceder a las hojas de trabajo

Un libro de trabajo puede contener varias hojas de trabajo. En openpyxl, podemos acceder a un objeto de hoja de trabajo de varias formas. Si conoce el nombre de la hoja de trabajo con la que desea trabajar, este código le conviene.

<clase 'openpyxl.worksheet.worksheet.Worksheet'>

Si no sabe el nombre de la hoja de trabajo a la que desea acceder, puede verificar qué nombres existen con una simple llamada a .sheetnames.

['Hoja1', 'Hoja2', 'Hoja3']

Cómo acceder a celdas en hojas

Una vez que tenga un objeto de hoja con el que trabajar, puede acceder a sus celdas y valores con bastante facilidad.

SFIX

También puede acceder a una celda usando el método .cell () y pasando tanto la fila como la columna como números enteros.

0.3745

El enfoque de usar el método .cell () es bueno cuando desea iterar sobre los valores en la hoja. Por ejemplo:

CCJ
SFIX
FE
WLL
ACC

También podemos usar el corte para seleccionar un rango de celdas. He aquí un ejemplo de eso.

((<Celda 'Hoja1'.A1>,), (<Celda' Hoja1'.A2>,), (<Celda 'Hoja1'.A3>,))

Para seleccionar una columna completa, simplemente podemos especificar la columna que queremos. Luego imprimiremos el número de elementos en esa columna, ya que imprimir todos los datos sería demasiado para verlos en un documento tan grande. Podemos ver que hay 923 valores en la columna A.

923

Este código nos muestra todas las celdas que tienen valores en la fila 1.

(<Celda 'Hoja1'.A1>, <Celda' Hoja1'.B1>, <Celda 'Hoja1'.C1>, <Celda' Hoja1'.D1>, <Celda 'Hoja1'.E1>, <Celda' Hoja1 '.F1>, <Celda' Hoja1'.G1>, <Celda 'Hoja1'.H1>, <Celda' Hoja1'.I1>, <Celda 'Hoja1'.J1>,
 <Celda 'Hoja1'.K1>, <Celda' Hoja1'.L1>, <Celda 'Hoja1'.M1>, <Celda' Hoja1'.N1>, <Celda 'Hoja1'.O1>)

Se accede a las celdas mediante la combinación de encabezados de cadena y los números enteros y las columnas son solo los encabezados. Para las filas, solo usamos el número entero y aún accedemos a ellos a través de nuestra hoja de trabajo. Al igual que con otras funciones, si quisiéramos tomar una fila, indexamos por un número específico. Pero si quisiéramos tomar varias filas, usamos el método de corte.

La función de acceso final que podemos observar es la iteración a través de columnas o filas. Cuando iteramos a través de estos objetos, usamos una función específica en nuestro bucle for. Así que repasemos la función de filas. La función de la columna es exactamente la misma pero las palabras se cambian. En iter_rows o iter_columnsfunción, tenemos que especificar los mínimos y máximos para nuestras filas y columnas. Estableceremos nuestra fila mínima en uno, nuestra columna máxima en tres y nuestra fila máxima en dos. Dentro del ciclo, iteramos a través de los objetos nuevamente. Ahora notará que deberíamos imprimir las celdas desde una fila mínima de uno, una columna mínima de uno, hasta una fila máxima de dos y una columna máxima de tres. Podemos ver que nuestra fila mínima uno corresponde a la primera fila y nuestra fila máxima corresponde solo a la segunda. Entonces ves que solo tenemos de A1 a C2. La columna máxima igual a tres nos pone hasta C.

<Celda 'Hoja1'.A1>
<Celda 'Hoja1'.B1>
<Celda 'Hoja1'.C1>
<Celda 'Hoja1'.A2>
<Celda 'Hoja1'.B2>
<Celda 'Hoja1'.C2>

Creación de nuevos libros y hojas de trabajo

No tenemos que importar un archivo de Excel ya existente cuando usamos openpyxl. El siguiente código crea un libro de trabajo con tres hojas de trabajo.

['Mi hoja impresionante', 'Primera hoja', 'Segunda hoja']

Para agregar algunos datos a una de las Hojas de Trabajo en nuestro Libro de Trabajo, podemos asignar un valor a la celda que nos interesa. Luego guardaremos el libro de trabajo y lo veremos en Excel.

openpyxl crear libro de trabajo hoja de trabajo guardar

Cómo dar formato a los libros de trabajo

Al presentar grandes conjuntos de datos a otras personas, es útil formatearlos de tal manera que sean legibles y comprensibles. Si desea crear un Excel estilizado y profesional, openpyxl proporciona las herramientas de formato perfectas. En el siguiente ejemplo, usamos algunas de las herramientas de formato disponibles en openpyxl para agregar un buen encabezado a la hoja de cálculo. Al insertar filas y luego usar la función de combinación, podemos crear un encabezado que esté por encima de todos los datos reales. En esa área de encabezado, usamos el módulo Fuente para agregar color al texto además de ponerlo en cursiva. Sabemos cómo establecer un valor en una celda, así que lo hacemos a continuación. El módulo de alineación facilita la colocación de contenido en un área de celda combinada con una gran precisión. Configuramos el texto para que esté centrado verticalmente y desplazado horizontalmente hacia la derecha.

Este código guarda un nuevo libro de trabajo en el directorio de Excel llamado Stylish.xlsx. Si abrimos ese libro con Excel, podemos ver dos filas nuevas en la parte superior del libro. Todas las celdas de ese rango se han fusionado y ahora hay algo de texto en esa área. También vemos el color ordenado, la fuente y la cursiva que aplicamos. ¡Frio!

Cómo dar formato a los libros de trabajo

Estilos con nombre en Openpyxl

Openpyxl tiene un módulo genial llamado NamedStyles. Los estilos nombrados son objetos que podemos crear que almacenan un estilo para que podamos usarlo varias veces en lugar de tener que escribir todo eso como hicimos anteriormente. Para completar este ejemplo, importamos algunos módulos más en la parte superior del archivo. Estos son NamedStyle, Side, Border y PatternFill. Queremos agregar otro efecto en la parte superior de cada columna para los datos. Así que creamos una nueva variable llamada resaltar y le asignamos un estilo de nombre. Luego, simplemente podemos construir ese objeto con todas las propiedades que queremos que tenga el estilo. En este caso, agregamos un borde en la parte superior e inferior de la celda, lo hacemos de color amarillo y configuramos la fuente en negrita. Una vez que el estilo nombrado está en su lugar, establecemos simplemente iterar sobre cada celda en la fila 3, aplicando el resaltado en cada iteración.

ejemplo de estilos con nombre openpyxl


Cómo usar Python con resumen de Excel

Python funciona muy bien con Excel, ambos muy populares en sus respectivos dominios. Python tiene una comunidad creciente de desarrolladores que producen excelentes herramientas para usar como Pandas y Openpyxl. Echamos un vistazo a los conceptos básicos del uso de ambas herramientas para trabajar con Excel. Siempre hay más para aprender, por lo que la lista de recursos que se encuentra arriba es un gran lugar para seguir aprendiendo.



No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas