I719 Fundamentals of Python/lecture6: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Eroman (talk | contribs)
add lecture 6
 
Eroman (talk | contribs)
No edit summary
Line 34: Line 34:
call it with <code>range(0, 30)</code>
call it with <code>range(0, 30)</code>


= Slicing =
== Slicing ==


<source lang="python">In [1]: a = "Hello World"
<source lang="python">In [1]: a = "Hello World"
Line 66: Line 66:
my_sort_function(my_list)
my_sort_function(my_list)
[10, 11, 177, 9, 199]</source>
[10, 11, 177, 9, 199]</source>
== Interlude: Packages and Requirements ==
= Interlude: Packages and Requirements =


python application often include a <code>requirements.txt</code> that lists pip dependencies
python application often include a <code>requirements.txt</code> that lists pip dependencies
Line 79: Line 79:
see: https://github.com/pypa/sampleproject/blob/master/setup.py
see: https://github.com/pypa/sampleproject/blob/master/setup.py


== Why numpy ==
= Numpy =


* it is faster
* it is faster

Revision as of 00:13, 9 March 2017

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

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