jueves, 16 de julio de 2020

Trabajo inicial con Pandas sobre hojas de calculo de Excel

trabajo inicial con Pandas sobre hojas de calculo de Excel

@author: jeanwolf

In [1]:
import pandas as pd

primero definimos una variable que sea la hoja de calculo

In [2]:
path_file = "data/libros.xlsx"

en la hoja existen variables que son string de numeros. se genera un diccionario que son esos campos.

In [3]:
col_types = {"isbn": str, "isbn13": str}

Luego es fundamental definir el nombre de la hoja de excel. en este caso es "data". Ojo libro de excel tiene dos hojas. el nombre es un string

In [4]:
hoja = "data"

ahora creamos el dataframe con pandas (pd), defininiendo la ruta, nombre de hoja, typos de datos de campo

In [5]:
df = pd.read_excel(path_file, sheet_name = hoja, dtype = col_types)

ver los nombres de las columnas. Ojo ningun nombre puede tener espacios. Python quiere leer cada palabra como una variable

In [6]:
df.columns.values
Out[6]:
array(['bookID', 'title', 'authors', 'average_rating', 'isbn', 'isbn13',
       'language_code', 'num_pages', 'ratings_count',
       'text_reviews_count'], dtype=object)

ver el data frame

In [7]:
df
Out[7]:
bookID title authors average_rating isbn isbn13 language_code num_pages ratings_count text_reviews_count
0 799 Out to Eat London 2002 (Lonely Planet Out to Eat) Lonely Planet-Mark Honan 0.0 1740592050 9781740592055 eng 295.0 0 0
1 1298 The Clan of the Cave Bear Part 2 of 2 (Earth'... Jean M. Auel 456.0 5557075313 9785557075312 eng 24.0 0 0
2 1302 Juiced Official Strategy Guide Doug Walsh 0.0 0744005612 9780744005615 eng 112.0 0 0
3 1658 American Government: Continuity and Change Al... Karen O'Connor-Larry J. Sabato 295.0 0321317106 9780321317100 eng 664.0 0 0
4 1664 Essentials of American and Texas Government: C... Karen O'Connor-Larry J. Sabato 350.0 0321365208 9780321365200 eng 854.0 0 0
... ... ... ... ... ... ... ... ... ... ...
13714 47050 Vengeances Mortelles: 12 Nouvelles Inédites ... Various-Mary Higgins Clark-Phillip Margolin 367.0 2226105190 9782226105196 fre 464.0 0 0
13715 47113 Lectures d'une oeuvre: The Handmaid's tale de ... Jean-Paul Gabilliet-François Gallix-Janice Fi... 500.0 2842740394 9782842740399 fre 223.0 2 0
13716 47295 Il genio e l'alienista: La strana visita di Lo... Paolo Mazzarello 0.0 8870883019 9788870883015 ita 94.0 0 0
13717 47408 Voleurs de plage Joanne Harris-Jeannette Short-Payen 348.0 2710325756 9782710325758 fre 380.0 1 0
13718 47551 La habitacion oscura Sofía Irene Cardona 0.0 0977601331 9780977601332 spa 64.0 0 0

13719 rows × 10 columns

creamos filtros.

Ejercicio: cuantos registros por lenguaje tiene el campo language_code, ingles o frances, imprimir resultados de cada uno.

respuesta: Se usa el metodo "len" y se generan diccionarios para cada idioma

In [8]:
df1 = df [df["language_code"] == "eng"]
print("ingles =", len(df1))
df2 = df [df["language_code"] == "fre"]
print("frances =", len(df2))
df3 = df [df["language_code"] == "spa"]
print("español =", len(df3))
ingles = 10594
frances = 209
español = 419

ejercicio: sacar el promedio del "average_rating" y entregarlo en un excel diferente

respuesta: primero se genera un diccionario con las anteriores variables (df1), luego se usa el método mean y std (promedio y desviación estándar) para cada valor. Ojo son tres valores. m1 = promedio df1 s1 = desviación estándar df1 estad_vals1 = promedio y desviación estándar de los libros en inglés

In [9]:
m1 = df1["average_rating"].mean()
m2 = df2["average_rating"].mean()
m3 = df3["average_rating"].mean()

s1 = df1["average_rating"].std()
s2 = df2["average_rating"].std()
s3 = df3["average_rating"].std()

estad_vals1 = [m1, s1]
estad_vals2 = [m2, s2]
estad_vals3 = [m3, s3]

print(estad_vals1, estad_vals2, estad_vals3)
[392.9522371153483, 36.59231904229975] [398.4354066985646, 28.70166321152556] [393.5059665871122, 33.959895256696115]

ahora crear un libro de excel para que sea visible. Primero crear un data frame para cada valor encontrado

  1. definir nombres de campos. DECLARAR UN LISTA
  2. crear data frame. resultado 1 = r1 = df1
  3. este dataframe se decalra: index = indices data = valores encontrados. estad_vals columns = columnas (campos)
In [10]:
indices = ["Media", "Desviación Estándar"]
r1 = pd.DataFrame(data = estad_vals1, index = indices, columns= ["Valores"])
r2 = pd.DataFrame(data = estad_vals2, index = indices, columns= ["Valores"])
r3 = pd.DataFrame(data = estad_vals3, index = indices, columns= ["Valores"])
In [11]:
r1
Out[11]:
Valores
Media 392.952237
Desviación Estándar 36.592319
In [12]:
r2
Out[12]:
Valores
Media 398.435407
Desviación Estándar 28.701663
In [13]:
r3
Out[13]:
Valores
Media 393.505967
Desviación Estándar 33.959895

Crear un libro de excel

  1. declarar metodo de escritura "escritura = pd.ExcelWriter" engine="xlsxwriter" es el metodo de escritura.
  2. cada resultado "r" ecrito en una hoja diferente
  3. declarar el nombre de la hoja.
In [14]:
file_salida = "data/resultados.xls"
escritura = pd.ExcelWriter(file_salida, engine="xlsxwriter")
r1.to_excel(escritura, sheet_name = "Ingles")
r2.to_excel(escritura, sheet_name = "Frances")
r3.to_excel(escritura, sheet_name = "Español")

escritura.save()
Share: