Autor Tema: programa en python

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

22 Septiembre, 2015, 08:45 pm
Leído 9129 veces

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
Hola espero puedan ayudarme tengo el siguiente ejercicio tengo que imprimir y gráficar los datos de población total contra casos de dengue total (los primeros están en el archivo 2014Population.csv y los segundos están en el archivo dengue-datos.csv, estos dos documentos están en una carpeta llamada DATA), mi idea es usar un ciclo for pero no sé como hacerlo no estoy muy familiarizada con este programa de phyton python, lo único que he logrado es imprimir para el segundo estado pero quiero la de los 32 estados y no se como hacerlo,
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import datos_plot_lib as dpl

matplotlib.rc('xtick', labelsize=18)
matplotlib.rc('ytick', labelsize=18)
matplotlib.rc('axes', labelsize=18)
data = dpl.data("DATA")
print data.population[1][1]
# en esta se que se deve variar el primer argumento [1]
print data.cases[1][54]
#para este segundo deve variar el primer argumento tambien ya que el total esta en la 54 posicion [54]

Ya me dan algunas funciones específicas (lo he subido como archivo doc ya que no me acepta otro formato, y los archivos .csv como .xls por la misma situación), espero me ayuden porfavor por favor sé que no es muy complicado pero no sé bien como usar o expresar en lenguaje de python.
Ya lo he intentado pero no me sale   :'(  :banghead:

22 Septiembre, 2015, 09:15 pm
Respuesta #1

mathtruco

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

Da la impresión que escribiste un código que no sabes qué hace (copiado y pegado de alguna parte). Obviamente puedo estar equivocado, es sólo lo que me parece.

Por ejemplo, la cuarta línea:

    import datos_plot_lib as dpl

no sé qué hace. Seguramente es algo que tienes en el mismo directorio.

---------

Sobre tu pregunta, si ya has importado los datos entonces haciendo

    print data.population
    print data.cases

debiera imprimir las tablas.

---------

Sobre lectura de archivos csv, ¿consultaste la documentación de python?    https://docs.python.org/2/library/csv.html
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

23 Septiembre, 2015, 02:44 am
Respuesta #2

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
Hola, pues el profesor me dio el archivo con las funciones predeterminadas (mostradas en el archivo funciones),
y originalmente este archivo tiene el nombre datos_plot_lib en lugar de funciones por eso lo importo con la instrucción:
 import datos_plot_lib as dpl
y con respecto a los datos no puedo imprimir toda la lista de los 32 estados es por eso que preguntaba, porque solo con las instrucciones:
 
print data.population[1][1]
# en esta se que se deve variar el primer argumento es decir print data.population [1]
print data.cases[1][54]
#para este segundo deve variar el primer argumento tambien ya que el total esta en la 54 posicion [54] es decir print data.cases[j][54]

logro imprimir solo para un estado, es por ello que mi idea es mandarlos a traer con un ciclo y que varíe el primer argumento como lo que indiqué en comentarios para que haga el recorrido e imprima los 32 datos para cada instrucción en total 64 datos pero eso es lo que no sé como estructurar bien el ciclo, espero puedan ayudarme ,  :banghead:

23 Septiembre, 2015, 04:38 am
Respuesta #3

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
Hola, pues el profesor me dio el archivo con las funciones predeterminadas (mostradas en el archivo funciones),
y originalmente este archivo tiene el nombre datos_plot_lib en lugar de funciones por eso lo importo con la instrucción:
 import datos_plot_lib as dpl

A menos que esté datos_plot_lib en el directorio donde estás corriendo python, o donde busca bibliotecas, el traductor dará un error. Esto es lo esperable, ya que se estaría tratando de importar algo que no existe.


print data.population[1][1]

Si puedes usar esa sentencia (si se imprime algo distinto a un error) entonces data.population es un arreglo. Para imprimirlo puede hacer:

    print data.population            # imprime todo el arreglo
    print data.population[:][1]    # imprime la segunda columna

Como ves, no sería necesario un ciclo.

...pero eso es lo que no se como estructurar bien el ciclo, espero puedan ayudarme ,  :banghead:

En computación no es mucho lo que hay que saber (por lo menos en algo básico).
¿Has buscado un manual python como te sugerí?
En google:
  - cargar datos csv.
  - arreglos numpy
  - imprimir datos con print

Etc.

25 Septiembre, 2015, 04:43 am
Respuesta #4

marsi

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 120
  • Karma: +0/-0
  • Sexo: Femenino
Hola, he estado revisando algunos documentos pero me han confundido un poco y no se si sea mejor abrir mi archivo cvs y luego tratar de imprimir la columna, pero no creo sea tan necesario, pues con la instrucción que me sugieres podría funcionar pero no se como puesto que con:


    print data.population            # imprime todo el arreglo pero yo solo quiero que me imprima la última columna
                                              es decir solo la cifra de la población de los 32 estados a la vez, pero esta instrucción
                                              como tal me imprime el nombre del estado y la población.
   

   y con la instrucción
   
   print data.cases                #Ocurre algo parecido me escribe todos los datos y yo solo quiero las cifras de la columna 54

Espero por favor me ayuden, gracias

25 Septiembre, 2015, 03:07 pm
Respuesta #5

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
Hola, he estado revisando algunos documentos pero me han confundido un poco y no se si sea mejor abrir mi archivo cvs y luego tratar de imprimir la columna, pero no creo sea tan necesario, pues con la instrucción que me sugieres podría funcionar
(...)

Antes de imprimir el archivo hay que leerlo, no creo que haya otro modo.

Sobre la revisión de documentos, python tiene excelente documentación. Antes de buscar en un documento cualquiera -te sugiero- revisar lo que la misma gente de python escribió, ellos sí que saben del tema:  https://www.python.org/doc/


   print data.cases                #Ocurre algo parecido me escribe todos los datos y yo solo quiero las cifras de la columna 54

Repito

    print data.population            # imprime todo el arreglo
    print data.population[:][1]    # imprime la segunda columna

25 Septiembre, 2015, 03:19 pm
Respuesta #6

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
Hola, he estado revisando algunos documentos pero me han confundido un poco y no se si sea mejor abrir mi archivo cvs y luego tratar de imprimir la columna, pero no creo sea tan necesario, pues con la instrucción que me sugieres podría funcionar
(...)

Antes de imprimir el archivo hay que leerlo, no creo que haya otro modo.

Sobre la revisión de documentos, python tiene excelente documentación. Antes de buscar en un documento cualquiera -te sugiero- revisar lo que la misma gente de python escribió, ellos sí que saben del tema:  https://www.python.org/doc/

1. Lo primero será buscar en la documentación como importar datos de un archivo cvs:  https://docs.python.org/2/library/csv.html

Siguiendo el primer ejemplo de la documentación:

Citar
import csv

with open('2014Population.csv', 'rb') as archivo_csv:
    archivo = csv.reader(archivo_csv)
    for fila in archivo:
        print fila[1]            # <<--  imprimer la segunda columna del archivo


Y así se hace con todos los temas. Teniendo claro qué hay que hacer se busca en la documentación como hacerlo.

2. Necesitas graficar algo con matplotlib. Entonces buscas la documentación oficial de la biblioteca  http://matplotlib.org/users/pyplot_tutorial.html
    Verás que trae muy buenos ejemplos.

     

25 Septiembre, 2015, 05:05 pm
Respuesta #7

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Sobre la revisión de documentos, python tiene excelente documentación.

Una copia de la de Perl...
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print

25 Septiembre, 2015, 05:27 pm
Respuesta #8

mathtruco

  • Moderador Global
  • Mensajes: 5,598
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
Sobre la revisión de documentos, python tiene excelente documentación.

Una copia de la de Perl...

No tenía idea  :o.

Me parece excelente que las buenas ideas se copien y mejoren. Puede considerarse como un tributo u homenaje, hehe.


25 Septiembre, 2015, 05:46 pm
Respuesta #9

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
No tenía idea  :o.

Me parece excelente que las buenas ideas se copien y mejoren. Puede considerarse como un tributo u homenaje, hehe.

Bueno, Perl copió a Python su sistema de orientación a objetos (a nivel del intérprete), como el mismo Larry Wall reconoció una vez. Aunque luego añadió irónicamente: "Estoy arrepentido desde entonces"  :D
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print