I719 Fundamentals of Python/lecture6
Lists and Arrays
TASK 1
Write a function that makes all characters in a list uppercase!
call it with the following list, and print the result
['cat', 'dog']
TASK 2
Write a function that makes all character in the values of a dict uppercase!
call it with the following dict and print the results.
{'cat': 'kass', 'dog': 'koer'}
Review
write a function that makes all characters in a list uppercase
- using a loop
- using map
- using a list comprehension
Filtering
- using for loop and creating a new list
- using
filter
+ callable (function or lambda) - using a list comprehension
TASK 3
write a function that filters out numbers divisible by 3 and 5
call it with range(0, 30)
Slicing
In [1]: a = "Hello World"
In [2]: a[:2]
Out[2]: 'He'
In [3]: a[2:]
Out[3]: 'llo World'
In [4]: a[-2:]
Out[4]: 'ld'
In [5]: a[:-2]
Out[5]: 'Hello Wor'
In [6]: a[:-2:2]
Out[6]: 'HloWr'
In [7]: a[::2]
Out[7]: 'HloWrd'
In [8]: a[::-1]
Out[8]: 'dlroW olleH'
TASK 4
write a function that sorts numbers in a list by the smallest digit of the integer.
i.e.
my_list = [11, 10, 9, 177, 199]
my_sort_function(my_list)
[10, 11, 177, 9, 199]
Interlude: Packages and Requirements
python application often include a requirements.txt
that lists pip dependencies
python packages are formatted as
package_name/ package_name/ __init__.py setup.py
and setup.py include information on depedencies
see: https://github.com/pypa/sampleproject/blob/master/setup.py
Why numpy
- it is faster
- it allows multidimensional arrays
- meant for math
Basics
import numpy as np
sqaure every element in list of integers
square every element in array of integers
change shape of array
Solve system of linear equations
x - y = 3 7x - y = -3
becomes in matrix multiplaction
A = [[1, -1] . [[x], = [[3], [7, -1]] [y]] [-3]]
In [68]: a = np.array([[1, -1],[7, -1]]) In [69]: a Out[69]: array([[ 1, -1], [ 7, -1]]) In [70]: b = np.array([[3],[-3]]) In [71]: b Out[71]: array([[ 3], [-3]]) In [72]: a_inverse = np.linalg.inv(a) In [73]: a_inverse Out[73]: array([[-0.16666667, 0.16666667], [-1.16666667, 0.16666667]]) In [74]: a_inverse.dot(b) Out[74]: array([[-1.], [-4.]])
Task 3
solve for x,y, and z
x + y + z = 6 2y + 5z = -4 2x + 5y - z = 27
Pandas
https://blockchain.info/charts/market-price?timespan=1year
download the csv
Open the the csv with pandas
import pandas as pd
btc_price = pd.read_csv('~/Downloads/market-price.csv', names=['datetime', 'usd'], parse_dates=[0])
TASKS
show only days where price is above 1000USD
How many days was the price above 1000USD?
What was the price 6 months ago?
What was the average price last year?
What was the average price in august?
Plot the days on a line graph
import matplotlib.pyplot as plt
import pandas as pd
btc_price = pd.read_csv('~/Downloads/market-price.csv', names=['datetime', 'usd'], parse_dates=[0])
x = btc_price.datetime
y = btc_price.usd
plt.plot(x, y)
plt.xlabel('Date')
plt.ylabel('USD')
plt.title('BTC to USD')
plt.grid(True)
plt.show()