Practica 11
Practica 11
print(sys.version)
import numpy as np
a = np.array([4,5,9,4,6,3,2])
a
array([4, 5, 9, 4, 6, 3, 2])
np.sum(a); print()
np.mean(a); print()
np.median(a); print()
33
4.714285714285714
4.0
4
np.percentile(a, 25); print() #Del 100% de datos de a, el 25% tiene valores menores a 3.5
np.percentile(a, 50); print() #Del 100% de datos de a, el 50% tiene valores menores a 4.0
np.percentile(a, 75) #Del 100% de datos de a, el 75% tiene valores menores a 5.5
3.5
4.0
5.5
min(a); print()
max(a); print()
np.std(a)
2
9
2.1189138534559038
skew(a); print()
kurtosis(a)
0.8274271039321606
-0.1402479338842988
np.random.seed(2021)
a = np.random.randint(1,9,size=(3,3))
a
array([[5, 6, 2],
[1, 6, 7],
[7, 5, 8]])
np.sum(a); print()
np.sum(a,0); print() #por columnas
np.sum(a,1) #por filas
47
array([13, 17, 17])
array([13, 14, 20])
np.mean(a); print()
np.mean(a,0); print() #por columnas
np.mean(a,1) #por filas
5.222222222222222
array([4.33333333, 5.66666667, 5.66666667])
array([4.33333333, 4.66666667, 6.66666667])
np.std(a); print()
np.std(a,0); print() #por columnas
np.std(a,1) #por filas
2.199887763691481
array([2.49443826, 0.47140452, 2.62466929])
array([1.69967317, 2.62466929, 1.24721913])
5.0
array([3. , 5.5, 4.5])
array([3.5, 3.5, 6. ])
a.min(); print()
a.min(0); print() #por columnas
a.min(1) #por filas
1
array([1, 5, 2])
array([2, 1, 5])
a.max(); print()
a.max(0); print() #por columnas
a.max(1) #por filas
8
array([7, 6, 8])
array([6, 7, 8])
Calculos en dataframes
import pandas as pd
import os
os.chdir('/content/dataset')
os.getcwd()
'/content/dataset'
ed = pd.read_excel('EmployeeData2.xlsx')
ed.head()
ed.info
<bound method DataFrame.info of id sexo fechnac educ catlab salario salini tiempemp \
0 1 Hombre 1952-02-03 15 Directivo 57000 27000 98
1 2 Hombre 1958-05-23 16 Administrativo 40200 18750 98
2 3 Mujer 1929-07-26 12 Administrativo 21450 12000 98
3 4 Mujer 1947-04-15 8 Administrativo 21900 13200 98
4 5 Hombre 1955-02-09 15 Administrativo 45000 21000 98
.. ... ... ... ... ... ... ... ...
469 470 Hombre 1964-01-22 12 Administrativo 26250 15750 64
470 471 Hombre 1966-08-03 15 Administrativo 26400 15750 64
471 472 Hombre 1966-02-21 15 Administrativo 39150 15750 63
472 473 Mujer 1937-11-25 12 Administrativo 21450 12750 63
473 474 Mujer 1968-11-05 12 Administrativo 29400 14250 63
expprev minoria
0 144.0 No
1 36.0 No
2 381.0 No
3 190.0 No
4 138.0 No
.. ... ...
469 69.0 Sí
470 32.0 Sí
471 46.0 No
472 139.0 No
473 9.0 No
ed.describe()
#ed.describe(include = [np.number])
ed.describe(include = ['O'])
#Incluye las columnas con tipos de datos de objetos (cad. de caract.)
unique 2 3 2
ed.isnull().sum()
id 0
sexo 0
fechnac 1
educ 0
catlab 0
salario 0
salini 0
tiempemp 0
expprev 24
minoria 0
dtype: int64
ed['sexo'].value_counts(); print('\n')
ed['catlab'].value_counts()
Hombre 258
Mujer 216
Name: sexo, dtype: int64
Administrativo 363
Directivo 84
Seguridad 27
Name: catlab, dtype: int64
ed['sexo'].value_counts(normalize=True); print('\n')
ed['catlab'].value_counts(normalize=True)
Hombre 0.544304
Mujer 0.455696
Name: sexo, dtype: float64
Administrativo 0.765823
Directivo 0.177215
Seguridad 0.056962
Name: catlab, dtype: float64
pd.crosstab(ed['sexo'], ed['catlab'])
sexo
Hombre 157 74 27
Mujer 206 10 0
sexo
sexo
sexo
Groupby
ed.groupby(by='sexo')
ed.groupby(by='sexo').describe()
count mean std min 25% 50% 75% max count mean ... 75% max count mean std min 25% 50%
sexo
Hombre 258.0 227.550388 141.168440 1.0 103.25 216.5 342.50 472.0 258.0 14.430233 ... 91.0 98.0 258.0 111.620155 109.692296 3.0 37.25 67.5
Mujer 216.0 249.384259 131.130737 3.0 141.75 247.5 360.25 474.0 216.0 12.370370 ... 88.0 98.0 192.0 86.666667 96.553993 2.0 11.00 48.0
2 rows × 48 columns
ed.groupby(by='sexo').describe().stack()
#calcular estadisticas descriptivas para cada grupo
id educ salario salini tiempemp expprev
sexo
ed.groupby(by='sexo').describe(include
mean 249.384259 =12.370370
['O']).stack()
26031.921296 13091.967593 80.379630 86.666667
unique 2 2
top Administrativo No
<ipython-input-40-731e4483d053>:2: FutureWarning: The default value of numeric_only in DataFrameGroupBy.mean is deprecated. In a future version, numeri
ed.groupby(by='sexo').mean()
id educ salario salini tiempemp expprev
sexo
sexo
Hombre 41441.782946
Mujer 26031.921296
Name: salario, dtype: float64
pd.DataFrame(ed.groupby(by='sexo')['salario'].mean())
salario
sexo
Hombre 41441.782946
Mujer 26031.921296
sexo salario
0 Hombre 41441.782946
1 Mujer 26031.921296
ed.groupby(by=['sexo', 'catlab'])['salario'].mean()
sexo catlab
Hombre Administrativo 31558.152866
Directivo 66243.243243
Seguridad 30938.888889
Mujer Administrativo 25003.689320
Directivo 47213.500000
Name: salario, dtype: float64
pd.DataFrame(ed.groupby(by=['sexo', 'catlab'])['salario'].mean())
salario
sexo catlab
Directivo 66243.243243
Seguridad 30938.888889
Directivo 47213.500000
ed.groupby(by=['sexo', 'catlab'])['salario'].mean().unstack()
#['salario'].mean() calcula la media de la columna salario para cada grupo
#unstack() Convierte la tabla de resultados en un formato de "tabla pivoteada",
# en la que los valores de la columna 'catlab' se convierten en columnas separadas
sexo
salario tiempemp
sexo catlab
ed[['sexo','catlab','salario','tiempemp']].groupby(by=['sexo',
'catlab']).aggregate({'salario':'min', 'tiempemp':np.mean})
salario tiempemp
sexo catlab