In [3]:
myfile = open('cyclone.dat', 'r')
content = myfile.readlines()
season = []
count = []
for line in content:
aux = line.strip()
values = aux.split()
season.append(values[1])
count.append(int(values[2]))
myfile.close()
In [4]:
print season
In [5]:
print count
In [6]:
def naming_seasons(season):
"""Creates a latex table stored in a python list
Parameteres
-----------
season: list with numeric seasons
Returns
-------
season_str: list with named seasons
"""
season_str = []
for s in season:
if s == '1':
season_str.append('Fall')
elif s == '2':
season_str.append('Winter')
elif s == '3':
season_str.append('Spring')
else:
season_str.append('Summer')
return season_str
In [7]:
season_name = naming_seasons(season)
print season_name
In [8]:
# test for function naming_seasons()
def test_naming_seasons():
# We make a fake dictionary
input_val = ['2', '3', '1', '4', '3', '2']
expected_result = ['Winter', 'Spring', 'Fall', 'Summer', 'Spring', 'Winter']
# run function
res = naming_seasons(input_val)
assert res == expected_result
In [9]:
test_naming_seasons()
In [10]:
def counting_cyclones_per_season(season_lst, count_lst):
"""Creates a latex table stored in a python list
Parameteres
-----------
season_lst: list with named seasons
count_lst: list with cyclone counts
Returns
-------
total_cyclones: dictionary with seasons as keys, and totals as values
"""
totals = [0, 0, 0, 0]
for i in range(0, len(season_lst)):
if season_lst[i] == 'Fall':
totals[0] = totals[0] + count_lst[i]
elif season_lst[i] == 'Winter':
totals[1] = totals[1] + count_lst[i]
elif season_lst[i] == 'Spring':
totals[2] = totals[2] + count_lst[i]
else:
totals[3] = totals[3] + count_lst[i]
total_cyclones = dict(zip(['Fall', 'Winter', 'Spring', 'Summer'], totals))
return total_cyclones
In [11]:
total_cyclones = counting_cyclones_per_season(season_name, count)
print total_cyclones
In [12]:
# test for function cyclones_per_season()
def test_counting_cyclones_per_season():
# We make a fake dictionary
input_season = ['Winter', 'Spring', 'Fall', 'Summer', 'Spring', 'Winter']
input_count = [10, 7, 10, 5, 13, 5]
expected_result = {'Spring': 20, 'Summer': 5, 'Winter': 15, 'Fall': 10}
# run function
res = counting_cyclones_per_season(input_season, input_count)
assert res == expected_result
In [13]:
test_counting_cyclones_per_season()
In [14]:
def make_cyclones_table(x):
"""Creates a latex table stored in a python list
Parameteres
-----------
x: dictionary
Returns
-------
latex_tbl: latex table in a list
"""
latex_tbl = []
latex_tbl.append("\\begin{center}\n")
latex_tbl.append(" \\begin{tabular}{ c c }\n")
latex_tbl.append(" \\hline\n")
latex_tbl.append(" Season & Count \\\\\n")
# add data
for key, value in x.items():
latex_tbl.append(" %s & %s \\\\\n" % (key, str(value)))
# close table
latex_tbl.append(" \\hline\n")
latex_tbl.append(" \\end{tabular}\n")
latex_tbl.append("\\end{center}\n")
return latex_tbl
In [15]:
make_cyclones_table(total_cyclones)
Out[15]:
In [14]:
# create latex table
latex_table = make_cyclones_table(total_cyclones)
# write table to a .tex file
tex_file = open('cyclones_table.tex', 'w')
for elem in latex_table:
tex_file.write(elem)
tex_file.close()
In [3]:
import numpy as np
In [5]:
# this won't work
np.load('cyclone.dat')
In [7]:
# this works
dat = np.loadtxt('cyclone.dat', dtype = 'int')
print dat
In [8]:
# dimensions
dat.shape
Out[8]:
In [9]:
# first row
dat[0]
Out[9]:
In [10]:
# some cells
dat[2,2]
Out[10]:
In [11]:
# selecting seasons and cyclones
seasons = dat[:,1]
cyclones = dat[:,2]
In [12]:
# cyclones of season 1
cyclones[(seasons == 1)]
Out[12]:
In [13]:
totals = np.zeros(4)
for s in range(4):
totals[s] = sum(cyclones[(seasons == s + 1)])
print totals