Practica - 06 - Pandas - Intro

Universidad Nacional de San Agustín de Arequipa Escuela Profesional de Ingeniería de Telecomunicaciones Ingeniero Renzo

Views 90 Downloads 4 File size 2MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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                 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