I719 Fundamentals of Python/lecture6

From ICO wiki
Revision as of 00:12, 9 March 2017 by Eroman (talk | contribs) (add lecture 6)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

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()