Universidad Nacional de San Agustín de Arequipa Escuela Profesional de Ingeniería de Telecomunicaciones Ingeniero Renzo
Views 90 Downloads 4 File size 2MB
Universidad Nacional de San Agustín de Arequipa Escuela Profesional de Ingeniería de Telecomunicaciones
Ingeniero Renzo Bolivar - Docente DAIE Curso : Computación 2
PRÁCTICA 06 PYTHON - Librería Pandas
1.- Objetivos: 1. Manipular estructuras de datos en Pandas. a. Utilizar estructura de datos en pandas. b. Creación de estructura de datos con DataFrames. c. Utilizar archivo CSV para manipular sus datos en DataFrames. 1. Seguir con buenas practicas en Python - Funciones y Excepciones. 2. Uso de entornos de desarrollo "Jupyter Python" y "Spyder". 3. Practica Colaborativa con sincronización en GitLab.
Nota: NO OLVIDAR INICIAR EL TRABAJO COLABORATIVO: en directorio: Practica_6 (con carpetas de Apellidos)
Primero: JEFE DE PROYECTO: Inicia la practica Sincronizando repositorio local con proyecto GitLab. (Ver Video: "Trabajo Colaborativo: Inicio Jefe de Proyecto").
Segundo: COLABORADORES: Los colaboradores Clonan el proyecto de GitLab creado por el Jefe de Proyecto a su repositorio local. (Ver Video: "Trabajo Colaborativo: Inicio Colaboradores").
DESARROLLO
2.- Pandas Pandas es una librería de Python para la ciencia de datos y Machine Learning, por muchas razones, ofrece estructuras de datos poderosas, expresivas y flexibles que facilitan la manipulación y análisis de datos. Entre las estructuras más utilizadas se encuentra el DataFrame. Pandas es una librería de código abierto de Python que proporciona herramientas de análisis y manipulación de datos de alto rendimiento utilizando sus potentes estructuras de datos. El nombre de Pandas se deriva del término “Panel Data”.
La librería Pandas se desarrollo debido a la necesidad de tener una herramienta flexible de alto rendimiento para el análisis de datos. En Python se utiliza pandas en Machine Learning para la manipulación y preparación de datos. Usando esta librería podemos lograr cinco pasos típicos en el procesamiento y análisis de datos, independientemente del origen de los datos:
Cargar Preparar Manipular Modelar Analizar
Caracteristicas principales de de la librería Pandas.
Objeto DataFrame rápido y eficiente con indexación predeterminada y personalizada. Alto rendimiento para cargar datos en objetos de datos en memoria desde diferentes formatos de archivo. Alineación de datos y manejo integrado de datos faltantes. Remodelación y giro de conjuntos de fechas. Etiquetado, corte, indexación y subconjunto de grandes conjuntos de datos. Las columnas de una estructura de datos se pueden eliminar o insertar. Agrupa por datos para agregación y transformaciones. Alto rendimiento de fusión y unión de datos. Funcionalidad de la serie de tiempo.
DataFrame Es una estructura de datos muy utilizada en pandas, es tabular bidimensional de tamaño variable y potencialmente heterogénea con ejes etiquetados (filas y columnas). Un DataFrame es una estructura de datos bidimensional, es decir, los datos se alinean de forma tabular en filas y columnas. Pandas DataFrame consta de tres componentes principales:
Los datos Las filas Las columnas
Si hablamos de la estructura de un DataFrame es muy similar a la de una matriz. Pero en una matriz solamente se admiten valores numéricos, a diferencia de la matriz, en un DataFrame se puede incluir también datos alfanuméricos en su contenido.
Instalación de Pandas: (recordamos como instalar librerías) En la línea de comando de entorno Computacion2 digitar lo siguiente: conda install c anaconda pandas Luego presionar Y para la instalación
Ingresamos al entorno de desarrollo Jupyter Notebook desde Anaconda Navigator. Abrimos nuevo archivo lo llamamos Practica_06_pandas_intro.ipynb (dentro de nuestra carpeta con nuestro Apellido). Digitamos lo siguiente.
Creación de DataFrame: In [1]: import numpy as np import pandas as pd
A partir de diccionarios de listas In [2]: #Datos en listas diccionario = {'a': [11,12,13], 'b': [21,22,23]} #DataFrame df_lista = pd.DataFrame(diccionario) #Impresión lista con print Spyder print(df_lista) #Impresión con función head﴾﴿ df_lista.head() a b 0 11 21 1 12 22 2 13 23 Out[2]: a
b
0
11
21
1
12
22
2
13
23
In [3]: #Datos en listas diccionario_2 = {'Nombre':['Danna', 'Matt', 'Irma', 'Gustavo', 'Gladys'], 'Edad':[19, 12, 50, 80, 83], 'Categoría':['H','H','E','A','A']} #DataFrame df_lista2 = pd.DataFrame(diccionario_2) #Impresión lista con print Spyder print(df_lista2) print() #Impresión con función head﴾﴿ df_lista2.head() Nombre Edad Categoría 0 Danna 19 H 1 Matt 12 H 2 Irma 50 E 3 Gustavo 80 A 4 Gladys 83 A Out[3]: Nombre
Edad
Categoría
0
Danna
19
H
1
Matt
12
H
2
Irma
50
E
3
Gustavo
80
A
4
Gladys
83
A
In [4]: #Imprimir solo una columna Spyder print(df_lista2['Edad']) 0 19 1 12 2 50 3 80 4 83 Name: Edad, dtype: int64 In [5]: #Imprimir solo una columna df_lista2['Edad'] Out[5]: 0 19 1 12 2 50 3 80 4 83 Name: Edad, dtype: int64
A partir de un numpy array de 2D In [6]: #A partir de Array 2D de 5 filas con 3 columnas df_np2D = pd.DataFrame( np.random.randint(5, size=(5,3)), index=['primero','segundo','tercero','cuarto','quinto'], columns=['velocidad', 'temperatura','presion'] ) #Impresión con función head﴾﴿ df_np2D.head() Out[6]: velocidad
temperatura
presion
primero
1
3
2
segundo
3
3
1
tercero
2
1
2
cuarto
2
3
4
quinto
0
2
1
In [7]: #forma dataframe spyder print(df_np2D.shape) #altura dataframe spyder print(len(df_np2D.index)) (5, 3) 5
DataFrame a partir de archivo CSV: CSV separado por comas: Se adjunta un archivo data.zip a la practica, se debe crear la carpeta data con los archivos del data.zip . In [8]: #archivo CSV separado por comas data = pd.read_csv('data/titanic_comma.csv') #leer 5 primeras lineas data.head() Out[8]: Name
PClass
Age
Sex
Survived
0
Allen, Miss Elisabeth Walton
1st
29.00
female
1
1
Allison, Miss Helen Loraine
1st
2.00
female
0
2
Allison, Mr Hudson Joshua Creighton
1st
30.00
male
0
3
Allison, Mrs Hudson JC (Bessie Waldo Daniels)
1st
25.00
female
0
4
Allison, Master Hudson Trevor
1st
0.92
male
1
In [9]: #leer 5 últimas lineas data.tail() Out[9]: Name
PClass
Age
Sex
Survived
1308
Zakarian, Mr Artun
3rd
27.0
male
0
1309
Zakarian, Mr Maprieder
3rd
26.0
male
0
1310
Zenni, Mr Philip
3rd
22.0
male
0
1311
Lievens, Mr Rene
3rd
24.0
male
0
1312
Zimmerman, Leo
3rd
29.0
male
0
In [10]: #Para imprimir en Spyder print(data.head()) Name PClass Age Sex \ 0 Allen, Miss Elisabeth Walton 1st 29.00 female 1 Allison, Miss Helen Loraine 1st 2.00 female 2 Allison, Mr Hudson Joshua Creighton 1st 30.00 male 3 Allison, Mrs Hudson JC (Bessie Waldo Daniels) 1st 25.00 female 4 Allison, Master Hudson Trevor 1st 0.92 male Survived 0 1 1 0 2 0 3 0 4 1
CSV separado por tabulacion: In [11]: #archivo CSV separado por comas data2 = pd.read_csv('data/titanic_tabs.csv', '\t') #leer 5 primeras lineas data2.head(10) Out[11]: PassengerId
Survived
Pclass
Name
Sex
Age
SibSp
Parch
Ticket
Fare
Cabin
Embarked
0
1
0
3
Braund, Mr. Owen Harris
male
22.0
1
0
A/5 21171
7.2500
NaN
S
1
2
1
1
Cumings, Mrs. John Bradley (Florence Briggs Th...
female
38.0
1
0
PC 17599
71.2833
C85
C
2
3
1
3
Heikkinen, Miss. Laina
female
26.0
0
0
STON/O2. 3101282
7.9250
NaN
S
3
4
1
1
Futrelle, Mrs. Jacques Heath (Lily May Peel)
female
35.0
1
0
113803
53.1000
C123
S
4
5
0
3
Allen, Mr. William Henry
male
35.0
0
0
373450
8.0500
NaN
S
5
6
0
3
Moran, Mr. James
male
NaN
0
0
330877
8.4583
NaN
Q
6
7
0
1
McCarthy, Mr. Timothy J
male
54.0
0
0
17463
51.8625
E46
S
7
8
0
3
Palsson, Master. Gosta Leonard
male
2.0
3
1
349909
21.0750
NaN
S
8
9
1
3
Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)
female
27.0
0
2
347742
11.1333
NaN
S
9
10
1
2
Nasser, Mrs. Nicholas (Adele Achem)
female
14.0
1
0
237736
30.0708
NaN
C
Estadistica DataFrame: En Pandas podemos hallar con pocos comandos de manera muy sencilla y rapida la estadistica de los datos de todo tipo de archivos. Comenzamos con archivos csv .
In [12]: #cargamos un archivo CSV separado por punto y coma ﴾importado excel﴿ notas = pd.read_csv('data/notas.csv', ';') #leer 10 primeras lineas notas.head(10) #imprimir toda la lista #print﴾notas﴿ Out[12]: Alumno
Nota1
Nota2
Nota3
Promedio
0
Maria
18.0
19
18
18
1
Jose
8.0
15
11
11
2
Juan
13.0
12
17
14
3
Luis
10.0
19
18
16
4
Carlos
16.0
12
10
13
5
Rosa
0.0
14
10
8
6
Jorge
9.0
11
19
13
7
Victor
6.0
13
10
10
8
Ana
18.0
19
11
16
9
Luz
14.0
20
16
17
describe() : muestra estadísticas de resumen para las columnas numéricas. In [13]: #Estadísticas del DataFrame print('Estadísticas del DataFrame:') #impresión notas.describe() Estadísticas del DataFrame: Out[13]: Nota1
Nota2
Nota3
Promedio
count
49.000000
50.000000
50.000000
50.000000
mean
11.836735
13.720000
14.720000
13.440000
std
5.075870
4.204177
3.434756
2.778636
min
0.000000
0.000000
10.000000
8.000000
25%
8.000000
11.000000
11.250000
12.000000
50%
11.000000
13.000000
14.500000
13.000000
75%
16.000000
17.000000
18.000000
15.750000
max
20.000000
20.000000
20.000000
19.000000
Para los datos numéricos, el índice del resultado incluirá cantidad de datos count , media mean , desviación estandar std , valor mínimo min , valor máximo,los percentiles inferior de 25% y el percentil superior de 75%.
Media de las columnas DataFrame In [14]: #Media de las columnas DataFrame print('Media de las columnas DataFrame:') #impresión print spyder print(notas.mean()) Media de las columnas DataFrame: Nota1 11.836735 Nota2 13.720000 Nota3 14.720000 Promedio 13.440000 dtype: float64 In [15]: #impresión notas.mean() Out[15]: Nota1 11.836735 Nota2 13.720000 Nota3 14.720000 Promedio 13.440000 dtype: float64
Correlación del DataFrame In [16]: #Correlación del DataFrame print('Correlación del DataFrame:') #impresión notas.corr() Correlación del DataFrame: Out[16]: Nota1
Nota2
Nota3
Promedio
Nota1
1.000000
0.154411
0.212137
0.762637
Nota2
0.154411
1.000000
0.008593
0.596004
Nota3
0.212137
0.008593
1.000000
0.549895
Promedio
0.762637
0.596004
0.549895
1.000000
Cuenta los datos del DataFrame In [17]: #Cuenta los datos del DataFrame no nulos print('Conteo de datos del DataFrame:') #impresión notas.count() Conteo de datos del DataFrame: Out[17]: Alumno 50 Nota1 49 Nota2 50 Nota3 50 Promedio 50 dtype: int64
Valor más alto In [18]: #Valor más alto de cada columna del DataFrame print('Valor más alto de la columna del DataFrame:') #impresión notas.max() Valor más alto de la columna del DataFrame: Out[18]: Alumno Walter Nota1 20 Nota2 20 Nota3 20 Promedio 19 dtype: object
Valor más bajo In [19]: #Valor mínimo de cada columna del DataFrame print('Valor mínimo de la columna del DataFrame:') #impresión notas.min() Valor mínimo de la columna del DataFrame: Out[19]: Alumno Alejandro Nota1 0 Nota2 0 Nota3 10 Promedio 8 dtype: object
Mediana x Columna In [20]: #Mediana de cada columna del DataFrame print('Mediana de la columna del DataFrame:') #impresion notas.median() Mediana de la columna del DataFrame: Out[20]: Nota1 11.0 Nota2 13.0 Nota3 14.5 Promedio 13.0 dtype: float64
Desviación estándar x Columna In [21]: #Desviación estándar de cada columna del DataFrame print('Desviación estándar de la columna del DataFrame:') #impresion notas.std() Desviación estándar de la columna del DataFrame: Out[21]: Nota1 5.075870 Nota2 4.204177 Nota3 3.434756 Promedio 2.778636 dtype: float64
Seleccionar un índice o columna Una de las funciones que son muy fáciles en Pandas es seleccionar los datos que deseas en comparación con seleccionar un valor de una lista o un diccionario. Puedes seleccionar una columna de manera muy fácil, solamente deberás indicar el índice de la misma. In [22]: #Seleccionar la primera columna del DataFrame print('Primera columna del DataFrame:') #impresión notas.iloc[:, 0] Primera columna del DataFrame: Out[22]: 0 Maria 1 Jose 2 Juan 3 Luis 4 Carlos 5 Rosa 6 Jorge 7 Victor 8 Ana 9 Luz 10 Cesar 11 Carmen 12 Miguel 13 Julio 14 Jesus 15 Pedro 16 Manuel 17 Juana 18 Santos 19 Segundo 20 Jhon 21 David 22 Angel 23 Julia 24 Diego 25 Flor 26 Elizabeth 27 Daniel 28 Oscar 29 Ruth 30 Diana 31 Marco 32 Edwin 33 Javier 34 Walter 35 Francisco 36 Fernando 37 Milagros 38 Alejandro 39 Raul 40 Ricardo 41 Alex 42 Roberto 43 Edgar 44 Victoria 45 Eduardo 46 Mario 47 Jaime 48 Gloria 49 Andrea Name: Alumno, dtype: object In [23]: #Seleccionar dos columnas del DataFrame print('Dos columnas del DataFrame:') #impresión notas.iloc[:, 0:2] Dos columnas del DataFrame: Out[23]: Alumno
Nota1
0
Maria
18.0
1
Jose
8.0
2
Juan
13.0
3
Luis
10.0
4
Carlos
16.0
5
Rosa
0.0
6
Jorge
9.0
7
Victor
6.0
8
Ana
18.0
9
Luz
14.0
10
Cesar
8.0
11
Carmen
14.0
12
Miguel
14.0
13
Julio
11.0
14
Jesus
12.0
15
Pedro
5.0
16
Manuel
15.0
17
Juana
8.0
18
Santos
7.0
19
Segundo
NaN
20
Jhon
10.0
21
David
7.0
22
Angel
18.0
23
Julia
7.0
24
Diego
20.0
25
Flor
12.0
26
Elizabeth
16.0
27
Daniel
18.0
28
Oscar
10.0
29
Ruth
9.0
30
Diana
16.0
31
Marco
9.0
32
Edwin
0.0
33
Javier
6.0
34
Walter
11.0
35
Francisco
5.0
36
Fernando
10.0
37
Milagros
18.0
38
Alejandro
9.0
39
Raul
20.0
40
Ricardo
9.0
41
Alex
10.0
42
Roberto
19.0
43
Edgar
15.0
44
Victoria
8.0
45
Eduardo
12.0
46
Mario
19.0
47
Jaime
18.0
48
Gloria
19.0
49
Andrea
14.0
In [24]: #Seleccionar el valor de la primera fila y última columna del DataFrame print('Valor de la primera fila(Alumno: Maria) y 3era columna(Nota2) del DataFrame:') #impresión notas.iloc[0][2] Valor de la primera fila(Alumno: Maria) y 3era columna(Nota2) del DataFrame: Out[24]: 19
In [25]: #Seleccionar los valores de la primera fila del DataFrame print('Valores de la primera fila del DataFrame:') #impresión notas.loc[0] Valores de la primera fila del DataFrame: Out[25]: Alumno Maria Nota1 18 Nota2 19 Nota3 18 Promedio 18 Name: 0, dtype: object In [26]: #Seleccionar los valores de la primera fila del DataFrame print('Valores de la primera fila del DataFrame:') #impresión con iloc notas.iloc[0,:] Valores de la primera fila del DataFrame: Out[26]: Alumno Maria Nota1 18 Nota2 19 Nota3 18 Promedio 18 Name: 0, dtype: object
EJEMPLOS
Ejemplo 01: Limpieza de Datos Otro procedimiento que podemos hacer con Pandas es limpiar nuestros datos, estos es muy importante en Machine Learning si queremos obtener resultados confiables. In [27]: #cargamos un archivo CSV separado por comas notas2 = pd.read_csv('data/notas2.csv', ';') #leer 5 primeras lineas notas2.head(10) Out[27]: Alumno
Nota1
Nota2
Nota3
Promedio
0
Maria
18.0
19.0
18
18
1
Jose
NaN
15.0
11
13
2
Juan
13.0
12.0
17
14
3
Luis
10.0
19.0
18
16
4
Carlos
16.0
12.0
10
13
5
Rosa
NaN
14.0
10
12
6
Jorge
9.0
11.0
19
13
7
Victor
NaN
13.0
10
12
8
Ana
18.0
19.0
11
16
9
Luz
14.0
20.0
16
17
Con Pandas podemos verificar si faltan valores en el conjunto de datos solamente tenemos que implementar pd.isnull() . Implementando esta instrucción nos devuelve una matriz booleana, una matriz de verdadero para valores faltantes y falso para valores no perdidos.
In [28]: #Verificar si hay datos nulos en el DataFrame print('Datos nulos en el DataFrame:') #Imprimir nulos TRUE notas2.isnull() Datos nulos en el DataFrame: Out[28]: Alumno
Nota1
Nota2
Nota3
Promedio
0
False
False
False
False
False
1
False
True
False
False
False
2
False
False
False
False
False
3
False
False
False
False
False
4
False
False
False
False
False
5
False
True
False
False
False
6
False
False
False
False
False
7
False
True
False
False
False
8
False
False
False
False
False
9
False
False
False
False
False
10
False
True
False
False
False
11
False
False
False
False
False
12
False
True
False
False
False
13
False
False
False
False
False
14
False
False
False
False
False
15
False
True
False
False
False
16
False
False
False
False
False
17
False
False
False
False
False
18
False
False
False
False
False
19
False
True
False
False
False
20
False
False
False
False
False
21
False
False
False
False
False
22
False
False
False
False
False
23
False
False
False
False
False
24
False
False
False
False
False
25
False
False
False
False
False
26
False
False
False
False
False
27
False
False
False
False
False
28
False
False
True
False
False
29
False
False
False
False
False
30
False
False
False
False
False
31
False
False
False
False
False
32
False
True
False
False
False
33
False
True
False
False
False
34
False
False
True
False
False
35
False
True
False
False
False
36
False
False
False
False
False
37
False
False
False
False
False
38
False
False
False
False
False
39
False
False
False
False
False
40
False
False
False
False
False
41
False
False
False
False
False
42
False
False
False
False
False
43
False
False
True
False
False
44
False
True
False
False
False
45
False
False
False
False
False
46
False
False
False
False
False
47
False
False
False
False
False
48
False
False
False
False
False
49
False
False
False
False
False
Para obtener una suma de valores nulos o faltantes solamente se debe ejecutar la siguiente instrucción:
In [29]: #Suma de datos nulos en el DataFrame print('Suma datos nulos en el DataFrame:') #imprimir notas2.isnull().sum() Suma datos nulos en el DataFrame: Out[29]: Alumno 0 Nota1 11 Nota2 3 Nota3 0 Promedio 0 dtype: int64
Ahora vamos a rellenar los valores perdidos con otros valores usando df.fillna(x) que reemplaza los valores perdidos con x , puede ser cualquier valor, inclusive se puede reemplar todos los valores nulos con la media de los datos.
In [30]: #Reemplaza los valores perdidos por la media print('Reemplazar los valores perdidos por la media:') #Imprimir notas2.fillna(5) Reemplazar los valores perdidos por la media: Out[30]: Alumno
Nota1
Nota2
Nota3
Promedio
0
Maria
18.0
19.0
18
18
1
Jose
5.0
15.0
11
13
2
Juan
13.0
12.0
17
14
3
Luis
10.0
19.0
18
16
4
Carlos
16.0
12.0
10
13
5
Rosa
5.0
14.0
10
12
6
Jorge
9.0
11.0
19
13
7
Victor
5.0
13.0
10
12
8
Ana
18.0
19.0
11
16
9
Luz
14.0
20.0
16
17
10
Cesar
5.0
13.0
20
17
11
Carmen
14.0
10.0
14
13
12
Miguel
5.0
10.0
16
13
13
Julio
11.0
10.0
14
12
14
Jesus
12.0
13.0
10
12
15
Pedro
5.0
11.0
15
13
16
Manuel
15.0
20.0
20
18
17
Juana
8.0
13.0
10
10
18
Santos
7.0
17.0
14
13
19
Segundo
5.0
8.0
20
14
20
Jhon
10.0
8.0
10
9
21
David
7.0
8.0
10
8
22
Angel
18.0
9.0
11
13
23
Julia
7.0
11.0
18
12
24
Diego
20.0
18.0
18
19
25
Flor
12.0
10.0
13
12
26
Elizabeth
16.0
19.0
18
18
27
Daniel
18.0
13.0
16
16
28
Oscar
10.0
5.0
12
11
29
Ruth
9.0
11.0
12
11
30
Diana
16.0
13.0
14
14
31
Marco
9.0
14.0
16
13
32
Edwin
5.0
19.0
11
15
33
Javier
5.0
16.0
10
13
34
Walter
11.0
5.0
14
13
35
Francisco
5.0
10.0
20
15
36
Fernando
10.0
20.0
13
14
37
Milagros
18.0
14.0
11
14
38
Alejandro
9.0
17.0
14
13
39
Raul
20.0
18.0
16
18
40
Ricardo
9.0
17.0
17
14
41
Alex
10.0
10.0
20
13
42
Roberto
19.0
14.0
12
15
43
Edgar
15.0
5.0
19
17
44
Victoria
5.0
11.0
17
14
45
Eduardo
12.0
19.0
12
14
46
Mario
19.0
14.0
19
17
47
Jaime
18.0
19.0
15
17
48
Gloria
19.0
16.0
16
17
49
Andrea
14.0
17.0
19
17
Ahora para conservar los cambios generamos un nuevo archivo csv con el resultado de la limpieza, utilizamos el comando df.to_csv que creara el nuevo archivo.
In [31]: #asignamos el resultado al DataFrame nota_final nota_final = notas2.fillna(5) In [32]: #imprimimos para confirmar nota_final.head() Out[32]: Alumno
Nota1
Nota2
Nota3
Promedio
0
Maria
18.0
19.0
18
18
1
Jose
5.0
15.0
11
13
2
Juan
13.0
12.0
17
14
3
Luis
10.0
19.0
18
16
4
Carlos
16.0
12.0
10
13
In [33]: #grabamos en otro archivo notas2.to_csv('data/notafinal.csv')
Ejemplo 02: Frecuencia Simple de Datos Vamos hallar la frecuencia de notas de un archivo csv damos como resultado la nota mas alta
In [34]: #cargamos un archivo CSV separado por punto y coma notas3 = pd.read_csv('data/notas.csv', ';') In [35]: #nombres de columnas notas3.columns.values Out[35]: array(['Alumno', 'Nota1', 'Nota2', 'Nota3', 'Promedio'], dtype=object) In [36]: #buscamos cuantos alumnos han sacado nota 20 en Promedio #creamos nuevo DataFrame con notas promedio y frecuencias tab = pd.crosstab(index=notas3['Nota3'], columns='Frecuencia') tab.head(15) Out[36]: col_0
Frecuencia
Nota3 10
8
11
5
12
4
13
2
14
6
15
2
16
6
17
3
18
5
19
4
20
5
In [37]: #localizar alumnos que han sacado 20 en su Nota3 fila = tab.loc[tab.index==20] #variable x = fila['Frecuencia'] x = int(x) #Impresion print('\t \t \t FELICITACIÓN') print("") print('\n') print("%d alumnos han sacado en su Nota3 20, mis felicitaciones!!"%x) print('\n\n\n') FELICITACIÓN 5 alumnos han sacado en su Nota3 20, mis felicitaciones!!
Ejemplo 03: Archivo csv "NBA" y Funciones de busqueda Las funciones de busqueda son básicas en pandas lo vamos aplicar a un archivo bajado de la pagina web Kaggle el mayor banco de dataset
In [38]: #cargamos un archivo CSV separado por comas con indice en columna "Name" data = pd.read_csv('data/nba.csv', index_col="Name") #Impresión data.head() Out[38]: Team
Number
Position
Age
Height
Weight
College
Salary
Avery Bradley
Boston Celtics
0.0
PG
25.0
6-2
180.0
Texas
7730337.0
Jae Crowder
Boston Celtics
99.0
SF
25.0
6-6
235.0
Marquette
6796117.0
John Holland
Boston Celtics
30.0
SG
27.0
6-5
205.0
Boston University
NaN
R.J. Hunter
Boston Celtics
28.0
SG
22.0
6-5
185.0
Georgia State
1148640.0
Jonas Jerebko
Boston Celtics
8.0
PF
29.0
6-10
231.0
NaN
5000000.0
Name
In [39]: #variables que busca en la columna "Name" y funcion `loc` fist = data.loc["Avery Bradley"] second = data.loc["Jae Crowder"] #impresión print(fist, "\n\n\n", second) Team Boston Celtics Number 0 Position PG Age 25 Height 62 Weight 180 College Texas Salary 7.73034e+06 Name: Avery Bradley, dtype: object Team Boston Celtics Number 99 Position SF Age 25 Height 66 Weight 235 College Marquette Salary 6.79612e+06 Name: Jae Crowder, dtype: object
EJERCICIOS:
Ingresamos al entorno de desarrollo Jupyter Notebook desde Anaconda Navigator y/o Terminal entorno computacion2. Creamos 01 nuevo archivo por integrante: (dentro de nuestra carpeta con nuestro Apellido). Ejercicio_01_pandas.ipynb Ejercicio_02_pandas.ipynb Ejercicio_03_pandas.ipynb Ejercicio_04_pandas.ipynb Ejercicio_05_pandas.ipynb Ejercicio_06_pandas.ipynb - **Cada integrante de grupo** digita **la solución de solo 01 Ejercicio** y luego los ejecuta para verificar que esta correcto, al final guarda. - **Cada integrante de grupo** debe **revisar los ejercicios de sus compañeros**; verificara que funcione correctamente y colaborara con su mejora.
Ejercicio 1
Crear un programa con funciones y que permita ingresar el nombre de un producto por teclado y la cantidad en kilos que necesite, luego debe abrir el archivo precios.csv (se encuentra dentro de archivo ejercicios.zip ) buscar el nombre del producto deseado (requiere ingresar un producto de la lista) y luego imprimir el producto con el precio final, luego debe preguntar si deseas seguir pidiendo otro producto(nuevamente te debe pedir ingresar el producto) o salir finalizando el programa.
Ejercicio 2:
Crear un programa que permita visualizar el nombre del/(los) jugador(es) de la NBA de mayor edad por pantalla, dato que se puede ubicar en la columna Age, desde el archivo nba.csv (que se encuentra dentro de archivo ejercicios.zip ) debera visualizar por pantalla todos los datos de dicho(s) jugador(es) y adicionalmente guardar la información en el archivo nba_adulto.csv .
Ejercicio 3:
Crear un programa que permita visualizar el nombre del/(los) jugador(es) de la NBA que han llevado estudios College en la ciudad de Kentucky, dato que se puede ubicar en la columna College, desde el archivo nba.csv (que se encuentra dentro de archivo ejercicios.zip ) debera visualizar por pantalla todos los datos de dicho(s) jugador(es) y adicionalmente guardar la información en el archivo nba_adulto.csv .
Ejercicio 4:
Crear un programa que permita visualizar el nombre del/(los) estudiante(s) que deben viajar mas de 01 hora dato que se puede ubicar en la columna traveltime, desde el archivo studentmat.csv (que se encuentra dentro de archivo ejercicios.zip ) debera visualizar por pantalla todos los datos de dicho(s) alumno(s) y adicionalmente guardar la información en el archivo studenttravel.csv .
Ejercicio 5:
Crear un programa que permita visualizar el nombre del/(los) estudiante(s) que no poseen internet dato que se puede ubicar en la columna internet, desde el archivo studentmat.csv (que se encuentra dentro de archivo ejercicios.zip ) debera visualizar por pantalla todos los datos de dicho(s) alumno(s) y adicionalmente guardar la información en el archivo student internet.csv .
Ejercicio 6:
Crear un programa que permita visualizar el nombre del/(los) estudiante(s) que son mayores de 18 años dato que se puede ubicar en la columna age, desde el archivo studentmat.csv (que se encuentra dentro de archivo ejercicios.zip ) debera visualizar por pantalla todos los datos de dicho(s) alumno(s) y adicionalmente guardar la información en el archivo student age.csv .
Database studentmat.csv fue sacado de Kaggle autores: P. Cortez and A. Silva. Using Data Mining to Predict Secondary School Student Performance. In A. Brito and J. Teixeira Eds., Proceedings of 5th FUture BUsiness TEChnology Conference (FUBUTEC 2008) pp. 5-12, Porto, Portugal, April, 2008, EUROSIS, ISBN 978-9077381-39-7.
web: https://www.kaggle.com/janiobachmann/math-students/data
Recordar que es 01 Ejercicio por integrante, luego deben revisar y comentar el trabajo de sus compañeros (OJO si son 05 integrantes, todos deben colaborar para hacer el último)
3.- Sincronizar cuantas veces sea necesario los cambios con git:
Ingresamos a la linea de comando. En nuestro directorio de Practica_06 . Añadimos los cambios de archivos a git:
(Programacion2) renzo@misti:~$ git add A (Programacion2) renzo@misti:~$ git commit m "Avance 10 de Practica 06"
Actualizamos nuestros repositorio local con los cambios del respositorio de GitLab:
(Programacion2) renzo@misti:~$ git pull origin master
Enviamos nuestros cambios al repositorio remoto de GitLab:
(Programacion2) renzo@misti:~$ git push origin master
Si se hace cambios repetir los pasos anteriores de comandos git.
Para tener evidencia del trabajo realizado envía un solo integrante al Aula Virtual, la carpeta con todo el proyecto en zip.
Finaliza la Práctica
Bibliografía
[1] Guía de pandas oficial https://pandas.pydata.org/docs/user_guide/index.html [2] Python Pandas Tutorial: A Complete Introduction for Beginners https://bit.ly/2AQMQld [3] Guía para pandas https://pybonacci.org/2014/05/30/pandas-i/ [4] Dataset variados https://www.kaggle.com/datasets