Mini-python [1]


Continuação


Arnaldo Russo

github.com/arnaldorusso
ciclotux.org

FUNÇÕES


def palavra(entrada):    print(entrada)
palavra('xxx')

funções


Função




Escreva a função para calcular a velocidade das ondas.

controladores


for
while
if
elif
else

Loops aninhados


#!/usr/bin/python

for num in range(10,20):  #to iterate between 10 to 20
   for i in range(2,num): #to iterate on the factors of the number
      if num%i == 0:      #to determine the first factor
         j=num/i          #to calculate the second factor
         print '%d equals %d * %d' % (num,i,j)
         break #to move to the next number, the #first FOR
   else:                  # else part of the loop
      print num, 'is a prime number'

contraldores


http://www.pythontutor.com/visualize.html

Controladores


#!/usr/bin/python

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

print "Good bye!"

for


#!/usr/bin/python

for letter in 'Python':     # First Example
   print 'Current Letter :', letter

fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        # Second Example
   print 'Current fruit :', fruit

print "Good bye!"






#!/usr/bin/python

fruits = ['banana', 'apple',  'mango']
for index in range(len(fruits)):
   print 'Current fruit :', fruits[index]

print "Good bye!"

if elif


if elif


#!/usr/bin/python

var = 100
if var == 200:
   print "1 - Got a true expression value"

print var

elif var == 150: print "2 - Got a true expression value" print var elif var == 100: print "3 - Got a true expression value" print var else: print "4 - Got a false expression value" print var print "Good bye!"

Módulos


"glob"
import glob
glob.glob('*.txt')
"os"
import os
os.listdir('.')
# podem ser criados diretorios, apagar arquivos, mudar dir, etc...


i/o

Input / Output

txt
csv
nc
hdf5 / hdf4


módulos


open

np.genfromtxt

scipy.io

pandas

pupynere

pyhdf

open


a = open('teste.txt')
ll = []for l in a.readlines(): ll.append(l.split())
ll


numpy


np.genfromtxt("data.csv", delimiter=",", dtype=None, names=True, usemask=True)

Pandas


import pandas as pd
a = pd.read_csv('data.csv')
Outras opções podem ser passadas
df = pd.read_csv('data.csv', index_col=['date_time'], parse_dates=True, na_values=['-99999.9'])
df.head()
df['salinity (psu)']


scipy


import scipy.io as io
f = io.netcdf_file('file.nc')f.variables

http://bit.ly/19vNr70

Datas

$ info date/Date input
28 Date input formats ********************* First, a quote:      Our units of temporal measurement, from seconds on up to months,      are so complicated, asymmetrical and disjunctive so as to make      coherent mental reckoning in time all but impossible.  Indeed, had      some tyrannical god contrived to enslave our minds to time, to      make it all but impossible for us to escape subjection to sodden      routines and unpleasant surprises, he could hardly have done      better than handing down our present system.  It is like a set of      trapezoidal building blocks, with no vertical or horizontal      surfaces, like a language in which the simplest thought demands      ornate constructions, useless particles and lengthy      circumlocutions.  Unlike the more successful patterns of language      and science, which enable us to face experience boldly or at least      level-headedly, our system of temporal calculation silently and      persistently encourages our terror of time.      ...  It is as though architects had to measure length in feet,      width in meters and height in ells; as though basic instruction      manuals demanded a knowledge of five different languages.  It is      no wonder then that we often look into our own immediate past or      future, last Tuesday or a week from Sunday, with feelings of      helpless confusion.  ...      -- Robert Grudin, `Time and the Art of Living'.    This section describes the textual date representations that GNU programs accept.  These are the strings you, as a user, can supply as arguments to the various programs.  The C interface (via the `parse_datetime' function) is not described here.

Manipulando Datas - datetime


http://docs.python.org/2/library/datetime.html




from datetime . 


   [ date           datetime       datetime_CAPI  MAXYEAR        MINYEAR        time           timedelta      tzinfo ]

datas com o numpy


http://docs.scipy.org/doc/numpy-dev/reference/arrays.datetime.html


 


Acessando datas


f = np.genfromtxt("data.csv", delimiter=",", dtype=None, names=True, usemask=True)
f['date_time']

from datetime import datetime
dates = []for i in f['date_time']: dates.append(datetime.strptime(i, "%Y-%m-%dT%H:%M:%SZ"))

Mais algumas pequenas dicas e utilidades:

EXemplo - acesso remoto.


import pydap.clientdataset = pydap.client.open_url('http://opendap.ccst.inpe.br/Climatologies/OISST/sst.mnmean.nc')
dataset.keys()
dataset.keys['sst'].dimensionsprint dataset.sst.dimensions

sst = dataset.sst[:,:,:]
sst = dataset.sst[:, (dataset.sst.lat > -50) & (dataset.sst.lat < 0), dataset.sst.lon > 300,]print sst.shapeprint sst.lat.shapeprint sst.lat[:]
print dataset.time.units


Title

from datetime import datetime, timedelta

# digamos que queira saber qual a data do sst.time[0]print dataset.time.unitsprint sst.time[0]
dia_zero = datetime(1800,1,1,0,0,0) + timedelta(days = sst.time[0])


Mais processamento com netcdf



https://github.com/Unidata/tds-python-workshop

Ipython Notebook
http://bit.ly/1a8TXQD

Plots


import matplotlib.pyplot as plt
# desse modo, cada funçao de plot deve ser# chamada com o prefixo
plt.plot( tal, coisa)plt.show()
Ja o modo interativo: 
ipython --pylab
habilita os plots diretos e sem a necessidade
de pedir para mostrar.

Matplotlib


Notebook explicativo

http://bit.ly/17Q4slz
Made with Slides.com