Learn practical skills, build real-world projects, and advance your career
import numpy as np
import math
import urllib.request
import os

os.getcwd()
os.makedirs('./data2', exist_ok=True)

url1 = 'https://gist.githubusercontent.com/aakashns/257f6e6c8719c17d0e498ea287d1a386/raw/7def9ef4234ddf0bc82f855ad67dac8b971852ef/loans1.txt'
url2 = 'https://gist.githubusercontent.com/aakashns/257f6e6c8719c17d0e498ea287d1a386/raw/7def9ef4234ddf0bc82f855ad67dac8b971852ef/loans2.txt'
url3 = 'https://gist.githubusercontent.com/aakashns/257f6e6c8719c17d0e498ea287d1a386/raw/7def9ef4234ddf0bc82f855ad67dac8b971852ef/loans3.txt'

urllib.request.urlretrieve(url1, './data2/loans1.txt')
urllib.request.urlretrieve(url2, './data2/loans2.txt')
urllib.request.urlretrieve(url3, './data2/loans3.txt')

os.listdir('./data2')
['emis2.txt', 'loans3.txt', 'loans1.txt', 'loans2.txt']
path = './data2/loans2.txt'


with open(path, 'r') as file:
        data = file.readlines()

data
['amount,duration,rate,down_payment\n',
 '828400,120,0.11,100000\n',
 '4633400,240,0.06,\n',
 '42900,90,0.08,8900\n',
 '983000,16,0.14,\n',
 '15230,48,0.07,4300']
def parse_headers(header_line):
    return header_line.strip().split(',')

headers = parse_headers(data[0])
headers
['amount', 'duration', 'rate', 'down_payment']
def parse_values(data):
    values = []
    for lines in data:    
        for item in lines.strip().split(','):
            if item == '':
                values.append(0.0)
            else:
                values.append(float(item))        
    return values

values = parse_values(data[1:])
print(values)
[828400.0, 120.0, 0.11, 100000.0, 4633400.0, 240.0, 0.06, 0.0, 42900.0, 90.0, 0.08, 8900.0, 983000.0, 16.0, 0.14, 0.0, 15230.0, 48.0, 0.07, 4300.0]
def parse_columns(pre_columns):   
    return np.reshape(pre_columns,(len(headers),len(data[1:])),order='F')

pre_columns = np.array(values)
columns = parse_columns(pre_columns)
columns
array([[8.2840e+05, 4.6334e+06, 4.2900e+04, 9.8300e+05, 1.5230e+04],
       [1.2000e+02, 2.4000e+02, 9.0000e+01, 1.6000e+01, 4.8000e+01],
       [1.1000e-01, 6.0000e-02, 8.0000e-02, 1.4000e-01, 7.0000e-02],
       [1.0000e+05, 0.0000e+00, 8.9000e+03, 0.0000e+00, 4.3000e+03]])