Leer un archivo de Excel usando Python
-
Leer un archivo de Excel usando el paquete
pandas
en Python -
Leer un archivo de Excel usando el paquete
xlrd
en Python - Ejemplos de tareas realizadas sobre archivos de Excel en Python
El lenguaje de programación Python es bien conocido por su uso en el campo de la ciencia de datos. La ciencia de datos generalmente implica tratar con datos y analizarlos con la ayuda de gráficos y diagramas como diagramas de líneas, diagramas de violín, histogramas y mapas de calor, y cálculos matemáticos como media, mediana, moda, probabilidad, varianza, etc. Python aún más adecuado es el hecho de que hace que la lectura y manipulación de archivos sea muy fluida. Dado que los datos generalmente se representan en formatos de archivo populares como xls
, xlsx
, csv
, txt
, etc., manejarlos con Python es pan comido.
Este artículo presentará cómo leer archivos de Excel usando Python con la ayuda de algunos ejemplos. Por ejemplo, consideraremos un archivo de Excel de muestra que puede descargar desde aquí para que todos estemos en la misma página. Simplemente cámbiele el nombre a sample.xls
para que funcionen los siguientes fragmentos de código, o cambie el nombre del archivo en los siguientes fragmentos de código.
Leer un archivo de Excel usando el paquete pandas
en Python
En Python, podemos usar la biblioteca pandas
para leer un archivo de Excel. El módulo pandas
es una biblioteca de manipulación y análisis de datos de código abierto robusta, potente, rápida y flexible escrita en Python. Si no lo tiene instalado en su máquina o entorno virtual, use el siguiente comando.
- Para instalar
pandas
:pip install pandas
opip3 install pandas
Consulte el siguiente código para leer un archivo de Excel utilizando el módulo pandas
.
import xlrd
import pandas
df = pandas.read_excel("sample.xls")
print("Columns")
print(df.columns)
Producción :
Columns
Index(['Segment', 'Country', 'Product', 'Discount Band', 'Units Sold',
'Manufacturing Price', 'Sale Price', 'Gross Sales', 'Discounts',
' Sales', 'COGS', 'Profit', 'Date', 'Month Number', 'Month Name',
'Year'],
dtype='object')
Leer un archivo de Excel usando el paquete xlrd
en Python
En Python, podemos usar el paquete xlrd
para leer archivos de Excel. El módulo xlrd
es un paquete de Python que se utiliza para leer y formatear archivos de Excel. En caso de que no lo tenga instalado en su máquina o entorno virtual, use el siguiente comando.
- Para instalar
xlrd
, utilice el siguiente comando.
pip install xlrd
O,
pip3 install xlrd
Consulte el siguiente código para leer archivos de Excel usando xlrd
.
from xlrd import open_workbook
wb = open_workbook("sample.xls")
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
columns = []
print("Columns")
for i in range(sheet.ncols):
columns.append(sheet.cell_value(0, i))
print(columns)
Producción :
Columns
['Segment', 'Country', 'Product', 'Discount Band', 'Units Sold', 'Manufacturing Price', 'Sale Price', 'Gross Sales', 'Discounts', ' Sales', 'COGS', 'Profit', 'Date', 'Month Number', 'Month Name', 'Year']
Aquí hay una breve explicación de lo que hace el código anterior. Primero crea un descriptor de archivo para el archivo de Excel con la ayuda de la función open_workbook()
. Luego, restablece el puntero del archivo a la posición (0,0)
o la celda superior izquierda. A continuación, itera sobre la primera fila y almacena todos los nombres de columna en una variable. Generalmente, el nombre de las columnas está presente en la primera fila; por eso el código considera esa ubicación. En caso de que los nombres de las columnas estén en una fila diferente, se puede cambiar el valor 0
en la declaración sheet.cell_value(0, i)
al número de fila que se desee. Esencialmente, (0, i)
representa las coordenadas y
y x
, donde y
es 0
y x
es i
, considerando que el origen (0, 0)
está presente en la esquina superior izquierda del archivo.
Ejemplos de tareas realizadas sobre archivos de Excel en Python
Veamos algunas tareas simples que podemos realizar en archivos de Excel para comprender mejor estas dos bibliotecas.
Impresión de las primeras 3 filas de un archivo de Excel
Usando el paquete pandas
import pandas
df = pandas.read_excel("sample.xls")
count = 3
for index, row in df.iterrows():
print(row, end="\n\n")
if index == count - 1:
break
Producción :
Segment Government
Country Canada
Product Carretera
Discount Band None
Units Sold 1618.5
Manufacturing Price 3
Sale Price 20
Gross Sales 32370.0
Discounts 0.0
Sales 32370.0
COGS 16185.0
Profit 16185.0
Date 2014-01-01 00:00:00
Month Number 1
Month Name January
Year 2014
Name: 0, dtype: object
Segment Government
Country Germany
Product Carretera
Discount Band None
Units Sold 1321.0
Manufacturing Price 3
Sale Price 20
Gross Sales 26420.0
Discounts 0.0
Sales 26420.0
COGS 13210.0
Profit 13210.0
Date 2014-01-01 00:00:00
Month Number 1
Month Name January
Year 2014
Name: 1, dtype: object
Segment Midmarket
Country France
Product Carretera
Discount Band None
Units Sold 2178.0
Manufacturing Price 3
Sale Price 15
Gross Sales 32670.0
Discounts 0.0
Sales 32670.0
COGS 21780.0
Profit 10890.0
Date 2014-06-01 00:00:00
Month Number 6
Month Name June
Year 2014
Name: 2, dtype: object
Usando el paquete xlrd
from xlrd import open_workbook
wb = open_workbook("sample.xls")
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
count = 3
for i in range(1, count + 1):
for j in range(sheet.ncols):
print(sheet.cell_value(i, j), end=", ")
print()
Producción :
Government, Canada, Carretera, None, 1618.5, 3.0, 20.0, 32370.0, 0.0, 32370.0, 16185.0, 16185.0, 41640.0, 1.0, January, 2014,
Government, Germany, Carretera, None, 1321.0, 3.0, 20.0, 26420.0, 0.0, 26420.0, 13210.0, 13210.0, 41640.0, 1.0, January, 2014,
Midmarket, France, Carretera, None, 2178.0, 3.0, 15.0, 32670.0, 0.0, 32670.0, 21780.0, 10890.0, 41791.0, 6.0, June, 2014,
Impresión de valores de una columna específica
Usando el paquete pandas
import pandas
df = pandas.read_excel("sample.xls")
column = df.columns[4]
print(column)
print("-" * len(column))
for index, row in df.iterrows():
print(row[column])
Producción :
Units Sold
----------
1618.5
1321.0
2178.0
888.0
2470.0
1513.0
921.0
2518.0
1899.0
1545.0
2470.0
2665.5
958.0
2146.0
345.0
615.0
292.0
974.0
2518.0
1006.0
367.0
883.0
549.0
788.0
2472.0
1143.0
1725.0
912.0
2152.0
1817.0
1513.0
1493.0
1804.0
2161.0
1006.0
1545.0
2821.0
345.0
2001.0
2838.0
2178.0
888.0
...
Usando el paquete xlrd
from xlrd import open_workbook
wb = open_workbook("sample.xls")
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
column_index = 4
column = sheet.cell_value(0, column_index)
print(column)
print("-" * len(column))
for row in range(1, sheet.nrows):
print(sheet.cell_value(row, column_index))
Producción :
Units Sold
----------
1618.5
1321.0
2178.0
888.0
2470.0
1513.0
921.0
2518.0
1899.0
1545.0
2470.0
2665.5
958.0
2146.0
345.0
615.0
292.0
974.0
2518.0
1006.0
367.0
883.0
549.0
788.0
2472.0
1143.0
1725.0
912.0
2152.0
1817.0
1513.0
1493.0
1804.0
2161.0
1006.0
1545.0
2821.0
345.0
2001.0
2838.0
2178.0
888.0
...