Autor Tema: programa en python

0 Usuarios y 1 Visitante están viendo este tema.

25 Septiembre, 2015, 07:54 pm
Respuesta #10

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
Hola, gracias por las recomendaciones mathtruco ,pero aun no he logrado graficar
estas dos listas (población contra casos)y si entiendo la sintaxis para graficar el problema
esta en que mis listas las tendría que nombrarlas con algún nombre especial pues son arreglos,
pero ese es el detalle, no se como hacerle,
porque tendría que ser de una forma parecida a esta:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
    import csv


with open('2014Population.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        print fila[1]
       

with open('dengue-dato.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        print fila[54]   #Aquí no se si deba agregar una definición
                          pues intente hacer eso pero no lo conseguí
                          ya que son arreglos los que se deben graficar
      x=fila[1]
      y=fila[54]
      plt.plot(x, y)
      plt.show
     
     
      Por favor ayúdenme, y muchas gracias

25 Septiembre, 2015, 08:16 pm
Respuesta #11

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
    import csv


with open('2014Population.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        print fila[1]
       

with open('dengue-dato.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        print fila[54]   #Aquí no se si deba agregar una definición
                          pues intente hacer eso pero no lo conseguí
                          ya que son arreglos los que se deben graficar
      x=fila[1]
      y=fila[54]
      plt.plot(x, y)
      plt.show
     



Observaciones sobre tu código:
  - Cuidado con la indentación. En python la indentación no es sólo un lujo estético como en otros lenguajes.
    Por ejemplo, la cuarta línea del código te daría problemas, y también las 4 últimas.
  - y la segunda línea sobra si usas la tercera. Además que no aparece en la documentación matplotlib.


Mi versión:

Código: [Seleccionar]
import csv
import matplotlib.pyplot as plt

x=[]   # (a)
with open('2014Population.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        #print fila[1]         # (b)
        x.append(fila[1])      # (c)

plt.plot(x,x)
plt.show()

Línea (a) :: Como inicialmente no sabemos la dimensión que tendrá x (la abcisa de la gráfica) creamos un arreglo vacío.
Línea (c) :: Acá vamos añadiendo de a una las entradas del vector x.
Línea (b) :: la comento porque ahora no queremos imprimir. Si quieres lo descomentas.

Ahora tienes todas las herramientas para completar lo que necesitas.

Nota que omití cargar la bibliotena numpy porque no la usé.

25 Septiembre, 2015, 09:41 pm
Respuesta #12

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
Si estoy en lo correcto el código quedaría así:

import matplotlib
import matplotlib.pyplot as plt
import csv

x=[] 
y=[]
with open('2014Population.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        #print fila[1]         
        x.append(fila[1])     
 
with open('dengue-dato.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        #print fila[54]         
        y.append(fila[54])     
plt.plot(x,y)
plt.show()


 pero me marca error me dice que: 'x and y must have same first dimension', ¿esto a que se debe? ???
 porque pues modifique mi archivo dengue-datos.csv, para quitarle la palabra total y dejar en la fila 54  solo los 32 datos,
 pero no se porque me marca ese error.

25 Septiembre, 2015, 09:49 pm
Respuesta #13

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
pero me marca error me dice que: 'x and y must have same first dimension', ¿esto a que se debe? ???

Creo que tu falta de confianza no te permite resolver tú misma las dudas  >:D

Debes tenerte más fe, si tú misma estás indicando el error (len(x) y len(y) te dirán el tamaño de estos vectores).

Además, la primera linea de tu código sobra. Seguro sabrás el porqué.

26 Septiembre, 2015, 12:13 am
Respuesta #14

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
Ya no veo nada claro  :'( , cuando imprimo la lista
          print fila[54]
 me imprime 1, mis valores de los casos,2. (Porque coloque 1 en lugar de la palabra Total y el 2 en lugar de la última cifra que no utilizare)
se supone que la instrucción para eliminar elementos es
          y.remove(1)
          y.remover(2)      #para eliminar estos elementos pero no lo hace me marca error
 y con la instrucción
          y.index(1)         #Devuelve el índice en la lista  cuyo valor es 1  pero me dice que no   existe
pero al imprimir si me aparecen desde el 1,…, 2.
Ya intente también con del y[0] que quita un elemento de una lista dado su índice en lugar de su valor, pero na damas no lo he logrado, creo entender lo que hay que hacer pero esto del lenguaje de programación me acostado. :banghead:

26 Septiembre, 2015, 12:33 am
Respuesta #15

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
No me queda claro lo que estás haciendo. Para que podamos entendernos escribe el programa completo que estás corriendo (como he hecho yo, linea por linea), para saber qué has hecho y dónde puede estar el error.


          y.remover(2)      #para eliminar estos elementos pero no lo hace me marca error

¿Sobra una letra r?

y con la instrucción
          y.index(1)         #Devuelve el índice en la lista  cuyo valor es 1  pero me dice que no   existe
pero al imprimir si me aparecen desde el 1,…, 2.
Ya intente también con del y[0] que quita un elemento de una lista dado su índice en lugar de su valor, pero na damas no lo he logrado, creo entender lo que hay que hacer pero esto del lenguaje de programación me acostado. :banghead:


Puedes colocar un "?" al final del comando para tener una breve descripción de lo que hace. Por ejemplo, al escribir

Código: [Seleccionar]
y.index?

Se obtiene

Código: [Seleccionar]
y.index?
Type:       builtin_function_or_method
String Form:<built-in method index of list object at 0x7fdf64d3c830>
Docstring:
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.

Nota que la última línea dice que dará error si el valor que buscas no se encuentra.
Análogamente al hacer

Código: [Seleccionar]
y.remove('0')
si no encuentra al '0' dará un error.


Nota además, que el vector u no contiene números, sino caracteres. Así que para buscar el 1 tendrías que escribir:

Código: [Seleccionar]
y.index('1')

en vez de

Código: [Seleccionar]
y.index('0')

creo entender lo que hay que hacer pero esto del lenguaje de programación me acostado. :banghead:

Tranquila. Con el tiempo uno se va acostumbrando, pero si no lo utiliza se va olvidando.
Así que anda haciendo lo que tu profe te vaya enseñando en clases (clase a clase), y metiendo mano al computador cada vez que tengas tiempo.

26 Septiembre, 2015, 01:58 am
Respuesta #16

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
 :)   creo que tenia errores por la sensibilidad del lenguaje, finalmente mi código queda así:

import matplotlib.pyplot as plt
import csv

x=[] 
y=[]
with open('2014Population.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        #print fila[1]         
        x.append(fila[1])     
 
with open('dengue-datos.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        #print fila[54]         
        y.append(fila[54])
       
print y.index( 'Total' )
print y.index( '23433' )
y.remove('Total');
#print  y
y.remove('23433');
     # print  y
       
plt.plot(x,y)
plt.show()


Ahora me pregunto que si gráfica cada valor  \( x_{i} \)  del arreglo x le corresponde un elemento \( y_{i} \)del arreglo y, si es así, que me parece es correcto,como podría ordenarlos pero manteniendo la pareja \( (x_{i},y_{i}) \) , si es posible como lo haría ya que la gráfica generada se ve toda enredada.
Y muchas gracias, por tu tiempo y paciencia. :)

26 Septiembre, 2015, 05:00 am
Respuesta #17

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
:)   creo que tenia errores por la sensibilidad del lenguaje, finalmente mi código queda así:

Te haz dado cuenta de lo más importante de un lenguaje de programación: todas las cosas son blancas o negras. Las reglas son totalmente claras y estrictas, y por eso es importante aprender de una documentación oficial. El computador es un genio tonto que hace cuentas perfectas, pero ante instrucciones ambiguas no sabe qué hacer.

Por ejemplo, '1' es un string, y 1 es un entero, y jamás podrán ser iguales. Si se ha definido el comando remove pero no remover entonces este último no significa absolutamente nada para el programa.

¿Te imaginas lo terrible que sería si un lenguaje de programación permitiera cosas ambiguas, que funcionen a algunos de una forma y a otros de otra, o que interprete qué hacer cuando no tiene una regla clara?


Ahora me pregunto que si gráfica cada valor  \( x_{i} \)  del arreglo x le corresponde un elemento \( y_{i} \)del arreglo y, si es así, que me parece es correcto,como podría ordenarlos pero manteniendo la pareja \( (x_{i},y_{i}) \) , si es posible como lo haría ya que la gráfica generada se ve toda enredada.
Y muchas gracias, por tu tiempo y paciencia. :)

Para tu última pregunta te remito a mi primera respuesta:


Sobre las gráficas, el documento que adjuntaste parece que no trae nada, pero ¿buscaste en internet cómo usar matplotlib?:  http://matplotlib.org/users/pyplot_tutorial.html

La documentación es clarísima y hasta trae ejemplos.

26 Septiembre, 2015, 04:09 pm
Respuesta #18

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Por ejemplo, '1' es un string, y 1 es un entero, y jamás podrán ser iguales.

Ésa es una diferencia con Perl, en la que me decanto a favor de este último  :D. En Perl, '1' puede ser un string y '1' también puede ser un número. Depende del contexto. Tal como en los lenguajes naturales, las personas saben distinguir las palabras homógrafas, por ejemplo, saben perfectamente que "cerca" en estas dos oraciones no significan lo mismo,

Mis tíos viven cerca de casa.

Mi jardín está delimitado por una cerca.

perl es lo suficientemente inteligente como para darse cuenta de que en esta expresión

'1' / 100

'1' ha de ser un número, y en esta otra,

'1' . 'er ministro'

'1' ha de ser un string.

$ perl -e " print '1' / 100 "
0.01

$ perl -e " print '1' . 'er ministro' "
1er ministro
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print

27 Septiembre, 2015, 05:00 am
Respuesta #19

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
Por ejemplo, '1' es un string, y 1 es un entero, y jamás podrán ser iguales.

Ésa es una diferencia con Perl, en la que me decanto a favor de este último  :D. En Perl, '1' puede ser un string y '1' también puede ser un número.

Interesante, que cómodo.

Pero sigue siendo cierta mi afirmación:

:)   creo que tenia errores por la sensibilidad del lenguaje, finalmente mi código queda así:

Te haz dado cuenta de lo más importante de un lenguaje de programación: todas las cosas son blancas o negras. Las reglas son totalmente claras y estrictas, y por eso es importante aprender de una documentación oficial. El computador es un genio tonto que hace cuentas perfectas, pero ante instrucciones ambiguas no sabe qué hacer.


De todas formas, entiendo que las comodidades o ventajas de un lenguaje de programación suelen ser desventaja dependiendo del contexto. En particular, estos lenguajes que son "más inteligentes" (donde no es necesario definir variables...), incluído python y matlab, y por lo que veo perl, son cómodos para escribir programas en poco tiempo, pero eso mismo hace que no sean tan rápidos comparados con C o Fortran.