# -*- coding: utf-8 -*- """ Created on Wed Sep 20 08:52:00 2017 @author: Miguel Almeida """ import numpy import matplotlib.pyplot as plt def load_planet_data(file_name): """Return matrix with orbital radius and period""" rows = [] lines = open(file_name).readlines() for line in lines[1:]: parts = line.split(',') rows.append( (float(parts[1]), float(parts[2]))) return numpy.array(rows) data = load_planet_data('planets.csv') def data_as_si(planet_data): #converts the planet data from AU and years to SI units AU_METERS = 1.496e11 YEAR_SECONDS = 3.16e7 si_radii= planet_data[:,0]*AU_METERS si_periods = planet_data[:,1]*YEAR_SECONDS return si_radii, si_periods def star_mass(filename): G = 6.67e-11 radii, periods = data_as_si(load_planet_data(filename)) velocities = 2*numpy.pi*radii/periods masses = velocities**2 * radii/G return numpy.mean(masses), numpy.std(masses) print(star_mass('planets.csv')) data = load_planet_data('planets.csv') x = data[:,0] y = data[:,1] coefs = numpy.polyfit(x,y,2) pxs = numpy.linespace(0,max(x),100) poly = numpy.polyval(coefs, pxs) import matplotlib.pyplot as plt plt.figure() plt.plot(data[:,0],data[:,1]) plt.show() plt.close()