Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Universidad de Antioquia
Corporación Académica Ambiental
Programa de Oceanografía
Turbo, 2017-II
Temario general del curso:
1. Introducción
2. Aritmética y evaluación de expresiones matemáticas en Python
3. Manejo de Caracteres
4. Números complejos
5. Listas, Tuplas y Diccionarios
6. Impresión de datos en pantalla
7. Bucles y condicionales
8. Vectores en Python
9. Visualización 3-D: función PLOT
10. Matrices en Python
11. Lectura/escritura de ficheros: texto plano (ASCII), binarios de Python, binarios
MATLAB, etc.
12. Funciones y módulos de usuario
13. Visualización 2-D: funciones BAR, HIST, BOXPLOT, ...
14. Lectura de archivos: NetCDF, HDF-4, HDF-5
15. Visualización 3D: funciones CONTOURF, CONTOUR, QUIVER
16. Aplicación de las librerias:
• Libreria Scipy (estadística, interpolación , etc.)
• Libreria Pandas (dataframe)
• Libreria Basemap (proyecciones, mapas, etc.)
• Libreria airsea
• Libreria seawater, gsw
17. Programación orientada a objetos
2
Evaluación del curso
3
Índice
1. Generalidades de Python 5
1.1. Estructura y elementos del lenguaje . . . . . . . . . . . 5
1.2. Página web de descarga del software . . . . . . . . . . . 6
1.3. Editor de Python - Spyder . . . . . . . . . . . . . . . . . 6
1.4. Editor de Python: Jupyter . . . . . . . . . . . . . . . . . 7
1.5. Errores comunes al crear un programa . . . . . . . . . . 10
3. Cambiar de directorio 14
5. Palabras claves 15
4
7. Funciones mateméticas en NumPy 16
7.1. Funciones algebraicas . . . . . . . . . . . . . . . . . . . 16
7.2. Funciones trigonométricas . . . . . . . . . . . . . . . . 16
7.3. Funciones para redondear de valores . . . . . . . . . . . 16
8. Manejo de caracteres 17
8.1. ¿Cómo definir una variable caracter en Python? . . . . . 17
8.2. Funciones aplicadas a una variable caracter . . . . . . . 17
5
12. Condicionales y bucles en Python 24
12.1. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
12.1.1. Ejemplo. Bucle: secuencia correlativa . . . . . . 24
12.1.2. Ejemplo. Bucle: secuencia definida por el usuario 24
12.2. Sentencias condicionales . . . . . . . . . . . . . . . . . 25
12.2.1. Ejemplo. Combinar un bucle con un condicional 25
12.3. Bucle while . . . . . . . . . . . . . . . . . . . . . . . . 25
14. Matrices 29
14.1. Definición de una matriz . . . . . . . . . . . . . . . . . 29
14.2. Matrices de dimensión mayor . . . . . . . . . . . . . . . 30
14.3. Crear una matriz en Python . . . . . . . . . . . . . . . . 31
14.4. Funciones en Numpy para manipular matrices . . . . . . 32
14.4.1. Funciones en Numpy para algebra matricial . . 32
14.4.2. Funciones en Numpy para algebra lineal . . . . . 32
6
1. Generalidades de Python
7
Multiparadigma: acepta diferentes paradigmas (técnicas) de pro-
gramación, tales como la orientación a objetos, aspectos, la progra-
mación imperativa y funcional.
Código fuente: es un conjunto de instrucciones y órdenes lógicas,
compuestos de algoritmos que se encuentran escritos en un determi-
nado lenguaje de programación, las cuales deben ser interpretadas o
compiladas, para permitir la ejecución del programa informático.
1. Ir a: http://continuum.io/downloads
Instalar Anaconda en la ruta c:/
8
Muestra la información de las variables
Ejecuta utilizadas en el desarrollo del programa
el código
Editor
(Se crean los programas)
Terminal de IPython
9
dirección:
c:\rams\_RAMS\OCE_Program_RAMS\ADM_Cursos\
Abrir la terminal de windows y cambiar al directorio de trabajo:
cd c:\rams\_RAMS\OCE_Program_RAMS\ADM_Cursos\
Colocar en la terminal la sentencia:
jupyter notebook
Aparecerá la siguiente ventana
Por defecto Jupyter coloca el nombre Untitled. Se debe renombrar el nombre del archivo.
10
Finalmente se ejecutaran las sentencias (se creará el programa)
11
1.5. Errores comunes al crear un programa
Si usted crea un programa y al momento de ejecutarlo aparece un error en la consola, tenga en cuenta que
usted cometió algunos de estos errones:
1. Faltó:
• un parentesis ”(”
• un corchete ”[”
• una coma ”,”
• un asterisco ”*”.
Escribió mal un exponencial.
Ejemplo: 3 × 106 = 3E+6 es distinto que 3E6 + 6
2. Escribió mal el nombre de una función.
Ejemplo: mean no es igual a Mean
3. Importar mal una librería.
4. Usted usó una función sin haber importado una libreria.
Verificar el mensaje de error y la línea donde aparece, así se ahorrará tiempo en la búsqueda del
error.
12
2. Librerias o paquetes importantes en Python
Funciones Descripción
os Interactua con el sistema operativo
glob funciones hacer listas de archivos
math funciones básica de matemáticas
statistics funciones básicas de estadística
datetime funciones para el manejo de fechas
Librería Descripción
h5py Lectura de archivos en formato HDF5
numpy Manipulación de matrices en N-dimensiones
pandas Manajo de datos
mathplotlib visualización
scipy Herramientas para estadística, métodos númericos,
lectura de ficheros, etc
spyder Entorno de desarrollo en python
jupyter Entorno para correr programas
pip Instalación de librerias desde internet
Librería Descripción
airsea Propiedades físicas de la atmósfera
PyClimate Analisis de variabilidad climática
oceans Herramientas para datos oceanográficos
gsw Propiedades físicas del agua de mar, version moderna
seawater Propiedades físicas del agua de mar, version obsoleta
pytides Análisis armónico de la marea
ttide Análisis armónico de la marea
wafo Herramienta estadísticas para estudiar oleaje
wodpy Lectura de datos de NODC (National Oceanographic Data Center)
ctd Herramientas para datos oceanográficos
cotede Control de calidad para perfiles de CTD
basemap Creación de mapas en varias proyecciones
cartopy Creación de mapas en varias proyecciones
netcdf4 Lectura de ficheros en formato netCDF
csvkit Lectura de archivos en formato csv
pycwt Análisis de wavelet (Torrence & Compo )
13
2.4. Instalación de librerias (paquetes)
https://anaconda.org/IOOS/
La otra forma es utilizado el comando ”pip”. Por ejemplo: si se requiere instalar la libreria
seawater del repositorio PyPI entonces colocar en el simbolo del sistema:
pip install seawater
Todas las librerias subidas al repositorio vienen comprimidas en el formato ”.zip” ó ”.gz”. Lo pri-
mero que se debe hacer es descomprimir el directorio. Cada paquete de python tiene un instalador
denominado ”setup.py”, este instalador se debe ejecutar en el simbolo del sistema:
python setup.py install
Los paquetes instalados se encuentran en la dirección:
c:/Anaconda3/Lib/site-packages/, en (Windows).
14
2.4.4. Otros sitios para descargar librerias comprimidas
Pasos de la instalación:
• Paso 1: Descargar la libreria
• PAso 2: Instalar la libreria usando pip
pip install python_hdf4-0.9-cp35-cp35m_win_amd64.whl
El primer paso para crear un programa es llamar la libreria ó módulo que se utilizará. Para esto existen
varias formas de hacer esto:
>>> import math ## Se importa el modulo
>>> math.sin(34)
0.5290826861200238
>>> math.pi
3.141592653589793
15
NOTA IMPORTANTE:
Para utilizar una función del módulo se entepone el nombre del modulo, seguido por un punto y el
nombre de la función a utilizar de este módulo.
Este método se utiliza cuando se requiere utilizar algunas funciones del módulo.
>>> from numpy import sin, pi, savez, array, load
>>> SENO = 2.0 * sin( 300.0*pi/180.0 )
>>> SENO
-1.7320508075688772
A veces cuando el nombre del módulo es largo, es mejor renombrarlo con un nombre más corto de dos a
tres consonantes.
>>> import numpy as np
>>> x = 300.0
>>> gra2rad = np.pi/180.0
>>> y = 2.0*np.sin(x*gra2rad)
-1.7320508075688772
En este ejemplo importamos toda la libreria numpy y utilizamos la función arange, el cual creamos
un vector secuencial desde 0 hasta 8. Esta forma de importar el módulo no es recomendable porque
algunas funciones del módulo que se esta importando puede presenar conflictos con nombres paracidos
provenientes de otras librerias.
3. Cambiar de directorio
Funciones Descripción
os.getcwd() Entrega la ruta de trabajo
os.chdir(path) Cambia el directorio de trabajo
os.system("ls") Entrega en pantalla todos los archivos
os.listdir(path) Lista de todos los archivos/directorios
en la ruta especificada en el path
glob.glob("*.py") Busca todos los archivos con extesión .py
16
>>> import os ## Se importa el modulo
>>> os.getcwd() ## Se utiliza la funcion getcwd
’C:\\rams\\_RAMS\\Python_Proyect\\’
>>>
>>> ## Nos cambiamos al siguiente directorio:
>>> path="c:/rams/_RAMS/Talleres_Python/Taller_01/"
>>> os.chdir(path)
>>> os.getcwd()
’c:\\rams\\_RAMS\\Talleres_Python\\Taller_01’
Tipo Descripción
|Sn Cadena de texto (string) de n-caracteres
bool Booleano (True o False). Se almacena como 1 bit
int Entero (int32 o int64, dependiendo de la plataforma)
int8 Byte (-128 a 127)
int16 Entero (-32768 a 32767)
int32 Entero (-2.147.483.648 a 2.147.483.647)
int64 Entero
uint8 Entero sin signo (0 a 255)
uint16 Entero sin signo (0 a 65535)
uint32 Entero sin signo (0 a 4.294.967.295)
uint64 Entero sin signo (0 a 18.446.744.073.709.551.615)
float Atajo para float64
float32 Decimal en precisión simple.
float64 Decimal en doble precisión.
complex Atajo a complex 128
complex64 Número complejo, parte entera e imaginaria con float32
complex128 Número complejo, parte entera e imaginaria con float64
5. Palabras claves
17
’not’, ’or’, ’pass’, ’raise’, ’return’, ’try’,
’while’,’with’, ’yield’]
Python al igual que otros lenguajes de programación posee los siguientes operadores aritméticos
Nombre Operador Sentencia
Suma + x+y
Resta − x−y
Multiplicación ∗ x∗y
División2 / x/y
Elevar a exponente ∗∗ xy → x ∗ ∗y
Módulo % x %y
18
8. Manejo de caracteres
Función Descripción
len(x) Determina la longitud del caracter.
X + Y Une dos caracterer ”X” e ”Y”.
X*5 Replica 5 veces el caracter ”X”
X.split(/") Separa un caracter ”X” dilimitado por un símbolo.
Y.join(X) Une una lista de caracteres ”X” por con el caracter ”Y”.
X.upper() Transforma todo el caracter ”X” a mayúsculas.
X.lower() Transforma todo el caracter ”X” a minúsculas.
X.replace(a,b) Reemplaza el caracter ”a” por el caracter ”b”.
X.find( ") 2
Busca en la variable ”X” en inicio donde comienza
la palabla ”y”.
str(Y) Transforma un valor numérico a caracter.
X[ini:fin] Extrae una sección del caracter ”X”.
9.1. Listas
Una lista es una colección ordenada de objetos. Puede contener distintos tipos de objetos (datos). Para de-
finir una lista se utilizan los corchetes ”[]” entre los cuales pueden aparecer diferentes valores separados
por comas.
19
Ejemplo 1
>>> lista = [] ## Lista vacia
>>> lista
[]
>>> lista = [ 2, 3 , 3]
>>> lista+lista
[2, 3, 3, 2, 3, 3]
>>> lista*4
[2, 3, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3]
Cuando se suman dos listas , lo que ocurre es que se concatenan, es decir, no se suman en el sentido
algebraico. Cuando se multiplica una lista, esta se replica.
Ejemplo 2
>>> lista = [] ## Lista vacia
>>> lista
[]
>>> lista2 = [ 4, 19.0, "Temperatura"]
>>> lista2
[4, 19.0, ’Temperatura’]
>>> lista3 = [[2,2],[4,4]]
>>> lista3
[[2, 2], [4, 4]]
>>> a = [ 2, 3]
>>> a + a ## La suma equivale a replicar la lista
[2, 3, 2, 3]
>>> 3*a ## Se replica tres veces la lista
[2, 3, 2, 3, 2, 3]
>>> lista2.append("Salinidad")
>>> lista2
[4, 19.0, ’Temperatura’, ’Salinidad’]
9.2. Tuplas
Una tupla es una estructura que representa una colección de objetos pudiendo estos ser de distintos tipos.
Para declarar una tupla se utilizan paréntesis, entre los cuales deben separarse por comas los elementos
que van a formar parte de ella.
>>> TUPLA = (2, 4., "VELOCIDAD")
>>> TUPLA
(2, 4.0, ’VELOCIDAD’)
Los elementos de una tupla son accesibles a través del índice que ocupan en la misma3
3
el índice se inicia con el valor cero, NO con el valor 1. Esto es característico del lenguaje C.
20
>>> TUPLA = (2, 4., "VELOCIDAD")
>>> TUPLA[0]
2
>>> TUPLA[2]
’VELOCIDAD’
>>>
9.3. Diccionarios
Un diccionario es una estructura de datos que almacena una serie de valores utilizando otros como refe-
rencia para su acceso y almacenamiento. Cada elemento de un diccionario es un par ”clave-valor”
donde el primero debe ser único y será usado para acceder el valor que contiene. A diferencia de las
tuplas y lista, los diccionarios no cuentas con un orden específico.
21
’TEMP’: [22.0, 20.3, 14.0, 10.0]}
>>>
En un vector también se pueden evaluar funciones. Evalar una función sin(3) y exp(2) en un array.
22
A+B = A[0] + B[0], A[1] + B[1], . . . , A[n] + B[n]
A−B = A[0] − B[0], A[1] − B[1], . . . , A[n] − B[n]
A/B = A[0]/B[0], A[1]/B[1], . . . , A[n]/B[n]
A∗B = A[0] ∗ B[0], A[1] ∗ B[1], . . . , A[n] ∗ B[n]
AB = A ∗ ∗B = A[0] ∗ ∗B[0], A[1] ∗ ∗B[1], ..., A[n] ∗ ∗B[n]
Función Descripción
n=len(x) Determinar la longtitud de un vector
Z=np.concatenate((x,y)) Une dos vectores
Z=np.vstack((x,y)) Une dos vectores en filas
Z=np.column_stack((x,y)) Une dos vectores en columnas
Z=np.zeros(7) Crea un vector con zeros de longitud 7
Z=np.ones(5) Crea un vector de unos de longitud 5
Z=np.linspace(0.0,1.0,5) Crea un vector de 0 a 1 particionado en 5
Z=np.arange(0,1,0.2) Crea un vector 0 a 1 en intervalos de 0.2
Z=np.unique(x) Extrae los valores no repetidos
Z=np.repeat(x,2) Replica los elementos de un vector dos veces
Z=np.tile(x,2) Replica el vector 2-veces
Descripción Función
N
X
xi Suma np.sum(x) /np.nansum(x)
i=1
YN
xi Producto np.prod(x)
i=1
N
1 X
x̄ = xi Promedio np.mean(x)/np.nanmean(x)
N i=1
N
1 X
s2 = (xi − x̄)2 Varianza np.var(x)/ np.nanvar(x)
N i=1
Desviación estándar np.std(x)/ np.nanstd(x)
min[xi ] Mínimo np.min(x)/ np.nanmin(x)
max[xi ] Máximo np.max(x)/ np.nanmax(x)
23
11. Números complejos
z = (a, b) (2)
Los números reales a y b se denominan parte real e imaginaria del número complejo z. La representación
de un número complejo es:
z = a + bi (3)
√
a = Re(z) y b = Im(z), i = −1.
El conjuado de un número complejo:
z̄ = z ∗ = a − bi (4)
𝑷𝒍𝒂𝒏𝒐 𝒁
𝐼𝑚
(𝑥, 𝑦)
𝑦
𝜃
𝑅𝑒
𝑥
z = x + yi (5)
x = r cos(θ) (6)
y = r sin(θ) (7)
Esta es la forma polar de un número complejo:
24
11.2. Funciones en Python para trabajar con números complejos
z = a + bj z=a+bj
z=complex(a,b) (Función de NumPy)
Re(z) z.real
Im(z) z.imag
√
|z| = a2 + b2 abs(z) (Función de NumPy)
!
b
θ = tan−1 angle(z) (Función de NumPy)
a
z̄ = a − bj conj(z) (Función de NumPy)
25
12. Condicionales y bucles en Python
12.1. Bucles
for i in range(4):
print ("Los valores de i son:", i)
26
12.2. Sentencias condicionales
Condición Descripción
> Mayor que
>= Mayor igual que
== Igual
< Menor que
<= Menor igual que
Caso 1
if condición 1:
sentencias 1
Caso 2
if condición 1:
sentencias 1
elif condición 2:
sentencias 2
else:
sentencias 3
A = [1,2,4,5,0,8,9]
I=0
for j in A:
if j > 3:
print ("j > 3 es = ", j)
I = I + 1
elif j == 0:
print ("Existe un valor cero")
else:
print ("No lo es = ", j )
print ("---------------------------")
print ("Hay",I,"valores mayores a 3")
Un bucle while permite repetir la ejecución de un grupo de instrucciones mientras se cumpla una
condición.
while condición:
sentencias 1
i = 0
27
while i <= 3:
if i <= 3:
print ("Se cumple la condición: i < 3 = ", i)
i += 1
print ("Final del bucle")
NOTA IMPORTANTE:
Si la condición del bucle siempre se cumple entonces el bucle no terminará nunca de ejecutarse
y se tendrá un bucle infinito. En este caso SE DEBE CERRAR EL PROGRAMA Y REINICIAR
PYTHON.
28
13. Encontrar valores en un vector
29
>>> np.delete(X,I)
array([ 2., 1., 0., 1., 2., 3., 2.])
30
14. Matrices
Se define una matriz a un conjunto rectangular de elementos X(i, j) dispuestos en n filas y en m co-
lumnas. El orden de una matriz también se denomina dimensión, siendo m y n números enteros. Los
números que contiene ésta matriz se denomina elementos de la matriz.
x11 x12 x13 . . . x1m
x21 x22 x23 . . . x2m
X= .. .. .. .. .. (13)
. . . . .
xn1 xn2 xn3 . . . xnm n×m
(
i = 1, · · · , n
X[i, j]nm =
j = 1, · · · , m
Python manipula matrices en: 2-D, 3-D, 4-D, etc.
Columnas
Filas
Elemento de la matriz
La manipulación de matrices en de gran importancia en análisis de datos, debido a que los datos
estan ordenados en forma tabular.
31
14.2. Matrices de dimensión mayor
Estructura de una
matriz en 3-D
𝒕=𝒏
𝑿 = 𝑰𝒎𝒂𝒈𝒆𝒏
𝒕=𝟐
𝑳𝒂𝒕𝒊𝒕𝒖𝒅
𝑿(𝒊, 𝒋, 𝒌)
𝒕=𝟏
𝑳𝒐𝒏𝒈𝒊𝒕𝒖𝒅 © Raúl Andrés Montoya Sánchez (UNALMED)
𝑋(𝑖, 𝑗, 𝑘)
𝑧=1
𝑃𝑟𝑜𝑓𝑢𝑛𝑑𝑖𝑑𝑎𝑑
𝑧=2
𝑧=3
𝑧=n
© Raúl Andrés Montoya Sánchez (UNALMED)
32
14.3. Crear una matriz en Python
Existen dos funciones para crear matrices: array y matrix. La primera función es una matriz pero
con una clasificiación de array. La segunda es una matriz que se rige por las normas del algebra lineal.
Para crear una matriz en python es:
X = np.array([ [a1, a2, a3],
[b1, b2, b3],
............,
[x1, x2, x3] ])
X = np.array([ [a1, a2, a3], [b1, b2, b3],
............, [x1, x2, x3] ])
donde a1, a2, ..., x3 son los elementos de la matriz.
import numpy as np
X = np.array([[24, 23, 12],
[30, 22, 11],
[24, 11, 21],
[30, 20, 22]])
n, m = X.shape ## Determina la dimension de la matriz
print ("Esta matriz tiene", n,"filas y", m, "columnas")
33
14.4. Funciones en Numpy para manipular matrices
Descripción Python
Dimensión de la matriz np.shape(X)
Dimensión de la matriz X.shape
Determina el producto matricial np.dot(A,A)
Crea una matriz de ceros np.zeros((n,m))
Crea una matriz de unos np.ones((n,m))
Traspuesta de la matriz ”A” np.transpose(A)
Extrae la diagonal de una matriz np.diag(A)
Determina la traza de la matriz np.trace(A)
Traspuesta de la matriz ”A” A.T
Transforma la matriz ”A” a vector y=A.flatten()
34
15. Principales funciones para visualización (MATPLOTLIB)
Función Descripción
plot Visualización en 2-D
bar Gráfico de barras verticales
barh Gráfico de barras horizontales
hist Histrogramas
boxplot Gráficos de cajas (boxplot)
errorbar Gráficos de barras con errores
Función Descripción
scatter Diagrama de dispersión
imshow Visualiza una matriz
contourf isolineas rellenadas
contour Visualiza isolíneas
clabel label de las isolíneas
colorbar Barra de colores
pl.pcolormesh Plot a quadrilateral mesh
Función Descripción
title Coloca un título a la figura
suptitle Coloca un título superior a la figura
xlabel Coloca una etiqueta en el eje X
ylabel Coloca una etiqueta en el eje Y
legend Coloca una legenda
text Coloca un texto en una posición indicada
annotate Coloca un texto en una posición indicada
legend Coloca una leyenda en una figura
35
15.4. Funciones para modificar los tick en la figura
Función Descripción
xticks Coloca los ticks en el Eje X
yticks Coloca los ticks en el Eje Y
xlim Define los límites en el eje X
ylim Define los límites en el eje Y
tick_params Modifica los parametros por defecto que tiene la figura
15.5. Funciones para añadir ejes y modificar los ejes de una figura
36