0% encontró este documento útil (0 votos)
124 vistas2 páginas

Practica - 06 - Pandas - Intro

Este documento presenta una práctica sobre la librería Pandas en Python. Introduce Pandas como una librería para análisis de datos y describe sus características principales. Explica los conceptos clave de DataFrame, cómo crear DataFrames a partir de diccionarios, listas y arrays NumPy, y cómo cargar datos desde un archivo CSV. La práctica incluye ejemplos de código para manipular y visualizar DataFrames.

Cargado por

Dany Edm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
124 vistas2 páginas

Practica - 06 - Pandas - Intro

Este documento presenta una práctica sobre la librería Pandas en Python. Introduce Pandas como una librería para análisis de datos y describe sus características principales. Explica los conceptos clave de DataFrame, cómo crear DataFrames a partir de diccionarios, listas y arrays NumPy, y cómo cargar datos desde un archivo CSV. La práctica incluye ejemplos de código para manipular y visualizar DataFrames.

Cargado por

Dany Edm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 2

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) 

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

Cumings, Mrs. John Bradley


1 2 1 1 female 38.0 1 0 PC 17599 71.2833 C85 C
(Florence Briggs Th...

STON/O2.
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 7.9250 NaN S
3101282

Futrelle, Mrs. Jacques Heath (Lily


3 4 1 1 female 35.0 1 0 113803 53.1000 C123 S
May Peel)

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

Johnson, Mrs. Oscar W (Elisabeth


8 9 1 3 female 27.0 0 2 347742 11.1333 NaN S
Vilhelmina Berg)

Nasser, Mrs. Nicholas (Adele


9 10 1 2 female 14.0 1 0 237736 30.0708 NaN C
Achem)

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

Name

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

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                 6­2 
Weight                 180 
College              Texas 
Salary         7.73034e+06 
Name: Avery Bradley, dtype: object  
 
 
 Team        Boston Celtics 
Number                  99 
Position                SF 
Age                     25 
Height                 6­6 
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 student­mat.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­travel.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 student­mat.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 student­mat.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 student­mat.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

También podría gustarte