Educación Ejecutiva
UTEC
David Allende Quintana
Capacitador de Analítica aplicada
Lead Data Scientist Tottus Corporativo
Consultor Analítico
Experiencia profesional: Banca, Telecomunicaciones, Consultoría
Ingeniero Estadístico con especialización en Inteligencia de Negocios
Educación Ejecutiva
UTEC
Reglas
1 pausa activa
Mantener silenciado al micrófono de todos
Las preguntas se realizan por el chat / en caso sea necesario se
habilita el micrófono
Educación Ejecutiva
UTEC
Objetivos
Introducción a Numpy
Comandos básicos de Python e instalación de funciones.
Introducción a Python y Google Colab.
Introducción a Pandas
Educación Ejecutiva
UTEC
INTRODUCCIÓN A
PYTHON Y GOOGLE
COLAB
PYTHON
• Es un lenguaje de programación interpretado ¡Bye compilador!
• Posee un tipado dinámico, es decir no requiere que se declare el tipo de dato de cada variable creada y además puede
cambiar conforme se le vaya asignando valores.
• Recomendado para aprender a programar, sintaxis muy sencilla y legible (como si estuviéramos hablándole al ordenador).
HISTORIA DE PYTHON
PYTHON EN EL MUNDO EMPRESARIAL
• Es gratuito.
• Cuenta con soporte de la comunidad
académica a nivel mundial.
• Tiene actualización constante
• Es multiplataforma.
• Distingue mayúsculas de minúsculas.
• El # sirve para comentar.
• El nombre de un objeto no puede empezar
con un número.
• Las líneas de código se separan por enter.
BENEFICIOS Y CONSIDERACIONES DE PYTHON
PYTHON Y GOOGLE COLAB
TALLERES PRÁCTICOS
ELEMENTOS BÁSICOS EN PYTHON
Notebook:
Contiene los códigos que uno ingresa
para realizar análisis o manipulación
de datos en Python. Tienen la
extensión *.ipynb
Objetos:
Las entidades que Python crea y
manipula, un objeto puede ser creado
por “=“.
Librería:
Funcionalidades creadas en Python
para realizar múltiples tareas.
COMANDOS BÁSICOS EN PYTHON
Asignación a objetos con operaciones matemáticas básicas
3.6 * 100
tc = 3.6*100
Verificamos las versiones de las librerías instaladas
import sys
print('Python version:', sys.version)
import IPython
print('IPython:', IPython.__version__)
import numpy
print('numpy:', numpy.__version__)
import pandas
print('pandas:', pandas.__version__)
COMANDOS BÁSICOS EN PYTHON
Asignación a objetos con caracteres
palabra = "Python“
palabra[0]
palabra[3]
palabra[-1]
palabra[2:]
len(palabra)
Listas
numeros = [1,2,3,4]
datos = [4,"Una cadena",-15,3.14,"Otra cadena"]
letras = ['a','b','c','d','e','f']
pares = [0,2,4,5,8,10]
COMANDOS BÁSICOS EN PYTHON
Operaciones con listas
datos[2:]
datos[-2:]
pares.append(12)
letras[:3] = ['A','B','C']
Letras
letras[:3] = []
Listas de listas
numeros = [1,2,3,4]
datos = [4,"Una cadena",-15,3.14,"Otra cadena"]
letras = ['a','b','c','d','e','f']
pares = [0,2,4,5,8,10]
COMANDOS BÁSICOS EN PYTHON
Operaciones con lista de listas
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
r = [a,b,c]
r[0]
r[-1]
r[2][2]
Tratamiento de Datos
Almacena «Click Stream Data»
Antes de analizar es necesario:
 Extraer la data
 Limpiar la data
 Array es una matriz unidimensional.
 En Python la estructura de datos por defecto son las listas. Sin embargo, las listas no soportan operaciones
matemáticas avanzadas, no está optimizado para hacerlo.
 NumPy = Paquete de Python creado por Travis Oliphant con propósitos científicos.
 Array en NumPy consume menos memoria y por ende es más rápido que una lista de Python.
Para la creación de un Array en Python
1.Necesitamos importar la librería:
import numpy as np
2.Creamos el array en Python:
n_array = np.array([[0, 1, 2, 3],[4, 5, 6, 7],[8, 9, 10, 11]])
ARREGLOS CON NUMPY
Un Array en Python tiene los siguientes atributos:
 ndim: nos da el número de dimensiones del array.
n_array.ndim
 shape: nos da el tamaño de cada dimensión.
n_array.shape
 size: nos da el número de elementos.
n_array.size
 dtype: nos da el tipo de los datos en el array.
n_array.dtype.name
ARREGLOS CON NUMPY
 Restas de arrays.
a = np.array( [11, 12, 13, 14])
b = np.array( [ 1, 2, 3, 4])
c = a - b
c
 Potencia de arrays.
b**2
 Funciones sobre los arrays.
np.cos(b)
 Multiplicación de matrices
A1 = np.array([[1, 1],[0, 1]]) / A2 = np.array([[2, 0],[3, 4]])
A1*A2
np.dot(A1,A2)
OPERACIONES MATEMÁTICAS CON NUMPY
Si deseamos seleccionar un elemento en particular de un array:
 Seleccionamos la fila 1 y la columna 2.
n_array[0,1]
 Seleccionamos la fila 1 y las 3 primeras columnas.
n_array[ 0 , 0:3 ]
 Seleccionamos la fila 1 y todas las columnas.
n_array[ 0 , : ]
 Seleccionamos todas las filas y la columna 2.
n_array[ : , 1 ]
OPERACIONES CON NUMPY
Podemos modificar las dimensiones de un array una vez creado
 Modificamos la dimensionalidad de un array llevándolo de dimensión 1xN.
n_array.ravel()
 Modificamos la dimensionalidad del array llevándola a 6 filas x 2 columnas.
n_array.shape = (6,2)
 Transpuesta de un array.
n_array.transpose()
OPERACIONES CON NUMPY
 Desarrollado por Wes Mckinny cuando trabajaba en AQR Capital Management. Deseaba una herramienta lo suficientemente flexible
para hacer análisis cuantitativos en datos financieros. Más adelante se le unió Chang She a seguir desarrollando el paquete.
 La librería Pandas desarrollada para el análisis. Fue desarrollada en NumPy.
 La librería Pandas trae la riqueza de R al mundo de Python. Tiene eficiente estructuras de datos para procesar los datos, unir datos y
leerlos de varias fuentes.
 Las estructuras de Pandas:
Series
DataFrame
Panel
ANÁLISIS DE DATOS CON PANDAS
Las series son un array de una dimensión, pueden almacenar cualquier tipo de
datos como valores discretos, continuos, cadenas y objetos Python.
 Importar la librería Pandas desde Python.
import pandas as pd
 Creación de una serie a partir de 5 números aleatorios.
pd.Series(np.random.randn(5))
pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])
SERIES
Es una estructura de datos de 2 dimensiones de distinto tipos de datos, un data frame puede venir de las siguientes
estructuras de datos:
NumPy Array, Listas, Diccionarios, Series, 2D NumPy Array.
 Data Frames que provienen de diccionarios de series.
d = {'c1': pd.Series(['A', 'B', 'C']),'c2': pd.Series([1, 2., 3., 4.])}
df = pd.DataFrame(d)
 Data Frames que provienen de diccionarios de listas.
d = {'c1': ['A', 'B', 'C', 'D'],'c2': [1, 2.0, 3.0, 4.0]}
df = pd.DataFrame(d)
DATA FRAMES
Es una estructura de datos de 3 dimensiones.
 Data Frames que provienen de diccionarios de series.
d = {'Item1': pd.DataFrame(np.random.randn(4, 3)),
'Item2': pd.DataFrame(np.random.randn(4, 2))}
pd.Panel(d)
PANEL
Los datos pueden estar de varias formas: csv, TSV, bases de datos, etc.
Vamos a importar datos de estudiantes.
IMPORTAR Y EXPORTAR DATOS
 Importar datos en formato csv.
d = pd.read_csv('Data/students.csv')
 Leer los primeros registros.
d.head()
 Leer registros específicos de una variable
d[0:5][variable]
 Exportar datos de un data frame a un csv
d = {'c1': pd.Series(['A', 'B', 'C']),'c2': pd.Series([1, 2., 3., 4.])}
df = pd.DataFrame(d)
df.to_csv('sample_data.csv')
IMPORTAR Y EXPORTAR DATOS
 Importar datos en formato xls.
d = pd.read_excel('Data/students.xls')
 Leer los primeros registros.
d.head()
 Leer registros específicos de una variable
d[0:5][‘variable’]
 Exportar datos de un data frame a un xls
df.to_excel('sample_data.xls')
IMPORTAR Y EXPORTAR DATOS
 Importar el paquete JSON.
import json
json_data = open('Data/students.json')
data = json.load(json_data)
json_data.close()
IMPORTAR Y EXPORTAR DATOS
 Identificar a los valores perdidos.
d[‘variable’].isnull()
 Identificar a los valores no perdidos.
d[‘variable’].notnull()
 Cuantificar a los valores perdidos.
d[‘variable’].isnull().value_counts()
 Cuantificar a los valores no perdidos.
d[‘variable’].notnull().value_counts()
 Eliminar a los valores perdidos.
d = d[‘variable’].dropna()
 Eliminar a cualquier registro que tenga por lo menos un campo con valor perdido.
d = d.dropna(how='any')
VALORES PERDIDOS
 Crear un data frame en base a números aleatorios.
df = pd.DataFrame(np.random.randn(5, 3), index=['a0', 'a10','a20', 'a30', 'a40'],
columns=['X', 'Y', 'Z'])
 Crear índices adicionales al data frame.
df2 = df.reindex(['a0', 'a1', 'a10', 'a11', 'a20', 'a21','a30', 'a31', 'a40', 'a41'])
 Completar los valores perdidos con ceros.
df2.fillna(0)
 Completar los valores perdidos con el método “forward propagation”. Se va completar con
el valor previo al nulo.
df2.fillna(method='pad')
 Completar los valores perdidos con el promedio de la variable.
df2.fillna(df2.mean())
VALORES PERDIDOS
 Importar un archivo csv y leer los 5 primeros casos.
df = pd.read_csv('data/students.csv')
df['AREA NAME'][0:5]
 Filtrar casos específicos.
df[df['GRADE LEVEL'] == 'ELEMENTARY']
 Convertir a mayúsculas.
df['AREA NAME'][0:5].str.upper()
 Convertir a minúsculas.
df['AREA NAME'][0:5].str.lower()
 Cuantificar la cantidad de caracteres de cada elemento.
df['AREA NAME'][0:5].str.len()
 Cortar en base a espacios en blanco.
df['AREA NAME'][0:5].str.split(' ')
 Reemplazar
df['AREA NAME'][0:5].str.replace('DISTRICT$', 'DIST')
OPERACIONES CON CADENAS
 Seleccionamos los 5 primeros registros de 2 campos.
d[['AREA NAME', 'COUNTY']][0:5]
 Partir los datos en dos grupos. Concatenarlos por posición.
p1 = d[['AREA NAME', 'COUNTY']][0:2]
p2 = d[['AREA NAME', 'COUNTY']][2:5]
pd.concat([p1,p2])
 Concatenar datos en base a una llave.
concatenated = pd.concat([p1,p2], keys = ['p1','p2'])
 Seleccionar la data agregada en base a una llave.
concatenated.ix['p1']
CONCATENAR DATOS
 Seleccionamos un subconjunto de elementos y promediamos.
data = d[d['GRADE LEVEL'] == 'ELEMENTARY']
data['NO. OBESE'].mean()
 La suma total.
data['NO. OBESE'].sum()
 Valor máximo.
data['NO. OBESE'].max()
 Valor mínimo.
data['NO. OBESE'].min()
 Desviación Estándar.
data['NO. OBESE'].std()
 Conteo.
data = df[(d['GRADE LEVEL'] == 'ELEMENTARY') &(d['COUNTY'] == 'DELAWARE')]
data['COUNTY'].count()
AGREGAR DATOS
 Creamos un data frame.
grade_lookup = {'GRADE LEVEL': pd.Series(['ELEMENTARY','MIDDLE/HIGH', 'MISC']),
'LEVEL': pd.Series([1, 2, 3])}
grade_lookup2 = pd.DataFrame(grade_lookup)
 La tabla que usaremos como base es la de estudiantes.
df[['GRADE LEVEL']][0:5]
 Inner Join.
d_sub = df[0:5].join(grade_lookup2.set_index(['GRADE LEVEL']),
on=['GRADE LEVEL'], how='inner')
CRUZAR DATOS
 Left Join.
d_sub = df[0:5].join(grade_lookup2.set_index(['GRADE LEVEL']),
on=['GRADE LEVEL'], how='left')
 Full Outer Join.
d_sub = df[0:5].join(grade_lookup2.set_index(['GRADE LEVEL']),
on=['GRADE LEVEL'], how='outer')
CRUZAR DATOS
df['NO. OBESE'].groupby(d['GRADE LEVEL']).sum()
d['NO. OBESE'].groupby(d['GRADE LEVEL']).mean()
d['NO. OBESE'].groupby(d['GRADE LEVEL']).std()
AGRUPAR DATOS
RECURSOS
ADICIONALES
[Sesion03] introduccion python
[Sesion03] introduccion python

[Sesion03] introduccion python

  • 2.
    Educación Ejecutiva UTEC David AllendeQuintana Capacitador de Analítica aplicada Lead Data Scientist Tottus Corporativo Consultor Analítico Experiencia profesional: Banca, Telecomunicaciones, Consultoría Ingeniero Estadístico con especialización en Inteligencia de Negocios
  • 3.
    Educación Ejecutiva UTEC Reglas 1 pausaactiva Mantener silenciado al micrófono de todos Las preguntas se realizan por el chat / en caso sea necesario se habilita el micrófono
  • 4.
    Educación Ejecutiva UTEC Objetivos Introducción aNumpy Comandos básicos de Python e instalación de funciones. Introducción a Python y Google Colab. Introducción a Pandas
  • 5.
  • 6.
    PYTHON • Es unlenguaje de programación interpretado ¡Bye compilador! • Posee un tipado dinámico, es decir no requiere que se declare el tipo de dato de cada variable creada y además puede cambiar conforme se le vaya asignando valores. • Recomendado para aprender a programar, sintaxis muy sencilla y legible (como si estuviéramos hablándole al ordenador).
  • 7.
  • 8.
    PYTHON EN ELMUNDO EMPRESARIAL
  • 9.
    • Es gratuito. •Cuenta con soporte de la comunidad académica a nivel mundial. • Tiene actualización constante • Es multiplataforma. • Distingue mayúsculas de minúsculas. • El # sirve para comentar. • El nombre de un objeto no puede empezar con un número. • Las líneas de código se separan por enter. BENEFICIOS Y CONSIDERACIONES DE PYTHON
  • 10.
  • 13.
  • 14.
    ELEMENTOS BÁSICOS ENPYTHON Notebook: Contiene los códigos que uno ingresa para realizar análisis o manipulación de datos en Python. Tienen la extensión *.ipynb Objetos: Las entidades que Python crea y manipula, un objeto puede ser creado por “=“. Librería: Funcionalidades creadas en Python para realizar múltiples tareas.
  • 15.
    COMANDOS BÁSICOS ENPYTHON Asignación a objetos con operaciones matemáticas básicas 3.6 * 100 tc = 3.6*100 Verificamos las versiones de las librerías instaladas import sys print('Python version:', sys.version) import IPython print('IPython:', IPython.__version__) import numpy print('numpy:', numpy.__version__) import pandas print('pandas:', pandas.__version__)
  • 16.
    COMANDOS BÁSICOS ENPYTHON Asignación a objetos con caracteres palabra = "Python“ palabra[0] palabra[3] palabra[-1] palabra[2:] len(palabra) Listas numeros = [1,2,3,4] datos = [4,"Una cadena",-15,3.14,"Otra cadena"] letras = ['a','b','c','d','e','f'] pares = [0,2,4,5,8,10]
  • 17.
    COMANDOS BÁSICOS ENPYTHON Operaciones con listas datos[2:] datos[-2:] pares.append(12) letras[:3] = ['A','B','C'] Letras letras[:3] = [] Listas de listas numeros = [1,2,3,4] datos = [4,"Una cadena",-15,3.14,"Otra cadena"] letras = ['a','b','c','d','e','f'] pares = [0,2,4,5,8,10]
  • 18.
    COMANDOS BÁSICOS ENPYTHON Operaciones con lista de listas a = [1,2,3] b = [4,5,6] c = [7,8,9] r = [a,b,c] r[0] r[-1] r[2][2]
  • 19.
    Tratamiento de Datos Almacena«Click Stream Data» Antes de analizar es necesario:  Extraer la data  Limpiar la data
  • 21.
     Array esuna matriz unidimensional.  En Python la estructura de datos por defecto son las listas. Sin embargo, las listas no soportan operaciones matemáticas avanzadas, no está optimizado para hacerlo.  NumPy = Paquete de Python creado por Travis Oliphant con propósitos científicos.  Array en NumPy consume menos memoria y por ende es más rápido que una lista de Python. Para la creación de un Array en Python 1.Necesitamos importar la librería: import numpy as np 2.Creamos el array en Python: n_array = np.array([[0, 1, 2, 3],[4, 5, 6, 7],[8, 9, 10, 11]]) ARREGLOS CON NUMPY
  • 22.
    Un Array enPython tiene los siguientes atributos:  ndim: nos da el número de dimensiones del array. n_array.ndim  shape: nos da el tamaño de cada dimensión. n_array.shape  size: nos da el número de elementos. n_array.size  dtype: nos da el tipo de los datos en el array. n_array.dtype.name ARREGLOS CON NUMPY
  • 23.
     Restas dearrays. a = np.array( [11, 12, 13, 14]) b = np.array( [ 1, 2, 3, 4]) c = a - b c  Potencia de arrays. b**2  Funciones sobre los arrays. np.cos(b)  Multiplicación de matrices A1 = np.array([[1, 1],[0, 1]]) / A2 = np.array([[2, 0],[3, 4]]) A1*A2 np.dot(A1,A2) OPERACIONES MATEMÁTICAS CON NUMPY
  • 24.
    Si deseamos seleccionarun elemento en particular de un array:  Seleccionamos la fila 1 y la columna 2. n_array[0,1]  Seleccionamos la fila 1 y las 3 primeras columnas. n_array[ 0 , 0:3 ]  Seleccionamos la fila 1 y todas las columnas. n_array[ 0 , : ]  Seleccionamos todas las filas y la columna 2. n_array[ : , 1 ] OPERACIONES CON NUMPY
  • 25.
    Podemos modificar lasdimensiones de un array una vez creado  Modificamos la dimensionalidad de un array llevándolo de dimensión 1xN. n_array.ravel()  Modificamos la dimensionalidad del array llevándola a 6 filas x 2 columnas. n_array.shape = (6,2)  Transpuesta de un array. n_array.transpose() OPERACIONES CON NUMPY
  • 27.
     Desarrollado porWes Mckinny cuando trabajaba en AQR Capital Management. Deseaba una herramienta lo suficientemente flexible para hacer análisis cuantitativos en datos financieros. Más adelante se le unió Chang She a seguir desarrollando el paquete.  La librería Pandas desarrollada para el análisis. Fue desarrollada en NumPy.  La librería Pandas trae la riqueza de R al mundo de Python. Tiene eficiente estructuras de datos para procesar los datos, unir datos y leerlos de varias fuentes.  Las estructuras de Pandas: Series DataFrame Panel ANÁLISIS DE DATOS CON PANDAS
  • 28.
    Las series sonun array de una dimensión, pueden almacenar cualquier tipo de datos como valores discretos, continuos, cadenas y objetos Python.  Importar la librería Pandas desde Python. import pandas as pd  Creación de una serie a partir de 5 números aleatorios. pd.Series(np.random.randn(5)) pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e']) SERIES
  • 29.
    Es una estructurade datos de 2 dimensiones de distinto tipos de datos, un data frame puede venir de las siguientes estructuras de datos: NumPy Array, Listas, Diccionarios, Series, 2D NumPy Array.  Data Frames que provienen de diccionarios de series. d = {'c1': pd.Series(['A', 'B', 'C']),'c2': pd.Series([1, 2., 3., 4.])} df = pd.DataFrame(d)  Data Frames que provienen de diccionarios de listas. d = {'c1': ['A', 'B', 'C', 'D'],'c2': [1, 2.0, 3.0, 4.0]} df = pd.DataFrame(d) DATA FRAMES
  • 30.
    Es una estructurade datos de 3 dimensiones.  Data Frames que provienen de diccionarios de series. d = {'Item1': pd.DataFrame(np.random.randn(4, 3)), 'Item2': pd.DataFrame(np.random.randn(4, 2))} pd.Panel(d) PANEL
  • 31.
    Los datos puedenestar de varias formas: csv, TSV, bases de datos, etc. Vamos a importar datos de estudiantes. IMPORTAR Y EXPORTAR DATOS
  • 32.
     Importar datosen formato csv. d = pd.read_csv('Data/students.csv')  Leer los primeros registros. d.head()  Leer registros específicos de una variable d[0:5][variable]  Exportar datos de un data frame a un csv d = {'c1': pd.Series(['A', 'B', 'C']),'c2': pd.Series([1, 2., 3., 4.])} df = pd.DataFrame(d) df.to_csv('sample_data.csv') IMPORTAR Y EXPORTAR DATOS
  • 33.
     Importar datosen formato xls. d = pd.read_excel('Data/students.xls')  Leer los primeros registros. d.head()  Leer registros específicos de una variable d[0:5][‘variable’]  Exportar datos de un data frame a un xls df.to_excel('sample_data.xls') IMPORTAR Y EXPORTAR DATOS
  • 34.
     Importar elpaquete JSON. import json json_data = open('Data/students.json') data = json.load(json_data) json_data.close() IMPORTAR Y EXPORTAR DATOS
  • 36.
     Identificar alos valores perdidos. d[‘variable’].isnull()  Identificar a los valores no perdidos. d[‘variable’].notnull()  Cuantificar a los valores perdidos. d[‘variable’].isnull().value_counts()  Cuantificar a los valores no perdidos. d[‘variable’].notnull().value_counts()  Eliminar a los valores perdidos. d = d[‘variable’].dropna()  Eliminar a cualquier registro que tenga por lo menos un campo con valor perdido. d = d.dropna(how='any') VALORES PERDIDOS
  • 37.
     Crear undata frame en base a números aleatorios. df = pd.DataFrame(np.random.randn(5, 3), index=['a0', 'a10','a20', 'a30', 'a40'], columns=['X', 'Y', 'Z'])  Crear índices adicionales al data frame. df2 = df.reindex(['a0', 'a1', 'a10', 'a11', 'a20', 'a21','a30', 'a31', 'a40', 'a41'])  Completar los valores perdidos con ceros. df2.fillna(0)  Completar los valores perdidos con el método “forward propagation”. Se va completar con el valor previo al nulo. df2.fillna(method='pad')  Completar los valores perdidos con el promedio de la variable. df2.fillna(df2.mean()) VALORES PERDIDOS
  • 38.
     Importar unarchivo csv y leer los 5 primeros casos. df = pd.read_csv('data/students.csv') df['AREA NAME'][0:5]  Filtrar casos específicos. df[df['GRADE LEVEL'] == 'ELEMENTARY']  Convertir a mayúsculas. df['AREA NAME'][0:5].str.upper()  Convertir a minúsculas. df['AREA NAME'][0:5].str.lower()  Cuantificar la cantidad de caracteres de cada elemento. df['AREA NAME'][0:5].str.len()  Cortar en base a espacios en blanco. df['AREA NAME'][0:5].str.split(' ')  Reemplazar df['AREA NAME'][0:5].str.replace('DISTRICT$', 'DIST') OPERACIONES CON CADENAS
  • 40.
     Seleccionamos los5 primeros registros de 2 campos. d[['AREA NAME', 'COUNTY']][0:5]  Partir los datos en dos grupos. Concatenarlos por posición. p1 = d[['AREA NAME', 'COUNTY']][0:2] p2 = d[['AREA NAME', 'COUNTY']][2:5] pd.concat([p1,p2])  Concatenar datos en base a una llave. concatenated = pd.concat([p1,p2], keys = ['p1','p2'])  Seleccionar la data agregada en base a una llave. concatenated.ix['p1'] CONCATENAR DATOS
  • 41.
     Seleccionamos unsubconjunto de elementos y promediamos. data = d[d['GRADE LEVEL'] == 'ELEMENTARY'] data['NO. OBESE'].mean()  La suma total. data['NO. OBESE'].sum()  Valor máximo. data['NO. OBESE'].max()  Valor mínimo. data['NO. OBESE'].min()  Desviación Estándar. data['NO. OBESE'].std()  Conteo. data = df[(d['GRADE LEVEL'] == 'ELEMENTARY') &(d['COUNTY'] == 'DELAWARE')] data['COUNTY'].count() AGREGAR DATOS
  • 42.
     Creamos undata frame. grade_lookup = {'GRADE LEVEL': pd.Series(['ELEMENTARY','MIDDLE/HIGH', 'MISC']), 'LEVEL': pd.Series([1, 2, 3])} grade_lookup2 = pd.DataFrame(grade_lookup)  La tabla que usaremos como base es la de estudiantes. df[['GRADE LEVEL']][0:5]  Inner Join. d_sub = df[0:5].join(grade_lookup2.set_index(['GRADE LEVEL']), on=['GRADE LEVEL'], how='inner') CRUZAR DATOS
  • 43.
     Left Join. d_sub= df[0:5].join(grade_lookup2.set_index(['GRADE LEVEL']), on=['GRADE LEVEL'], how='left')  Full Outer Join. d_sub = df[0:5].join(grade_lookup2.set_index(['GRADE LEVEL']), on=['GRADE LEVEL'], how='outer') CRUZAR DATOS
  • 44.
    df['NO. OBESE'].groupby(d['GRADE LEVEL']).sum() d['NO.OBESE'].groupby(d['GRADE LEVEL']).mean() d['NO. OBESE'].groupby(d['GRADE LEVEL']).std() AGRUPAR DATOS
  • 45.