Laboratorio 6
Laboratorio 6
Laboratorio 6
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 1 / 21
FICHEROS CON PANDAS
EXPERIENCIA N°: 06
TÍTULO DE LA EXPERIENCIA:
Grupa
Alumno(os): Indiv. Total
l
1.
2.
3.
4.
Grupo: Docente: Ing William Mullisaca
Semestre: 3 Atamari
Fecha de
Hora:
entrega:
LABORATORIO N° 06
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 2 / 21
FICHEROS CON PANDAS
I.- OBJETIVOS:
-. Que el estudiante sea capaz de importar ficheros Excel con pandas en Python.
2.1. Programando con python como lenguaje de programación hay muchas librerías muy
útiles para abrir excel: Openpyxl, XlsxWriter, y Pandas
import pandas as pd
Los archivos están guardados en la misma carpeta que el dónde estoy ejecutando el codigo, por
eso no es necesario colocar carpetas o subcarpetas en la dirección.
ipath = 'austion_weather.xlsx'
df = pd.read_excel(ipath)
df.head()
Si ejecutan esto les debería mostrar las primeras 5 filas del archivo excel. Está bastante feo
porque solo la primera columna tiene datos.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 3 / 21
FICHEROS CON PANDAS
df = pd.read_excel(ipath, skiprows=26)
df.head()
¿Eso está mejor verdad? Ahora pandas me muestra los títulos de la columna como ser: Date,
TempAvgF, TempLowF, etc
Ahora veamos algo que no sé ve a simple vista. ¿Cómo son los datos que tenemos? Para eso
ejecutamos:
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 4 / 21
FICHEROS CON PANDAS
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1319 entries, 0 to 1318
¿Qué leemos? Resumiendo: cantidad de datos por columna, qué tipo de datos es (object, int64)
Object es una mezcla de datos (texto, números, etc. Pandas llama así a las columnas con datos
mixtos) y el int64, se refiere a números enteros.
Hay más información, pero por ahora esto es todo lo que nos interesa.
Una tabla como está nos puede dar problemas para trabajar. ¿Por qué? Porque por ejemplo no
puedo sacar datos de estadísticos con columnas que tienen datos de texto y números. No puedo
sacar promedios si Pandas no reconoce a los datos como números.
¿Qué ocurre aquí? Por qué Pandas me dice que la columna de DewPointAvgF tiene texto y
números. Si revisan esa columna verán que cuando no hay datos no dejan la celda vacía,
colocan un guión (-), un ejemplo es el 14-06-2014 o el 10-08-2015. Esto hace que Pandas crea
que hay texto y número... y tiene razón!!!
Vamos a avisarle a Pandas que los guiones significan datos inexistentes. Eso se llama NaN
Values, y Pandas si reconoce esos datos, los considera datos inexistentes.
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1319 entries, 0 to 1318
Cambio, ¿verdad? Ahora Pandas me da nuevos tipos de datos. Los float64, que significan que
son datos con comas, o sea, decimales.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 7 / 21
FICHEROS CON PANDAS
Las últimas dos columnas continuan siendo object, debido a que PrecipitationSumInches tiene un
valor de trazas (T). Cada vez que precipito/llovió menos de 0.01 inches (pulgadas) colocaron T en
la celda. No es un dato inexistente, y debe ser tratado de una forma diferente a la anterior.
La columna Events tiene descripciones de los eventos, podemos dejarlo en texto.
Puedes leer desde un archivo de Excel usando el método read_excel () de pandas. Para esto,
necesitas importar un módulo más llamado xlrd.
Instala xlrd usando pip:
pip install xlrd
3. Pasaremos el nombre del archivo de Excel y el número de hoja del que necesitamos
leer los datos al método read_excel ().
pandas.read_excel('pandasExcel.xlsx', 'Sheet1')
Si verificas el tipo de salida usando la palabra clave de type, te dará el siguiente resultado:
<class 'pandas.core.frame.DataFrame'>
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 9 / 21
FICHEROS CON PANDAS
Este resultado es llamado DataFrame. Esa es la unidad básica de pandas con la que se va a
tratar mas adelante.
El DataFrame es una estructura de 2 dimensiones etiquetada donde podemos almacenar
datos de diferentes tipos. DataFrame es similar a una tabla SQL o una hoja de cálculo de
Excel.
3.2. Complete el ATS (Anexo 1) y cumpla las condiciones obligatorias para el uso del
ambiente
V.- PROCEDIMIENTO:
El fichero titanic.csv contiene información sobre los pasajeros del Titanic. Escribir un
programa con los siguientes requisitos:
import pandas as pd
titanic =
pd.read_csv('https://raw.githubusercontent.com/asalber/asalber.github.io/master
/python/ejercicios/soluciones/pandas/titanic.csv', index_col=0)
print(titanic)
Survived Pclass \
PassengerId
1 0 3
2 1 1
3 1 3
4 1 1
5 0 3
... ... ...
887 0 2
888 1 1
889 0 3
890 1 1
891 0 3
# Mostrar por pantalla las dimensiones del DataFrame, el número de datos que contiene, los nombres de
sus columnas y filas, los tipos de datos de las columnas, las 10 primeras filas y las 10 últimas filas.
print('Dimensiones:', titanic.shape)
print('Número de elemntos:', titanic.size)
print('Nombres de columnas:', titanic.columns)
print('Nombres de filas:', titanic.index)
print('Tipos de datos:\n', titanic.dtypes)
print('Primeras 10 filas:\n', titanic.head(10))
print('Últimas 10 filas:\n', titanic.tail(10))
Embarked
PassengerId
882 S
883 S
884 S
885 S
886 Q
887 S
888 S
889 S
890 C
891 Q
# Mostrar por pantalla los datos del pasajero con identificador 148
print(titanic.loc[148])
Survived 0
Pclass 3
Name Ford, Miss. Robina Maggie "Ruby"
Sex female
Age 9
SibSp 2
Parch 2
Ticket W./C. 6608
Fare 34.375
Cabin NaN
Embarked S
Name: 148, dtype: object
print(titanic.iloc[range(0,titanic.shape[0],2)])
Survived Pclass \
PassengerId
1 0 3
3 1 3
5 0 3
7 0 1
9 1 3
... ... ...
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 15 / 21
FICHEROS CON PANDAS
883 0 3
885 0 3
887 0 2
889 0 3
891 0 3
# Mostrar los nombres de las personas que iban en primera clase ordenadas alfabéticamente.
print(titanic[titanic["Pclass"]==1]['Name'].sort_values())
PassengerId
731 Allen, Miss. Elisabeth Walton
306 Allison, Master. Hudson Trevor
298 Allison, Miss. Helen Loraine
499 Allison, Mrs. Hudson J C (Bessie Waldo Daniels)
461 Anderson, Mr. Harry
...
156 Williams, Mr. Charles Duane
352 Williams-Lambert, Mr. Fletcher Fellows
56 Woolner, Mr. Hugh
556 Wright, Mr. George
326 Young, Miss. Marie Grice
Name: Name, Length: 216, dtype: object
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 16 / 21
FICHEROS CON PANDAS
# Mostrar por pantalla el porcentaje de personas que sobrevivieron y murieron
print(titanic['Survived'].value_counts()/titanic['Survived'].count() * 100)
# Alternativa
print(titanic['Survived'].value_counts(normalize=True) * 100)
0 61.616162
1 38.383838
Name: Survived, dtype: float64
0 61.616162
1 38.383838
Name: Survived, dtype: float64
print(titanic.groupby('Pclass')['Survived'].value_counts(normalize=True))
Pclass Survived
1 1 0.629630
0 0.370370
2 0 0.527174
1 0.472826
3 0 0.757637
1 0.242363
Name: Survived, dtype: float64
titanic.dropna(subset=['Age'])
# Alternativa
# titanic = titanic[titanic['Age'].notna()]
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
DE TELECOMUNICACIONES 28/05/2020
LABORATORIO DE INFORMÁTICA
Página
EXPERIENCIA: 06 17 / 21
FICHEROS CON PANDAS
print(titanic.groupby(['Pclass','Sex'])['Age'].mean().unstack()['female'])
Pclass
1 34.611765
2 28.722973
3 21.750000
Name: female, dtype: float64
# Añadir una nueva columna booleana para ver si el pasajero era menor de edad o no.
print(titanic.groupby(['Pclass', 'Young'])['Survived'].value_counts(normalize =
True) * 100)
VI.- BIBLIOGRAFÍA:
Rubrica:
Puntualidad
Asistencia
Conclusiones Observaciones
Porcentaje %
Sugerencias
Total
Desarrollo de experiencias
Bibliografía
x 5.1 5.2 5.3 5.4 5.5 5.6 5.7 6.1 6. 6.3
2
2.0 2.0 15. - - - - - - - - - - 1.0 - 20 15
0
3. 4.
Elementos de protección (Marque con aspa) Características de elementos de protección, equipos y herramientas
1. ____________________________________________________________
USO OBLIGATORIO
DEL CASCO DE
USO OBLIGATORIO
DE BOTAS AISLANTES
USO OBLIGATORIO
DE GUANTES
USO OBLIGATORIO
DE PROTECCIÓN
USO OBLIGATORIO
DE MASCARILLA
USO
OBLIGATORIO DE
2. ____________________________________________________________
SEGURIDAD AISLANTES OCULAR PROTECTOR
FACIAL
3. ____________________________________________________________
4. ____________________________________________________________
5. ____________________________________________________________
USO OBLIGATORIO APAGAR USO OBLIGATORIO OBLIGATORIO USO OBLIGATORIO OTRO
DE PROTECCIÓN DESCONECTAR DE PROTECTOR CONECTAR A DE TRAJE DE
AUDITIVA CUANDO NO SE USE AJUSTABLE TIERRA SEGURIDAD