GEOG 489
Advanced Python Programming for GIS

(link is external) (link is external)

Lesson 3 Exercise 3 Solution

PrintPrint

Lesson 3 Exercise 3 Solution

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
import pandas as pd
 
# create the data frame from a list of tuples
data = pd.DataFrame( [('Mike',7,10,5.5),
     ('Lisa', 6.5, 9, 8),
     ('George', 4, 3, 7),
     ('Maria', 7, 9.5, 4),
     ('Frank', 5, 5, 5) ] )
      
# set column names
data.columns = ['Name', 'Assignment 1', 'Assignment 2', 'Assignment 3']
 
# set row names
data.index = range(1,len(data)+1)
 
# show table
print(data)
  
# add column with averages
data['Average'] = (data['Assignment 1'] + data['Assignment 2'] + data['Assignment 3']) / 3
  
# part a (all students with a1 score < 7)
print(data[ data['Assignment 1'] < 7])
  
# part b (all students with a1 and a2 score > 6)
print(data[ (data['Assignment 1'] > 6) & (data['Assignment 2'] > 6)])
 
# part c (at least one assignment < 5)
print( data[ data[ ['Assignment 1', 'Assignment 2', 'Assignment 3'] ].min(axis = 1) < 5 ] )
  
# part d (name starts with M, only Name and Average columns)
print(data [ data [ 'Name' ].map(lambda x: x.startswith('M')) ] [ ['Name','Average'] ])
 
# sort by Name
print(data.sort_values(by = ['Name']))

If any of these steps is unclear to you, please ask for further explanation on the forums.