#1
import pandas as pd
import numpy as np
bc = pd.read_csv('C:/Users/Rodrigo/Desktop/TEC/Concentracion/BankChurners.csv')
#Calcule la dimensi´on de la Tabla de Datos.
bc.shape
#Calcule el resumen num´erico de la tabla.
## (810, 16)
bc.describe(include = np.number)
#Calcule la suma de las columnas con variables cuantitativas (num´ericas).
## ID Customer_Age ... Total_Trans_Amt Total_Trans_Ct
## count 8.100000e+02 810.000000 ... 810.000000 810.000000
## mean 7.382476e+08 46.372840 ... 4345.117284 64.301235
## std 3.643023e+07 7.895126 ... 3430.280147 23.498271
## min 7.081132e+08 26.000000 ... 530.000000 10.000000
## 25% 7.130855e+08 41.000000 ... 2120.500000 44.000000
## 50% 7.177080e+08 46.000000 ... 3822.500000 67.000000
## 75% 7.726768e+08 52.000000 ... 4656.000000 80.000000
## max 8.279684e+08 67.000000 ... 17995.000000 128.000000
##
## [8 rows x 11 columns]
numericas = numericas = bc.select_dtypes(['int64','float64']).columns
suma = bc[numericas].sum()
suma
#Calcule la moda de las columnas con variables cualitativas (categ´oricas).
## ID 5.979805e+11
## Customer_Age 3.756200e+04
## Dependent_count 1.850000e+03
## Months_on_book 2.904000e+04
## Total_Relationship_Count 3.073000e+03
## Months_Inactive_12_mon 1.885000e+03
## Contacts_Count_12_mon 1.970000e+03
## Credit_Limit 6.579856e+06
## Total_Revolving_Bal 9.373900e+05
## Total_Trans_Amt 3.519545e+06
## Total_Trans_Ct 5.208400e+04
## dtype: float64
categoricas = bc.select_dtypes(['object']).columns
moda = bc[categoricas].mode()
moda
## Attrition_Flag Gender Education_Level Marital_Status Income_Category
## 0 Existing Customer F Graduate Married Less than $40K
#2. Usando for(...) en Python muestre los n´umeros del 1 al 200 m´ultiplos de 17, debe mostrarlos en orden inverso, es decir, de mayor a menor.
for valor in range(200,0,-1):
if valor % 17 == 0:
print(valor)
## 187
## 170
## 153
## 136
## 119
## 102
## 85
## 68
## 51
## 34
## 17
#3. Mediante un ciclo, calcule la productoria de los n´umeros enteros terminados en 9, comprendidosentre el 1 y el 100.
flag = 1
for valor in range(1,100):
if valor % 10 == 9:
flag = valor * flag
print(flag)
## 9
## 171
## 4959
## 193401
## 9476649
## 559122291
## 38579438079
## 3047775608241
## 271252029133449
## 26853950884211451
#Mediante un ciclo, guarde en una lista todos los n´umeros pares desde 30 hasta el 50, incluyendo los extremos.
flag = []
for valor in range(30,51):
if valor % 2 == 0:
flag.append(valor)
print(flag)
## [30]
## [30, 32]
## [30, 32, 34]
## [30, 32, 34, 36]
## [30, 32, 34, 36, 38]
## [30, 32, 34, 36, 38, 40]
## [30, 32, 34, 36, 38, 40, 42]
## [30, 32, 34, 36, 38, 40, 42, 44]
## [30, 32, 34, 36, 38, 40, 42, 44, 46]
## [30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
## [30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
#5. Programe una funci´on que recibe tres objetos A, B, y C, si el tipo de dichos objetos es str retorna una lista con el tama˜no de cada uno. En caso de que alguno de los tres objetos no seastr retorna None, use isinstance para determinar si el objeto es de tipo str
def tamano(A, B, C):
largo = []
for obj in [A, B, C]:
if isinstance(obj, str):
largo.append(len(obj))
else:
return None
return largo
A = "tonto"
B = "cel"
C = "gai"
largo = tamano(A,B,C)
print(largo)
## [5, 3, 3]
#6 Programe una funci´on que reciba un n´umero y retorne True en caso de ser un n´umero primo,de lo contrario retorna False. La definici´on de ✭✭n´umero primo✮✮ dice que ✭✭Un n´umero enteromayor que 1 se denomina n´umero primo si y s´olo si tiene como divisores positivos (factores)´unicamente a s´ı mismo y a la unidad 1✮✮. Por ejemplo, son n´umeros primos: 2, 3, 5, 7, 11, 13, 17.
def primo(num):
if num <= 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
ejemplo= 13
primo(ejemplo)
## True
#7.
def primo(num):
if num == 1:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
def minprim(lista):
minimo = None
for valor in lista:
if primo(valor):
if minimo is None or valor < minimo:
minimo = valor
return minimo
ejemplo = [12,45,234,54,54,12,13,2,1,13,35]
minprim(ejemplo)
## 2
#8 Programe una funci´on que reciba un objeto C tipo str (cadena de caracteres) y retorne la primera letra de cada palabra que posee la cadena de caracteres C. Por ejemplo: “Hola Mundo Estoy Programando” → “HMEP”.
def plet(c):
lista = []
palabras = c.split()
for letras in palabras:
lista.append(letras[0])
return lista
oracion = "Estoy probando esta funcion"
plet(oracion)
## ['E', 'p', 'e', 'f']
#9. Programe una funci´on que reciba un objeto C tipo str (cadena de caracteres) y retorne solamente las letras consonantes. Por ejemplo: “algoritmos” → “lgrtms”.
def consonante(x):
lista_vocales = ['A','a','E','e','I','i','O','o','U','u']
consonantes = []
for letra in x:
if letra not in lista_vocales:
consonantes.append(letra)
return consonantes
palabra = "tonto"
consonante(palabra)
## ['t', 'n', 't']
#10. Desarrolle una funci´on en Python que recibe dos n´umero enteros y retorne True si alguno de ellos es m´ultiplo del otro
def numeros (x,y):
n1 = x
n2 = y
resp = None
if n1 % n2 == 0 or n2 % n1 == 0:
resp = True
else:
resp = False
return resp
numeros(5,10)
## True
#11. Programe en Python una funci´on que recibe tres valores A, B, y C y retorna el del medio.
def media(a,b,c):
lista = [a,b,c]
return lista[1]
media(2,5,7)
## 5
#12. Programe en Python una funci´on que recibe un n´umero n y retorna la sumatoria de los n´umeros enteros comprendidos entre el 1 y el n.
def sumatoria(num):
suma = 0
for flag in range(1, num+1):
suma = suma + flag
return suma
sumatoria(10)
## 55
#13. Programe una funci´on en Python que recibe un n´umero n y realice la sumatoria de los n´umerosenteros m´ultiplos de 7, comprendidos entre el 1 y el n.
def sumatoria(num):
suma = 0
for flag in range(1, num+1):
if flag % 7 == 0:
suma = suma + flag
return suma
sumatoria(15)
## 21
#14. Programe en Python una funci´on que genera 100 n´umeros al azar entre 1 y 400. Luego de esos 100 n´umeros la funci´on calcula y retorna qu´e porcentaje son impares.
def porcen():
numeros = np.random.randint(1, 400, size=100)
impares = np.count_nonzero(numeros % 2 == 1)
return ((impares / 100) * 100)
print(porcen())
## 56.99999999999999
#15. Programe en Python una funci´on que genera 50 n´umeros al azar entre 1 y 300 y luego calculacu´antos est´an entre el 50 y 150, ambos inclusive.
import random
def cincuenta():
num = [random.randint(1, 300) for _ in range(50)]
d=len([x for x in num if x>=50 and x<=150])
print(d)
cincuenta()
## 22
#16.
def costo(t):
if t < 1:
cost = 0.5
elif t > 1:
cost = 0.5 + (t - 1)/4
return cost
costo(7)
## 2.0
#17. Desarrolle una funci´on en Python que reciba un vector de n´umeros reales y un n´umero real x, tal que retorne el porcentaje de elementos menores o iguales a un valor x.
def menores_x(vector, x):
resp = (sum(1 for elemento in vector if elemento <= x) / len(vector)) * 100
return resp
porc = menores_x([2,4,6,8,1.2,3.4,7], 5)
print (porc)
## 57.14285714285714
#18
def persona(p):
precio = 10
if p > 4:
print("No se pueden comprar mas de 4 boletos")
elif p == 2:
precio = (precio * 0.85)*2
print("El precio final es:", precio)
elif p == 3:
precio= (precio * 0.80)*3
print("El precio final es:", precio)
elif p == 4:
precio = (precio * 0.75)*4
print("El precio final es:", precio)
elif p == 1:
print("El precio final es:", precio)
else:
print("Número de boletos inválido")
persona(2)
## El precio final es: 17.0
persona(3)
## El precio final es: 24.0
persona(4)
## El precio final es: 30.0
persona(1)
## El precio final es: 10
persona(5)
## No se pueden comprar mas de 4 boletos
#19
def construir_vector(n):
vector = [1]
for k in range(1, n):
vectork = vector[k-1]/3 + 0.5
vector.append(vectork)
return vector
construir_vector(5)
## [1, 0.8333333333333333, 0.7777777777777777, 0.7592592592592593, 0.7530864197530864]
#20
def cmatriz(m, n):
matriz = []
for i in range(m):
fila = []
for j in range(n):
entrada = i - j/2
fila.append(entrada)
matriz.append(fila)
return matriz
cmatriz(2,2)
## [[0.0, -0.5], [1.0, 0.5]]
#21
import math
def maxcomdiv_minconmult(a, b):
mcd = math.gcd(a, b)
mcm = (a*b) // mcd
return {"mcd": mcd, "mcm": mcm}
print(maxcomdiv_minconmult(30, 70))
## {'mcd': 10, 'mcm': 210}
#22
def transpuesta(A):
m = len(A)
vacia = [[0] * m for i in range(m)]
for i in range(m):
for j in range(m):
vacia[j][i] = A[i][j] # intercambiar filas por columnas
return vacia
prueba = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
transpuesta(prueba)
## [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
#23
def palabra(x):
x=x.lower()
if x==x[::-1]:
return True
else:
return False
palabra("reconocer")
## True
#24
#25
import pandas as pd
def rescolum(df, column):
columna = df[column]
promedio = columna.mean()
minimo = columna.min()
maximo = columna.max()
varianza = columna.var()
return {"promedio": promedio, "minimo": minimo, "maximo": maximo, "varianza": varianza}
archivo = pd.read_csv("C:/Users/Rodrigo/Desktop/TEC/Concentracion/BankChurners.csv")
column= archivo["Credit_Limit"]
result = rescolum(archivo, "Credit_Limit")
print(result)
## {'promedio': 8123.279629629629, 'minimo': 1438.3, 'maximo': 34516.0, 'varianza': 74871711.75366364}
#26
import pandas as pd
def correlacion(df, col1, col2):
matriz = df.corr()
return matriz.loc[col1, col2]
archivo = pd.read_csv("C:/Users/Rodrigo/Desktop/TEC/Concentracion/BankChurners.csv")
col1= archivo["Customer_Age"]
col2= archivo["Dependent_count"]
result = correlacion(archivo, "Customer_Age", "Dependent_count")
## <string>:2: FutureWarning: The default value of numeric_only in DataFrame.corr is deprecated. In a future version, it will default to False. Select only valid columns or specify the value of numeric_only to silence this warning.
print(result)
## -0.1129231721854703