Vous êtes sur la page 1sur 6

Actividad 2 - Control de flujos

November 1, 2018

1 Actividad 02 - Control de flujos


1.1 Ejercicio 1: Generar un par de arrays ficticios con numpy
1.1.1 Utilice la función np.linspace para generar un array entre 1 y 50, y un array entre 50 y
150.
In [1]: #Importamos la librería numpy
import numpy as np

In [18]: array1 = np.linspace (1,50, dtype=int)


print (array1)

[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
49 50]

In [21]: array2 = np.linspace(50, 150, dtype=int)


print (array2)

[ 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84
86 88 90 92 94 96 98 101 103 105 107 109 111 113 115 117 119 121
123 125 127 129 131 133 135 137 139 141 143 145 147 150]

1.2 Ejercicio 2: Ejecute un loop que devuelva si el número en el primer array es par o
impar
1.2.1 Para averiguar si el cada número es par o impar puede implementar el operador de mó-
dulo (%) para encontrar si el número es divisible por 2.
In [22]: pares=[]
impares=[]

for i in array1:
if i%2 == 0:
pares.append(i)
else:

1
impares.append(i)

print (pares)
print (impares)

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]

1.3 Ejercicio 3: Genere un loop con el segundo array que cuente las siguientes condi-
ciones
1.3.1 Si el número es divisible por 2 o 3
1.3.2 Si el número es divisible por 2 y 3
1.3.3 Si el número es divisible por 3 pero no por 2
1.3.4 Si el número no es divisible por 2 ni 3
In [34]: divisible_por_2_o_3 = []
divisible_por_2_y_3 = []
divisible_por_3 = []
ninguno =[]

for i in array2:
if i%2==0 or i%3==0:
divisible_por_2_o_3.append(i)
if i % 2 ==0 and i%3==0:
divisible_por_2_y_3.append(i)
if i%3==0 and i%2 !=0:
divisible_por_3.append(i)
if i%3!=0 and i%2 !=0:

ninguno.append(i)

print (divisible_por_2_o_3)
print (divisible_por_2_y_3)
print (divisible_por_3)
print (ninguno)

[50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96
[54, 60, 66, 72, 78, 84, 90, 96, 150]
[105, 111, 117, 123, 129, 135, 141, 147]
[101, 103, 107, 109, 113, 115, 119, 121, 125, 127, 131, 133, 137, 139, 143, 145]

2
1.4 Ejercicio 4
1.4.1 Utilizando la misma base flights.csv
1.4.2 Para ello, generen un nuevo objeto que represente la media de passengers.
1.4.3 Generen una columna en la base de datos que se llame underperforming y asígnele 0.
1.4.4 Ejecuten un loop que recorra cada observación de passengers, donde si la observación es
menor a la media de passengers se le asigne a underperforming un 1.
1.4.5 Para asignar unos en la columna underperforming ya creada, utilice la función at. Lea la
documentación asociada para ver qué parámetros ingresa.
In [182]: #Hacer un loop y clasificar los meses con una cantidad de pasajeros menor a la media
import pandas as pd

df = pd.read_csv("./act01-fds-master/flights.csv")
df['underperforming']= 0

for i in df.index:
if df.at[i, 'passengers'] < df.passengers.mean():
df.at[i,'underperforming'] = 1
else:
df.at[i,'underperforming'] = 0

In [183]: df.passengers.mean()

Out[183]: 280.2986111111111

In [184]: df

Out[184]: year month passengers underperforming


0 1949 January 112 1
1 1949 February 118 1
2 1949 March 132 1
3 1949 April 129 1
4 1949 May 121 1
5 1949 June 135 1
6 1949 July 148 1
7 1949 August 148 1
8 1949 September 136 1
9 1949 October 119 1
10 1949 November 104 1
11 1949 December 118 1
12 1950 January 115 1
13 1950 February 126 1
14 1950 March 141 1
15 1950 April 135 1
16 1950 May 125 1
17 1950 June 149 1

3
18 1950 July 170 1
19 1950 August 170 1
20 1950 September 158 1
21 1950 October 133 1
22 1950 November 114 1
23 1950 December 140 1
24 1951 January 145 1
25 1951 February 150 1
26 1951 March 178 1
27 1951 April 163 1
28 1951 May 172 1
29 1951 June 178 1
.. ... ... ... ...
114 1958 July 491 0
115 1958 August 505 0
116 1958 September 404 0
117 1958 October 359 0
118 1958 November 310 0
119 1958 December 337 0
120 1959 January 360 0
121 1959 February 342 0
122 1959 March 406 0
123 1959 April 396 0
124 1959 May 420 0
125 1959 June 472 0
126 1959 July 548 0
127 1959 August 559 0
128 1959 September 463 0
129 1959 October 407 0
130 1959 November 362 0
131 1959 December 405 0
132 1960 January 417 0
133 1960 February 391 0
134 1960 March 419 0
135 1960 April 461 0
136 1960 May 472 0
137 1960 June 535 0
138 1960 July 622 0
139 1960 August 606 0
140 1960 September 508 0
141 1960 October 461 0
142 1960 November 390 0
143 1960 December 432 0

[144 rows x 4 columns]

4
1.5 Ejercicio 5: Hacer un loop que clasifique los meses donde la cantidad de pasajeros
se escapa de la tendencia.
In [200]: # Para ello, genere dos objetos que guarden la media general y la desviación estandar

mg = df.passengers.mean()
sd = df.passengers.std()
sd

Out[200]: 119.96631694294321

In [208]: #Genere una nueva columna en la tabla de datos que se llame outlier y asígnele 0.
df['outlier'] = 0

In [209]: # Ejecuten un loop que recorra cada observación de passengers, donde si la observació

# Para clasificar los casos que se escapen la tendencia, la observación debe satisfac
# La observación debe ser menor a la media menos la desviación estándar, o
# La observación debe ser mayor a la media más la desviación estándar.

for i in df.index:
if df.at[i, 'passengers'] < (mg - sd) or df.at[i, 'passengers'] > (mg + sd):
df.at[i, 'outlier'] = 1
else:
df.at[i, 'outlier'] = 0

df

Out[209]: year month passengers underperforming outlier


0 1949 January 112 1 1
1 1949 February 118 1 1
2 1949 March 132 1 1
3 1949 April 129 1 1
4 1949 May 121 1 1
5 1949 June 135 1 1
6 1949 July 148 1 1
7 1949 August 148 1 1
8 1949 September 136 1 1
9 1949 October 119 1 1
10 1949 November 104 1 1
11 1949 December 118 1 1
12 1950 January 115 1 1
13 1950 February 126 1 1
14 1950 March 141 1 1
15 1950 April 135 1 1
16 1950 May 125 1 1
17 1950 June 149 1 1
18 1950 July 170 1 0
19 1950 August 170 1 0

5
20 1950 September 158 1 1
21 1950 October 133 1 1
22 1950 November 114 1 1
23 1950 December 140 1 1
24 1951 January 145 1 1
25 1951 February 150 1 1
26 1951 March 178 1 0
27 1951 April 163 1 0
28 1951 May 172 1 0
29 1951 June 178 1 0
.. ... ... ... ... ...
114 1958 July 491 0 1
115 1958 August 505 0 1
116 1958 September 404 0 1
117 1958 October 359 0 0
118 1958 November 310 0 0
119 1958 December 337 0 0
120 1959 January 360 0 0
121 1959 February 342 0 0
122 1959 March 406 0 1
123 1959 April 396 0 0
124 1959 May 420 0 1
125 1959 June 472 0 1
126 1959 July 548 0 1
127 1959 August 559 0 1
128 1959 September 463 0 1
129 1959 October 407 0 1
130 1959 November 362 0 0
131 1959 December 405 0 1
132 1960 January 417 0 1
133 1960 February 391 0 0
134 1960 March 419 0 1
135 1960 April 461 0 1
136 1960 May 472 0 1
137 1960 June 535 0 1
138 1960 July 622 0 1
139 1960 August 606 0 1
140 1960 September 508 0 1
141 1960 October 461 0 1
142 1960 November 390 0 0
143 1960 December 432 0 1

[144 rows x 5 columns]

In [ ]:

Vous aimerez peut-être aussi