Oct 25-31, 2018 Vikrant Patil
These notes are available online at http://notes.pipal.in/2018/arcesium-basic-oct/day3.html © Pipal Academy LLP
Day 1 | Day 2 | Day 3 | Day 4 | Day 5
We will be using python 3 (>= 3.0) from anaconda for this training. You can download it from
problem
integers = list(range(10))
integers
for i in integers:
print(i*i, end=",")
def double(numbers):
d = []
for n in numbers:
d.append(2*n)
return d
d = double([23,324,1,4,65])
d
double(["hello", "some", "strings", "to", "have", "fun"])
len(d)
d[4]
d[6]
empty = []
empty[0] = 0
empty.append(0)
range(10)
list(range(10))
list(range(1,10))
list(range(1, 20, 3))
def square(numbers):
s = []
for n in numbers:
s.append(n*n)
return s
def product(numbers):
p = 1
for n in numbers:
p = p*n
return p
product([3,1,2,3])
product([1,2,3,4])
product([1,2,3,4,5])
range(1,5)
def factorial(n):
return product(range(1,n+1))
factorial(7)
factorial(4)
def even(n):
return n%2==0
def odd(n):
return not even(n)
def evens(numbers):
e = []
for n in numbers:
if even(n):
e.append(n)
return e
def odds(numbers):
o = []
for n in numbers:
if odd(n):
o.append(n)
return o
[n*n for n in range(5)]
[2*d for d in range(7)]
def doublec(numbers):
return [n*n for n in numbers]
doublec(range(5))
5%2
5%3
5/3
5//3
def percent(perc, value):
return perc/100.0*value
percent(10, 200)
def squareodds(numbers):
return [n*n for n in numbers if odd(n)]
squareodds(range(20))
odds(range(20))
problem
if even(5) or 5==5:
print("even!")
"hel" in "hello" and "hello".endswith("lo")
def double(nums):
return [2*x for x in nums]
def perc10(values):
return [percent(10, v) for v in values]
sum([n for n in range(1000) if n%7==0 or n%11==0])
tables = [[i*j for i in range(1,11)] for j in range(1,6) ]
tables
tables[1]
tables[0]
tables[3]
tables[4]
tables[0] # gives me 0th row
tables[-1] # last row
tables
row0 = tables[0]
row0[0]
row1 = tables[1]
row1[0]
def column(data, colnum):
return [row[colnum] for row in data]
column(tables, 0)
column(tables, 1)
def column_(data, colnum):
return [data[i][colnum] for i in range(len(data))]
def transpose(data):
colcount = len(data[0])
return [column(data, i) for i in range(colcount)]
transpose(tables)
%%file data.csv
1,2,3,4,5
11,12,13,14,15
21,22,23,24,25
31,32,33,34,35,
41,42,43,44,45
with open("data.csv") as f:
for line in f:
print(line, end="")
f = open("data.csv")
for line in f:
print(line, end="")
f.close()
!cat data.csv
!head data.csv
f = open("data.csv")
print(f.read())
f.close()
!head paytm.csv
f = open("data.csv")
print(f.readline(), end="")
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.close()
f = open("data.csv")
f.readlines()
f.read()
with open("numbers.txt", "w") as nums:
nums.write("one\n")
nums.write("two\n")
nums.write("three\n")
!cat numbers.txt
%%file cat.py
import sys
def cat(file):
with open(file) as f:
print(f.read())
if __name__ == "__main__":
cat(sys.argv[1])
!python cat.py numbers.txt
problem
head.py which shows first n lines of file
python head.py 2 data.csv
1,2,3,4,5
11,12,13,14,15
%%file head.py
import sys
def head(filename, n):
with open(filename) as f:
for i in range(n):
print(f.readline(), end="")
if __name__ == "__main__":
head(sys.argv[1], int(sys.argv[2]))
!python head.py day1.html 3
[1,2,3,4,5] 1,2,3,4,5
Write data in csv format
def writecsv(data, filename):
with open(filename, "w") as f:
for row in data:
strrow = [str(item) for item in row] # ["1","2","3","4","5"]
line = ",".join(strrow) # "1,2,3,4,5"
f.write(line)
f.write("\n")
writecsv(tables, "tables.txt")
!python cat.py tables.txt
for row in tables:
print(str(row))
for row in tables:
print([str(item) for item in row])
def csvparse(filename):
with open(filename) as f:
data= []
for line in f:
data.append(line.strip().split(","))
return data
csvparse("tables.txt")
def csvparse(filename):
with open(filename) as f:
return [line.strip().split(",") for line in f]
csvparse("tables.txt")
def csvparse(filename):
def makeints(row):
return [int(item) for item in row]
with open(filename) as f:
return [makeints(line.strip().split(",")) for line in f]
t = csvparse("tables.txt")
t
type(t[0][0])
%%file tables.csv
c1,c2,c3,c4,c5,c6,c7,c8,c9,c10
1,2,3,4,5,6,7,8,9,10
2,4,6,8,10,12,14,16,18,20
3,6,9,12,15 ,18,,24,27,30
4,8,12,16,20,24,28,32,36,40
5,10,15,20,25,30,35,40,,50
csvparse("tables.csv")
def csvparse(filename):
def myint(ns):
try:
return int(ns)
except Exception as e:
print(e)
return 0
def makeints(row):
return [myint(item) for item in row]
with open(filename) as f:
headers = f.readline().strip().split(",")
return [headers] + [makeints(line.strip().split(",")) for line in f]
t = csvparse("tables.csv")
t[0]
t[1:]
sum(column(t[1:], 0))
import numpy as np
np.irr(t[1:][0])
np.mean(t[1:][0])
np.mean(t[1:])
[np.mean(row) for row in t[1:]]
int(" ")
int("-")
try:
print(int("-"))
except Exception as e:
print(e)
print(0)
url = " http://notes.pipal.in/2018/arcesium-basic-oct/paytm.csv"
import requests
def download(url, filename):
response = requests.get(url)
with open(filename, "w") as f:
f.write(response.text)
download(url, "paytm1.csv")
!python head.py paytm1.csv 5
def paytm_parse(file):
with open(file) as f:
data = []
for line in f:
row = line.strip().split(",")
row_ = [item.replace('"',"") for item in row]
data.append(row_)
return data
paytm = paytm_parse("paytm.csv")
paytm[0]
date= column(paytm[1:], 0)
activity = column(paytm[1:], 1)
src_dest = column(paytm[1:], 2)
txid = column(paytm[1:], 3)
comment = column(paytm[1:], 4)
debit = column(paytm[1:], 5)
credit = column(paytm[1:], 6)
breakup = column(paytm[1:], 7)
date[:5]
debit[:5]
def myfloat(sf):
try:
return float(sf)
except ValueError as v:
return 0
debit_ = [myfloat(item) for item in debit]
credit_ = [myfloat(item) for item in credit]
debit_[:5]
sum(debit_)
sum(credit_)
activity[:20]
def checkifexists(pattern, col):
for item in col:
if pattern in item.lower():
return True
return False
checkifexists("uber", activity)
checkifexists("uber", comment)
checkifexists("uber", src_dest)
checkifexists("uber", txid)
"uber" in "UBER Order #2df540e2a73".lower()
src_dest[:50]
def sumif(pattern, lookupdata, data):
l = len(lookupdata)
indices = [ i for i in range(l) if pattern in lookupdata[i].lower()]
return sum([data[j] for j in indices])
sumif("x", ["x","x","X","y","y","z"], [1,1,1,2,3,4])
sumif("uber", src_dest, debit_)