Subscribe:

AD (728x90)

About

Blogroll

Blogger templates

Blogger news

Mostrando entradas con la etiqueta Python. Mostrar todas las entradas
Mostrando entradas con la etiqueta Python. Mostrar todas las entradas

Análisis de Datos. Pandas y MatPlotlib


Análisis y visualización de datos con Pandas & MatPlotLib




Imagina que tienes un csv o un archivo de datos separados por comas; quieres darle un poco de análisis para saber que estrategias serán las mejores y obtener de este modo buenas conclusiones o, si estás entrando a la ola de Machine Learning, comprender sobre sus características y la relación entre ellos.


Podrías emplear cualquier herramienta de ofimática pero también podrías aprovechar la oportunidad para pulir un poco tus habilidades en programación ;)
El stack (o conjunto de herramientas) — para las 3 primeras será mucho más fácil instalar Anaconda para tenerlas ya listas — a emplear para ésta ocasión será:

Más Información
https://code.likeagirl.io/an%C3%A1lisis-y-visualizaci%C3%B3n-de-datos-con-pandas-matplotlib-85ee4d7b4cad

Otro ejemplo de análisis de datos https://unipython.com/curso-analisis-datos/

Adivina un número. Python

Juego en python: adivina numero aleatorio (Parte 1)


Hoy vamos a crear un juego de adivinar un numero aleatorio. 

En este juego, el participante va pensar un numero aleatorio entre el 1 y el 20 y el programa le pedirá que adivine el numero. Solo hay 6 intentos, pero con la ayuda del programa que nos dirá si el numero que ingresamos es mas chico o mas alto. Si el usuario adivina el numero antes de los 6 intentos, gana.

Este juego nos sirve para aprender a trabajar los numeros aleatorios, los bucles y las entradas del usuario. Tambien aprenderemos a convertir los valores en diferentes tipos de datos (y que se necesita para hacer esto).

Debido a que este programa es un juego, vamos a llamar al usuario: "jugador".

Esto es lo que le aparecerá al jugador una vez que ejecute el programa, el texto en azul es lo que ingresa el jugador:

Hola! Cual es tu nombre?
Albert
Hola Albert, Bienvenido a mi primer juego....
Elige un numero del 1 al 20
10
Tu numero es mas alto
Elige un numero del 1 al 20
2
Tu numero es mas bajo
Elige un numero del 1 al 20
4
Buen trabajo Albert, lo has logrado con 3 intentos

Aquí les voy a dejar el código fuente de nuestro juego de adivinar números. Al agregar este código en tu Editor de archivos (IDLE), asegúrate de prestar antencion en las sangrías que hay en algunas lineas. Esto es muy importante para que nuestro juego funcione. Después de ingresar el código, guarda el juego como adivina.py y puedes ejecutarlo apretando F5 para probar como funciona y comprobar que no tenga errores. Si aparece algún tipo de error, se paciente y fíjate si todas las lineas coinciden con las del código original. Ire explicando linea a linea como funciona nuestro juego.

Nota: es muy importante que tengas instalado python 2.x en tu ordenador, si tienes la versión 3.x te dará problemas y el programa no va a correr.
Por las dudas dejo la entrada: Como instalar python

#Juego de adivinar numero aleatorio

import random

intentos = 0

print ("JUEGO DE AZAR....")

print ("Cual es tu nombre?...")
nombre = raw_input()

x = random.randint (1, 20)

print ("Hola " + nombre + ", Bienvenido a mi primer juego...." )

while intentos < 6:
    intentos = intentos + 1
    print ("Elige un numero del 1 al 20")
    numero = raw_input()
    numero = int (numero)
    if numero < x:
        print ("Tu numero es mas bajo")
    if numero > x:
        print ("Tu numero es mas alto")
    if numero == x:
        break

if numero == x:
    print ("Eres un genio....")
    print (nombre + " lo lograste con %d intentos" % (intentos))
    print ("Nos vemos....")
   
if numero != x:
    print ("Has perdido, sera en otra oportunidad...")
    print ("Nos vemos")

A pesar de que estamos trabajando en el IDLE, podemos ir haciendo pruebas en el shell interactivo de python. El shell interactivo es muy practico para ir experimentando con diferentes instrucciones.

Vamos a estudiar el codigo linea a linea:

#Juego de adivinar numero aleatorio
Esta linea es un comentario. Como ya comente en la entrada anterior, todo lo que se escriba después del signo # no es interpretado como cogido por el ordenador. Esto solo nos recuerda que hace el programa, como funciona o lo que nosotros quisiéramos recordar del código. 

import random
Esto es una declaración de importación. Las declaraciones no son funciones. Recordemos que las declaraciones son instrucciones que realizan algo, pero no se evalúan como un valor.
Aunque python incluye muchas funciones integradas, existen algunas funciones por fuera llamadas módulos. Los módulos son programas en python que contienen funciones adicionales. Utilizamos las funciones de estos módulos poniéndolos en nuestros programas con la declaración de importación. En este caso, estamos importando el modulo random.
La declaración de importación se compone de la palabra clave de importación: import, seguido del nombre del modulo.
Lo que hacemos en esta linea entonces, es importar el modulo random, que contiene varias funciones relacionadas con los numeros aleatorios.

intentos = 0
Esta linea crea una variable llamada intentos. Vamos a guardar el numero de intentos que el jugador hace en esta variable. Dado que el jugador todavía no ha hecho ningún intento, la inicializamos en 0.


print ("JUEGO DE AZAR....")

print ("Cual es tu nombre?...")
nombre = raw_input()
Las primeras dos lineas llaman a la función print(). Recuerda que una función es como un mini-programa el programa general ejecuta  y cuando el programa general llama a la función esta se ejecuta. Lo que se ejecuta es lo que esta dentro de los paréntesis. La primera linea presenta nuestro juego y la segunda le pregunta el nombre al jugador.
Cuando estas dos lineas se terminan de ejecutar y el jugador escribe su nombre, el nombre se guardara en la variable nombre. Tenemos que recordar que el jugador no solo puede poner el nombre, pude escribir lo que se le ocurra.

x = random.randint (1, 20)
En la siguiente linea, otra ves llamamos a una función, esta ves es el turno de randint(), y a continuación, guarda el valor de retorno en la variable x. A esto lo llamamos valor de retorno de la función.
La función randint() devuelve un entero aleatorio entre los dos enteros que colocamos entre paréntesis, en este caso, un entero en el 1 y el 20. El numero aleatorio que devuelve la función randint() es guardado en la variable, y es el numero que el jugador va a tener que adivinar.
Si quieres, puedes practicar en el shell interactivo de python:

>>>import random
>>>x = random.randint (1, 20)
>>>x
12
 >>>x
5
 >>>x
9

Cada vez que queramos añadir aleatoriedad a nuestros juegos o programas podemos usar la función randint(). Recuerda cuantos juegos de mesas utilizan dados, un montón verdad?
También puedes probar diferentes rangos de números para familiarizarte con la función.
Recuerda que el programa necesita que importes random para que randint() funcione. Esta es la razon por las que los modulos de importación van al principio del programa.
Los valores escritos entre paréntesis en la función randint son llamados argumentos. Los argumentos son valores que se pasan a una funcion cuando se llama a la función. Los argumentos le indican a la función como comportarse.

Algunas funciones requieren que se pase valor cuando son llamadas. Miremos estas llamadas de funciones:

input()
print ("Hola")
random.randint (1, 20)

La función input no necesariamente usa argumentos, pero la función print() tiene un argumento y la función randint tiene dos. Cuando tenemos mas de un argumento los escribimos separados con comas, como en el ejemplo.

print ("Hola " + nombre + ", Bienvenido a mi primer juego...." )
En esta linea le damos la bienvenida al jugador, utilizamos tambien el signo de concatenacion + para sumarle a "Hola" el contenido de la variable nombre + ", Bienvenido a mi primer juego....".

while intentos < 6:
    intentos = intentos + 1
    print ("Elige un numero del 1 al 20")
    numero = raw_input()
    numero = int (numero)
    if numero < x:
        print ("Tu numero es mas bajo")
    if numero > x:
        print ("Tu numero es mas alto")
    if numero == x:
        break
En esta linea indicamos el comienzo de un bucle while. Los bucles son parte de código que se repiten una y otra vez. Pero antes de aprender los bucles while, tendremos que aprender otros conceptos. Esos conceptos son los bloques, booleanos, operadores de comparación, condicionales y por ultimo la sentencia while

Bloques:
Un bloque es una o mas lineas de código agrupados juntos con la misma cantidad mínima de identacion. Se puede decir que un bloque empieza y termina mirando la sangría de la linea.
Un bloque comienza cuando tiene sangría de 4 espacios o 1 tabulación. Cualquier linea de código siguiente que tenga la misma sangría es parte del mismo bloque.
A continuacion se muestra un diagrama del codigo con los bloques señalados y numerados:

Dibujando con Python

.

Sí, así es, esta hermosa "Estrella" la e hecho con python y el modulo Turtle, con menos de 11 lineas de código, sorprendente ¿Verdad?.

En el día de hoy te daré una breve introducción del modulo Turtle, el cual nos permite crear gráficos usando una tortuga como lápiz virtual.

Dibujando con Python y Turtle:

Como e dicho anteriormente, hoy les mostrare como funciona el modulo Turtle, el cual se encuentra en la librería estándar de Python, por lo cual no debemos descargar ningún archivo externo.

Para entender las funciones básicas de movimiento, podemos crear un sencillo ejemplo, dibujemos un simple cuadrado de la sguiente manera:

#Importamos la librería turtle
import turtle
#Procedimiento para crear el cuadrado
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.forward(50)
turtle.left(90)
turtle.done()

El resultado quedaría algo así:


Fascinante, ¿Cierto?, veamos que a sucedido aquí, paso a paso.

Lo primero que hacemos es importar el modulo Turtle, esto nos permite usar todos sus métodos y funciones, luego de esto usamos repetidamente dos métodos, los cuales sonforward left, el método forward le dice al lápiz virtual que se mueva 100 píxeles hacia delante, mientras que el método left le dice al lápiz virtual que gire 90 grados hacia la izquierda, este procedimiento se repite 4 veces, lo cual da como resultado un cuadrado.

Antes de continuar quisiera comentar que, en este sencillo programa, estamos repitiendo mucho código, esto lo podemos evitar usando un bucle for, de esta manera nos quedaría algo así:

Ejercicios Python



Python 08. Quiniela (FOR)



Python. Menú con los apartados Vamos a ver a continuación una nueva orden: La orden FOR El programa imprimirá una linea de información y a continuación generará el resultado (1, X, 2) de los quince partidos de la quiniela. (1 significa que gana el equipo de casa, X es empate y 2 es que gana el equipo visitante) Código: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15#Generar...


IDE para Python

Más acerca Python..

Los 5 mejores IDE para Python

      62
Para programar en Python solo nos basta con Instalar Python y utilizar el IDE que viene con la instalación, pero son muchas las preguntas que nos hacen: ¿Cual es el mejor ide para python? ¿Qué ide es mejor para programar en la web con Python? Y son muchos y con diferentes características los que podemos encontrar, así que a continuación les daré una lista de 5 IDE Python que me gustan.

Decir que un IDE en Python es mejor que otro puede rechinar un poco porque depende de muchas cosas, pero a mi manera de ver lo principal es que el IDE que utilicemos nos resulte cómodo y satisfaga nuestras necesidades. Me gustaría saber que IDE utilizas para trabajar con Python, ¿Te animas a dejar un comentario?

Esta entrada sobre IDEs en Python pretende mostrar entornos de trabajos completos a la hora de ponernos a escribir código en Python.

1 - Pycharm IDE

El IDE Pycharm es muy completo, creado por JetBrains. Este IDE es profesional y viene en dos modalidades: una edición Free y otra muy completa privada que apunta a empresas de desarrollo de software. La popularidad de el IDE Pycharm se puede medir a partir de que grandes empresas como TwitterGrouponSpotifyebay telefónica, han utilizado éste para su trabajo. 
La mayoría de sus características están disponibles en la versión gratuita, se integra con IPython, soporta Anaconda, así como otros paquetes científicos como matplotlib NumPy.
Características como desarrollo remotosoporte de bases de datos, soporte de frameworks de desarrollo web, etc, están disponibles solo para la edición profesional de PyCharm.
Algo muy útil de Pycharm es su compatibilidad con múltiples marcos de desarrollo web de terceros como DjangoPyramidweb2py, motor de aplicaciones Google Flask, lo que lo convierte en un competo IDE de desarrollo de aplicaciones rápidas. 
Se encuentra disponible para Windows Linux, puedes descargarlo desde la siguiente URLhttp://www.jetbrains.com/pycharm/

Como instalar PyCharm en Windows
1 - Una vez finalizada la descarga, ejecute el archivo descargado, debe aparecer el asistente de instalación.
2 - Haga clic en siguiente y marque las 2 casillas 

Como instalar Pycharm en Linux
1 - Descomprima el archivo descargado en un directorio
2 - Para ejecutar PyCharm, ejecute pycharm.sh desde el subdirectorio bin. 

IDE Pycharm para Python

2 - PyDev IDE

Hace un tiempo escribí una entrada sobre este maravilloso IDE para Python, puedes verla en el siguiente link: Eclipse y Pydev
Porque PyDev: el libre de costo y está lleno de características poderosas para programar de manera eficiente en Python. Es un plugin de código abierto y se ejecuta en Eclipse.
Porque PyDev aparece en esta lista: Integración con Django, completa el código de manera automática, soporte multilengua, plantillas de código, análisis de código, marcado de errores y mucho más.
Se mantiene siempre actualizado y contiene una gran comunidad de usuarios y empresas de patrocinio como LiclipseSquishTraceTronic y alguna mas.
Aunque PyDev califica como uno de los mejores IDE de Python de código abierto, también viene empaquetado junto con otro producto llamado Liclipse, un producto comercial construido sobre Eclipse que proporciona mejoras en la usabilidad y temas adicionales.

Pydev para Python

3 - Sublime Text 3 IDE

Este IDE es uno de los más livianos potentes. Con el uso de Plugins, Sublime Text 3 puede utilizarse como un IDE completo. En un solo lugar podemos ver la elegancia del código y el poder de Python para hacer magia.
La interfaz de usuario es muy rápida y fácil de configurar. Contiene muchos paquetes para darle diferentes características.
Anaconda es un complemento que convierte Sublime Text 3 en un excelente IDE Python; aumenta su productividad y le ayuda a garantizar la calidad y estilo del código.

Más información en su página oficial: https://www.sublimetext.com/

Sublime Text 3 para Python

4 - Wing IDE

Wing IDE es comercial y apunta a desarrolladores profesionales. Fue lanzado hace 15 años atrás y es un producto muy maduro, con un montón de herramientas y características para programar en Python.
Wing IDE es soportado por Windows, OS X  Linux. Como Pycharm, tiene una versión básica gratuita, una edición personal y una profesional muy potente.
En el Debugging es donde Wing IDE brilla más e incluye funciones como depuración de procesos múltiples, depuración de subprocesos, depuración automática de procesos secundarios, puntos de interrupción, inspección de código, etc. También ofrece funciones para depurar remotamente el código que se ejecuta en Raspberry PI.
Wing IDE también soporta una gran cantidad de frameworks Python como: Maya, MotionBbuilder, Zope, PyQt, PySide, pyGTK, Django, matplotib y muchos más.

Más información en la pagina oficial: https://wingware.com/

Wing IDE para Python

5 - Vim IDE

Vim IDE es uno de los editores más avanzados y populares dentro de la comunidad de desarrolladores Python. Es de código abierto y se encuentra disponible gratuitamente bajo licencia GPL.
Sin embargo, Vim es más conocido como editor, aunque nos ofrece un entorno completo de desarrollo para Pythoncuando está configurado correctamente. Vim es ligero, modular y el más adecuado para los amantes del teclado, para los que no utilizan el mouse mientras se escribe código.
La configuración inicial puede llevarnos un poco de tiempo ya que es necesario utilizar varios complementos VIM para que funcione de la manera que queramos, pero lo que obtenemos al final vale la pena el esfuerzo.
Si buscas un IDE Python para Linux, Vim puede ser tu mejor opción.

Mas información:  http://www.vim.org/

IDE Vim para Python

Python. Entradas Populares

Una de las entradas más populares fue sobre: Curso de WxPython brindado por Pedro De Los Santos (Esperemos más adelante pueda retomarlo). 

Otra buena entrada, que tuvo su repercusión, fue la que escribí sobre los Mejores Ides para Python. En la entrada detallo 5 de los mejores editores que podemos encontrar para programar en Python

Una entrada que en lo particular me gustó mucho y me hizo seguir investigando fue: Primera aplicación Web con Python y Flask, una entrada que pretende ser un primer encuentro con este maravilloso Framework Web.

No puedo olvidarme del Simple juego RPG en PythonMe trajo muchos recuerdos porque fue como me inicié en el lenguaje python, queriendo hacer juegos. Es una entrada muy interesante para los principiantes en este lenguaje!!!

Otro tema que me ha gustado mucho y que he utilizado en el correr del año es el Scraping con Python. En lo personal es un tema que me gusta mucho y dedico tiempo a seguir aprendiendo. También puedes ver la entrada: Completar formularios web con Mechanize y BeautifulSoup

Una entrada interesante fue también el sencillo Login hecho con Tkinter y Sqlite

Y por último las entradas más visitadas del blog, por un lado la Colección de ejercicios en Python y por otro el Tutorial Python desde cero

Ataque Fuerza bruta

Ataque de Fuerza Bruta a Cuentas de Gmail con Python

      2

Introducción:

En este articulo me centrare en explicar: ¿Que es un Ataque de Fuerza Bruta? ¿Como podría prevenir este tipo de ataque? y ¿Como funcionan los Ataques de Fuerza Bruta?.

Algunos de ustedes de seguro conocen el termino "Fuerza Bruta". Quisiera aclarar que este articulo lo estoy escribiendo con fines educativos, y no me hago responsable de lo que pueden hacer con los códigos que les proporcionare.

La Seguridad Informática es muy importante hoy en día, ya que cualquiera con conocimientos suficientes podría robar cuentas de Gmails asociadas con cuentas bancarias o información sensible.

Este articulo lo hago con el fin de que aprendamos a evitar estos ataques de fuerza bruta, ya que es uno de los ataques más usados. Al final del articulo escribiremos un pequeño programa en Python para que conozcamos mejor este tipo de Ataque, ya que si sabemos como funciona, sabremos como prevenirlos.

¿Que es un Ataque de Fuerza Bruta?

Un ataque de fuerza bruta es el proceso mediante el cual se recupera una clave probando todas las combinaciones posibles, el proceso finaliza al momento de encontrar la clave que permita el acceso.

El programa que esta ejecutando un ataque de fuerza bruta, prueba con cada una de las combinaciones posibles, una por una, esta hallar la correcta.

Usualmente al hacer un ataque de fuerza bruta, se combinan con un ataque de diccionario, en donde el diccionario contiene todas las posibles combinaciones.

Sí, el proceso es un poco arduo, es como adivinanzas, el atacante le pregunta al servidor al cual esta atacando ¿Es esta? , ¿O esta?, ¿Que tal esta?, ¿Tal vez sea esta?, y así sucesivamente esta que el servidor le dice, "Sí es esa, felicitaciones lo has logrado".

También hay que tener muy claro, que los ataques de fuerza bruta pueden durar, días, semanas, meses e incluso hasta años, todo dependerá de la información con la que cuente el atacante.


Imagen relacionada


¿Como podría prevenir este tipo de ataque?

Como dije anteriormente, los ataques de fuerza bruta podrían durar años.

Todo dependerá de la información con la que cuente el atacante. ¿Porque depende de la información que tenga el atacante? Pues entre más conozca el atacante sobre ti, hay más probabilidades de que el ataque funcione. El atacante siempre buscara información como: Nombres de tus mascotas, tu fecha de nacimiento, nombre de tus familiares cercanos, cosas que te gustan, tus fechas favoritas, entre otras cosas. 

Pues inconscientemente, es la clase de cosas con las que describimos a nuestras contraseñas, por ejemplo, el nombre de nuestro perro y la fecha en el que lo obtuviste, o el nombre de tu novia y algunos numero como 12345. Esa clase de cosas, ya saben.

Los atacantes se fijan más en las personas mayores, ya que usualmente colocan información de su vida personal para sus contraseñas, como su segundo nombre y su fecha de nacimiento.

A continuación les daré unos consejos personales para evitar este tipo de ataques:
  1. No uses información publica en tus contraseñas: Es un error que todos cometemos, colocar nuestros nombres o fechas de nacimientos, toda esta información la puede ver cualquiera en nuestros perfiles de Facebook o Twitter.
  2. Usar más de 10 caracteres en nuestras contraseñas: Entre más larga la contraseña, mejor.
  3. Usar letras mayúsculas, minúsculas, números y signos de puncionan: Esta combinación hace más difícil el descifrado de nuestra contraseña, sobre todo si utilizamos letras mayúsculas en medio y algunos signos de puntuación. (Ej: luIsALEjandRO&28931).
  4. Cambiar nuestras contraseñas cada determinado tiempo: Cambiar nuestras contraseñas es algo que se los recomiendo hacer, no diario ni semanal, ya que eso seria un poco estresante pero si lo recomiendo hacer mensualmente.
Estos son algunos consejos que siempre tengo en cuenta.


¿Como funcionan los Ataques de Fuerza Bruta?

Muy bien, para ver un ataque de fuerza bruta en vivo y en directo, crearemos un  pequeño programa en Python, este programa nos pedirá un correo electrónico (Gmail), luego leerá las posibles combinaciones en un diccionario, el programa tratara de entrar en la cuenta gmail, usando cada una de las combinaciones que se encuentre en el diccionario, una por una.  Si la contraseña correcta se encuentra en el diccionario, el programa nos  mostrara la contraseña, de lo contrario el programa nos avisara de que ninguna de las combinaciones es la contraseña de la cuenta introducida.

A continuación les mostrare el código del programa, y luego lo explicare paso a paso:

import smtplib
 
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
print("\n")
email = input("Email de la victima: ")
dic = open("./diccionario.txt", "r")
 
for pwd in dic:
 try:
  smtpserver.login(email, pwd)
  print("Contraseña Correcta: %s"  % pwd)
  break;
 except smtplib.SMTPAuthenticationError:
  print("Contraseña Incorrecta: %s" % pwd)


Puedes descargar el codigo ingresando al siguiente enlace: Ataque de Fuerza Bruta con Python.

Muy bien, lo que hará el programa sera tratar de loguearse en gmail, para eso usaremos el protocolo usado para el envío de correos electrónicos, "SMTP".

Lo primero que haremos sera importar al modulo "smtplib". Luego llamamos al objeto "SMTP", el cual hará la conexión al servidor "smtp.gmail.com" en el puerto 587.
Luego usamos los metodos "ehlo()" y "starttls()". Con esto ya habremos establecido conexión con el servidor smtp de gmail.

Luego de establecer la conexión, en una variable llamada "email", guardaremos la entrada que nos pedirá el programa, la cual es el Gmail de la victima. En la siguiente linea, se abre el archivo "diccionario.txt", el cual contiene todas las combinaciones posibles, este diccionario sera creado por el atacante, en donde colocara cada combinación posible linea por linea.

Se abre un bucle for, que recorrerá cada linea del diccionario probando cada una de las combinaciones posibles. Con el método login, el programa se intentara loguearse con el email de la victima y la combinación posible, todo esto dentro de un bucle para que este proceso se repita hasta que se encuentra la combinación correcta.

Al ejecutar el programa, tendremos que ingresar el Email de la victima:



Como pueden ver el, la combinación numero 5, resulto ser la Correcta. Yo he usado un diccionario muy simple con tan solo 15 combinaciones posible, por Internet se encuentran muchas formas de hacer diccionarios muy prácticos y eficientes.

Bueno, este fue un ejemplo muy sencillo de Fuerza Bruta, existen muchas herramientas que hacen ataques de fuerza bruta a otros servicios a parte de Gmail.

Espero que les sirva de mucho este articulo, es muy importante saber como funciponan estos ataques para poder evitarlos, ya que a nadie le gusta que le roben su cuenta de Gmail. 

By Luis Salcedo

Programar en Python

http://www.codecademy.com/es/learn#_=_