Está en la página 1de 36

Curso

Programación para Oceanografía y


Meteorología

Lenguaje de programación en Python

Raúl Andrés Montoya Sánchez


Oceanógrafo
Magíster en Ingeniería - Recursos Hidráulicos
PhD(c) en Ingeniería - Recursos Hidráulicos
correo: raul.a.montoya.s@gmail.com, raula.montoya@udea.edu.co

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

Este curso será evaluado en 8 controles y un parcial.

Quiz Porcentaje Fecha


Quiz 1 10 % 18/09/2017
Quiz 2 10 %
Quiz 3 10 %
Quiz 4 10 %
Quiz 5 10 %
Quiz 6 10 %
Quiz 7 10 %
Quiz 8 10 %
Parcial 20 % Por definir
Total 100 %

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

2. Librerias o paquetes importantes en Python 11


2.1. Paquetes instalados en Python 3.5 (básico) . . . . . . . . 11
2.2. Paquetes importantes instalados en Anaconda . . . . . . 11
2.3. Paquetes importantes no instalados en Anaconda . . . . 11
2.4. Instalación de librerias (paquetes) . . . . . . . . . . . . 12
2.4.1. Instalación de paquetes: usando conda . . . . . . 12
2.4.2. Instalación de paquetes: usando pip . . . . . . . 12
2.4.3. Instalación de paquetes: forma manual . . . . . . 12
2.4.4. Otros sitios para descargar librerias comprimidas 13
2.5. Utilización de los paquetes . . . . . . . . . . . . . . . . 13
2.5.1. Importar el módulo con su nombre original . . . 13
2.5.2. Importar algunas funciones del módulo . . . . . 14
2.5.3. Importar el módulo y renombrarlo . . . . . . . . 14
2.5.4. Importar todas las funciones del módulo . . . . . 14

3. Cambiar de directorio 14

4. Formatos que trabaja Python 15

5. Palabras claves 15

6. Operadores aritméticos en Python 16

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

9. Listas , tuplas y diccionarios 17


9.1. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9.2. Tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9.3. Diccionarios . . . . . . . . . . . . . . . . . . . . . . . . 19
9.3.1. Definir un diccionario . . . . . . . . . . . . . . 19
9.3.2. Acceder a una variable almacenada en un diccio-
nario . . . . . . . . . . . . . . . . . . . . . . . 19
9.3.3. Modificar una variable de un diccionario . . . . 19
9.3.4. Añadir un nuevo elemento a un diccionario . . . 19
9.3.5. Borrar una variable en un diccionario. . . . . . . 20

10. Vectores (array) en Python 20


10.1. Crear un vector en python . . . . . . . . . . . . . . . . . 20
10.2. Operaciones con vectores . . . . . . . . . . . . . . . . . 20
10.3. Extraer elementos de un vector . . . . . . . . . . . . . . 21
10.4. Funciones en Numpy para manipular vectores . . . . . . 21
10.5. Funciones en numpy para cáculos estadísticos básicos . . 21

11. Números complejos 22


11.1. ¿Qué es un número complejo? . . . . . . . . . . . . . . 22
11.1.1. Relación geométrica de un número complejo . . 22
11.2. Funciones en Python para trabajar con números complejos 23

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

13. Encontrar valores en un vector 27


13.1. Ejemplo. Buscar los valores mayores a 3 y reemplazarlos
NaN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
13.2. Buscar los valores y eliminarlos del vector . . . . . . . . 27
13.3. Uso de la función where . . . . . . . . . . . . . . . . . 28

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

15. Principales funciones para visualización (MATPLOTLIB) 33


15.1. Funciones en matplotlib para visualización 1-D . . . . . 33
15.2. Funciones en matplotlib para visualización 2-D . . . . . 33
15.3. Funciones para modificar las etiquetas . . . . . . . . . . 33
15.4. Funciones para modificar los tick en la figura . . . . . . 34
15.5. Funciones para añadir ejes y modificar los ejes de una
figura . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

16. Lectura de archivos, parte 1 34

6
1. Generalidades de Python

1.1. Estructura y elementos del lenguaje

Lenguaje de programación1: es un lenguaje informático, diseñado


para expresar órdenes e instrucciones precisas, que deben ser lle-
vadas a cabo por una computadora. El mismo puede utilizarse para
crear programas que controlen el comportamiento físico o lógico de
un ordenador. Está compuesto por una serie de símbolos, reglas sin-
tácticas y semánticas que definen la estructura del lenguaje.
Lenguajes de alto nivel: son aquellos cuya característica principal,
consiste en una estructura sintáctica y semántica legible, acorde a
las capacidades cognitivas humanas. A diferencia de los lenguajes
de bajo nivel, son independientes de la arquitectura del hardware,
motivo por el cual, asumen mayor portabilidad
Lenguajes interpretados: a diferencia de los compilados, no requie-
ren de un compilador para ser ejecutados sino de un intérprete. Un
intérprete, actúa de manera casi idéntica a un compilador, con la sal-
vedad de que ejecuta el programa directamente, sin necesidad de ge-
nerar previamente un ejecutable. Ejemplo de lenguajes de programa-
ción interpretado son Python, PHP, Ruby, Lisp, entre otros.
Tipado dinámico: un lenguaje de tipado dinámico es aquel cuyas
variables, no requieren ser definidas asignando su tipo de datos, sino
que éste, se auto-asigna en tiempo de ejecución, según el valor de-
clarado.
Multiplataforma: significa que puede ser interpretado en diversos
Sistemas Operativos como GNU/Linux, Windows, Mac OS, Solaris,
entre otros.
1
Copiado textual de: http://librosweb.es/libro/python/capitulo_2.html

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.2. Página web de descarga del software

1. Ir a: http://continuum.io/downloads
Instalar Anaconda en la ruta c:/

1.3. Editor de Python - Spyder

Spyder es un editor de texto para Python. En el se pueden crear,


ejecutar programas y muchas otras funcionalidades.
Este softwate ya viene incorporado en Anaconda.
Su ubicación en Anaconda:
c:/Anaconda3/Scripts/spyder.exe.
Para acceder a este se debe colocar en la terminar de windows (símbolo
del sistema), por ejemplo:

Se recomienda abrir Spyder en el directorio donde Usted desarrollará


el programa.

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

1.4. Editor de Python: Jupyter

Jupyter es un entorno de trabajo para Python. Es la versión mejorada


de IPython.
Este programa viene incorporado en la versión de Anaconda.
Su ubicación en Anaconda:
c:/Anaconda3/Scripts/jupyter-notebook.exe.
Para abrir Jupyter se coloca en la terminar
jupyter notebook
Por ejemplo: c:/Users/Raul/jupyter notebook
Se recomienda abrir Jupyter en el directorio donde Usted desa-
rrollará el programa.
Ejemplo:
Consideremos que su directorio de trabajo se encuentra en la siguiente

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.

El archivo se almacena con la extensión ”ipynb”, por ejemplo Exam_01.ipynb.

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

2.1. Paquetes instalados en Python 3.5 (básico)

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

2.2. Paquetes importantes instalados en Anaconda

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

2.3. Paquetes importantes no instalados en Anaconda

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)

2.4.1. Instalación de paquetes: usando conda

https://anaconda.org/IOOS/

NetCDF4: conda install -c ioos netcdf4


PyHDF4: conda install -c ioos hdf4
geopandas conda install -c ioos geopandas
gdal conda install -c ioos gdal
cartopy conda install -c ioos cartopy
2.4.2. Instalación de paquetes: usando pip

Repositorio PyPI: Python Package Index


https://pypi.python.org/pypi

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

2.4.3. Instalación de paquetes: forma manual

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

Unofficial Windows Binaries for Python Extension Packages


http://www.lfd.uci.edu/~gohlke/pythonlibs/

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

2.5. Utilización de los paquetes

2.5.1. Importar el módulo con su nombre original

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.

2.5.2. Importar algunas funciones del 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

2.5.3. Importar el módulo y renombrarlo

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

2.5.4. Importar todas las funciones del módulo

>>> from numpy import*


>>> vector = arange(0,9)
>>> vector
array([0, 1, 2, 3, 4, 5, 6, 7, 8])

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’

4. Formatos que trabaja Python

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

Palabras que no se deben utilizar como nombres de variables


Hay ciertos nombres que python utiliza para definir variables y que son exclusivamente del lenguaje
y no deben ser utilizados, estos nombres son los denominas ”nombres claves del programa” y son los
siguientes:
>>> import keyword
>>> print(keyword.kwlist)
[’False’, ’None’, ’True’, ’and’, ’as’, ’assert’,
’break’, ’class’, ’continue’, ’def’, ’del’, ’elif’,
’else’, ’except’, ’finally’, ’for’, ’from’, ’global’,
’if’, ’import’, ’in’, ’is’, ’lambda’, ’nonlocal’,

17
’not’, ’or’, ’pass’, ’raise’, ’return’, ’try’,
’while’,’with’, ’yield’]

6. Operadores aritméticos en Python

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

7. Funciones mateméticas en NumPy

7.1. Funciones algebraicas

Función Descripción Función Descripción


exp(x) Exponencial sqrt(x) Raíz cruadrada
abs(x) Valor absoluto log(x) Logarítmo natural
log2(x) Logaritmo en base dos log10(x) Logarítmo en base 10
log1p(x) Logaritmo en base ”p” e 2.718281828459045

7.2. Funciones trigonométricas

Función Descripción Función Descripción


sin(x) Seno cos(x) Coseno
tan(x) Tangente arcsin(x) Arcoseno
arccos(x) Arcocoseno arctan(x) Arcotangente
sinh(x) Seno hipoerbólico cosh(x) Coseno hiperbólico
tanh(x) Tangente hiperbólica pi Número PI

7.3. Funciones para redondear de valores

Función Descripción Función Descripción


floor(x) Redondeo hacia −∞ ceil(x) Redondeo hacia ∞
round(x) Redondea

18
8. Manejo de caracteres

8.1. ¿Cómo definir una variable caracter en Python?

Las variables ”string” ó caracter se crea usando comillas simples ó dobles.

>>> CADENA = " Esta es una cadena de caracteres "


>>> CADENA
’ Esta es una cadena de caracteres ’
>>>
>>> CADENA = ’Esta es una cadena de caracteres’
>>> CADENA
’Esta es una cadena de caracteres’
>>>
>>> ## No es un valor
>>> S = "1254"
>>> S
’1254’

8.2. Funciones aplicadas a una variable caracter

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. Listas , tuplas y diccionarios

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.

9.3.1. Definir un diccionario

>>> DIC = { "TEMP": [ 20.4, 12.23], "SALINIDAD": [33.4,34.56] }


>>> DIC
{’SALINIDAD’: [33.4, 34.56], ’TEMP’: [20.4, 12.23]}

9.3.2. Acceder a una variable almacenada en un diccionario

>>> TEMP = DIC["TEMP"]


>>> TEMP
[20.4, 12.23]
>>> SAL = DIC["SALINIDAD"]
>>> SAL
[33.4, 34.56]

9.3.3. Modificar una variable de un diccionario

>>> DIC["TEMP"]=[22.0, 20.3, 14.0, 10.]


>>> DIC
{’SALINIDAD’: [33.4, 34.56],
’TEMP’: [22.0, 20.3, 14.0, 10.0]}
>>>

9.3.4. Añadir un nuevo elemento a un diccionario

>>> DIC["OXIGENO"] = [ 6.5, 5.5, 3.1]


>>> DIC
{’SALINIDAD’: [33.4, 34.56], ’OXIGENO’: [6.5, 5.5, 3.1],

21
’TEMP’: [22.0, 20.3, 14.0, 10.0]}
>>>

9.3.5. Borrar una variable en un diccionario.

>>> del( DIC["TEMP"] ) ## Se borra la variable TEMP


>>> DIC
{’SALINIDAD’: [33.4, 34.56], ’OXIGENO’: [6.5, 5.5, 3.1]}
>>>

10. Vectores (array) en Python

10.1. Crear un vector en python

Para crea un vector por ejemplo:


x = (1, 2, 3, 4, 5, 6) (1)
se utiliza la función ”array” perteneciente a la libreria numpy. Primero es el nombre de la función,
seguido por el vector entre corchetes y separando cada valor por una coma (Note que los valores en
np.array() es una lista).

vector = np.array([valores separados por comas])

>>> import numpy as np


>>> A = np.array( [ 1,2,3,4,5,6] )
>>> A
array([1, 2, 3, 4, 5, 6])

En un vector también se pueden evaluar funciones. Evalar una función sin(3) y exp(2) en un array.

>>> import numpy as np


>>> A=np.array([2.2, np.sin(3), np.exp(2)])
>>> A
array([ 2.2 , 0.14112001, 7.3890561 ])

10.2. Operaciones con vectores

1. Las operaciones aritméticas se realizan elemento a elemento si se utiliza la función array. Si se


utiliza la función matrix estas siguen las normas del algebra lineal.
2. La enumeración de los elementos de un vector inicia con el valor CERO, se debe tener cuidado
con esto.

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]

10.3. Extraer elementos de un vector

10.4. Funciones en Numpy para manipular vectores

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

10.5. Funciones en numpy para cáculos estadísticos básicos

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

11.1. ¿Qué es un número complejo?

Un número complejo es una pareja ordenada de números reales a y b:

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)

11.1.1. Relación geométrica de un número complejo

𝑷𝒍𝒂𝒏𝒐 𝒁
𝐼𝑚

(𝑥, 𝑦)
𝑦

𝜃
𝑅𝑒
𝑥

z = x + yi (5)
x = r cos(θ) (6)
y = r sin(θ) (7)
Esta es la forma polar de un número complejo:

z = r [cos(θ) + sin(θ)i] (8)


q
r= Re(z)2 + Im(z)2 (9)
!
−1 Im(z)
θ = tan (10)
Re(z)
La ecuación (8) se puede expresar como:
z = reθi (11)
eθi = cos(θ) + sin(θ)i (12)

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

Los bucles ó ciclos repetitivos se crea usando la sentencia


for contador in valores:
sentencias
donde contador indica la secuencia, valores es una secuencia de valores. sentencia es el código
que se quiere repetir.

12.1.1. Ejemplo. Bucle: secuencia correlativa

for i in range(4):
print ("Los valores de i son:", i)

## ===== CONSOLA =====


Los valores de i son: 0
Los valores de i son: 1
Los valores de i son: 2
Los valores de i son: 3

12.1.2. Ejemplo. Bucle: secuencia definida por el usuario

# -*- coding: utf-8 -*-


print ("\nMultiplación:")
print ("==============")
for numero in [0, 2, 6, 9]:
print (numero,"*", numero,"=", numero ** 2)
print ("==============")

## ==== CONSOLA =====


Multiplación:
==============
0 * 0 = 0
2 * 2 = 4
6 * 6 = 36
9 * 9 = 81
==============
A = ["A","B","C"]
for j in A:
print ("La letra es = ", j)

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

12.2.1. Ejemplo. Combinar un bucle con un condicional

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

12.3. Bucle while

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

## ===== CONSOLA =====


Se cumple la condición: i < 3 = 0
Se cumple la condición: i < 3 = 1
Se cumple la condición: i < 3 = 2
Se cumple la condición: i < 3 = 3
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

Python tiene a su disposición dos funciones para busqueda de valores


p = find( condicion )
p = where( condicion )
donde ”p” en un vector de posiciones donde se cumple la condición. La función find se encuantra
en matplotlib y where en NumPy.

13.1. Ejemplo. Buscar los valores mayores a 3 y reemplazarlos NaN


>>> import numpy as np
>>> import matplotlib.pylab as pl
>>>
>>> ## Define le vector
...
>>> X = np.array([2,1,4,0,1,2,3,8.,6,9,4,2])
>>>
>>> ## Busca los valores en el vector X mayores a 3.
...
>>> I = pl.find( X > 3.0 )
>>> I
array([ 2, 7, 8, 9, 10], dtype=int64)
>>> ## Extrae esos valores
...
>>> y = X[I]
>>> y
array([ 4., 8., 6., 9., 4.])
>>> X[I] = np.nan
array([2., 1.,nan, 0.,1., 2., 3., nan, nan, nan, nan, 2.])

13.2. Buscar los valores y eliminarlos del vector


>>> import numpy as np
>>> import matplotlib.pylab as pl
>>>
>>> ## Define le vector
...
>>> X = np.array([2,1,4,0,1,2,3,8.,6,9,4,2])
>>>
>>> ## Busca los valores en el vector X mayores a 3.
...
>>> I = pl.find( (X >= 4.0) & ( X < 7) )
>>> I
array([ 2, 8, 10], dtype=int64)
>>> ## Extrae esos valores
...
>>> y = X[I]
>>> y
array([ 4., 6., 4.])

29
>>> np.delete(X,I)
array([ 2., 1., 0., 1., 2., 3., 2.])

13.3. Uso de la función where


>>> import numpy as np
>>> X = np.array([ 2, 1, 4, 0, 1, 2, 3, 8., 6, 9, 4, 2 ])
>>> >>> I = np.where( X > 3.0 )
>>> I
(array([ 2, 7, 8, 9, 10], dtype=int64),)
>>> type(I)
<class ’tuple’>
>>> y=X[I]
>>> y
array([ 4., 8., 6., 9., 4.])
>>> X[I] = -999
>>> X
>>> X
array([ 2., 1., -999., 0., 1., 2., 3.,
-999., -999., -999., -999., 2.])
>>> np.delete(X,I)
array([ 2., 1., 0., 1., 2., 3., 2.])

30
14. Matrices

14.1. Definición de una matriz

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

 x11 x12   x1m 


 
 x21 x22  
     
 
     
x x   x 
 n1 n 2 nm  n  m

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

Matriz 2-D (Xij ): donde i y j representa la posicion geográfica, posición ó tiempo.


Matriz 3-D (Xijk ): donde i, j representa las posiciones geográficas, y k es la profundidad o el
tiempo (hora, día, mes, año, etc). Ejemplo: Almacenamiento de varias imagenes satelitales o la organización de
un campo de temperatura en profundidad (WOA-09, WOD-09).

Matriz 4-D (Xijkl ): donde i y j representa las posiciones geográficas, k es la profundidad y l es el


tiempo. Ejemplo: estructura tridimensional de la temperatura del océano o en la atmósfera con el
tiempo.

Estructura de una
matriz en 3-D

𝒕=𝒏

𝑿 = 𝑰𝒎𝒂𝒈𝒆𝒏

𝒕=𝟐
𝑳𝒂𝒕𝒊𝒕𝒖𝒅

𝑿(𝒊, 𝒋, 𝒌)

𝒕=𝟏
𝑳𝒐𝒏𝒈𝒊𝒕𝒖𝒅 © Raúl Andrés Montoya Sánchez (UNALMED)

Estructura de una matriz en 3-D

𝑋(𝑖, 𝑗, 𝑘)

𝑧=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.

Consideremos la siguiente matriz:


24 23 12
 
 30 22 11 
X=
 
24 11 21

 
30 20 22 4×3

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

14.4.1. Funciones en Numpy para algebra matricial

Libreria: import numpy as np

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

14.4.2. Funciones en Numpy para algebra lineal

Libreria: import numpy.linalg as al

Determinante de la matriz ”A” al.det(A)


Inversa de una matriz de la matriz ”A” al.inv(A)
Descomposición de valor singular al.svd(A)
Valores y vectores propios al.eig(A)
Sistema de ecuaciones lineales al.solve(A,B)
Factorización QR al.qr(A[, mode])
Descomposción de Cholesky al.cholesky(A)
Norma de una matriz. al.norm(A)
Número condicional de una matriz al.cond(A)

34
15. Principales funciones para visualización (MATPLOTLIB)

15.1. Funciones en matplotlib para visualización 1-D

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

15.2. Funciones en matplotlib para visualización 2-D

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

15.3. Funciones para modificar las etiquetas

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

grid Coloca una malla a la figura


figure Define el tamaño de la figura
axes Modifica los margenes de la figura
subplot coloca varias graficas en una figura
subplots_adjust Modifica la posicion de los subplots
savefig Almacena la figura en un archivo

16. Lectura de archivos, parte 1

36

También podría gustarte