Skip to main content

Librería para leer y consultar estadísticas de Pokémon desde archivos CSV

Project description

Pokemon Stats Reader

PyPI version Python Versions License: MIT

Librería Python para leer y consultar estadísticas de Pokémon desde archivos CSV.

Características

  • Lectura eficiente de estadísticas desde CSV
  • Caché integrado para optimizar consultas repetidas
  • API simple e intuitiva
  • Tres métodos principales para consultar datos
  • Powered by pandas para procesamiento eficiente

Instalación

pip install pokemon-stats-reader

Uso Rápido

from pokemon_stats import PokemonStatsReader

# Crear instancia del lector
reader = PokemonStatsReader("estadisticas_grupos.csv")

# 1. Obtener lista de todos los grupos
grupos = reader.get_grupos_pokemon()
print(f"Grupos disponibles: {grupos}")

# 2. Obtener altura media de un grupo
altura = reader.get_altura_media_grupo("monster")
print(f"Altura media del grupo 'monster': {altura}")

# 3. Obtener peso medio de un grupo
peso = reader.get_peso_medio_grupo("water1")
print(f"Peso medio del grupo 'water1': {peso}")

API Reference

PokemonStatsReader(csv_path: str)

Inicializa el lector de estadísticas.

Parámetros:

  • csv_path (str): Ruta al archivo CSV con estadísticas

get_grupos_pokemon() -> List[str]

Obtiene la lista de todos los grupos de Pokémon.

Retorna:

  • List[str]: Lista con nombres de todos los grupos

Ejemplo:

grupos = reader.get_grupos_pokemon()
# ['monster', 'water1', 'bug', 'dragon', ...]

get_altura_media_grupo(grupo: str) -> Optional[float]

Obtiene la altura media de un grupo específico.

Parámetros:

  • grupo (str): Nombre del grupo

Retorna:

  • float: Altura media del grupo
  • None: Si el grupo no existe

Ejemplo:

altura = reader.get_altura_media_grupo("monster")
# 12.5

get_peso_medio_grupo(grupo: str) -> Optional[float]

Obtiene el peso medio de un grupo específico.

Parámetros:

  • grupo (str): Nombre del grupo

Retorna:

  • float: Peso medio del grupo
  • None: Si el grupo no existe

Ejemplo:

peso = reader.get_peso_medio_grupo("water1")
# 425.7

Formato del CSV

El archivo CSV debe tener el siguiente formato:

grupo,cantidad_pokemon,altura_media,peso_medio
monster,45,12.5,850.3
water1,38,9.2,425.7
bug,28,6.8,145.2

Columnas requeridas:

  • grupo: Nombre del grupo de huevo
  • cantidad_pokemon: Número de Pokémon en el grupo
  • altura_media: Altura promedio del grupo
  • peso_medio: Peso promedio del grupo

Ejemplo Completo

from pokemon_stats import PokemonStatsReader

# Inicializar lector
reader = PokemonStatsReader("estadisticas_grupos.csv")

# Obtener y mostrar todos los grupos
print("=" * 60)
print("GRUPOS DE POKÉMON DISPONIBLES")
print("=" * 60)

grupos = reader.get_grupos_pokemon()
for grupo in grupos:
    altura = reader.get_altura_media_grupo(grupo)
    peso = reader.get_peso_medio_grupo(grupo)
    print(f"\n{grupo.upper()}")
    print(f"  Altura media: {altura}")
    print(f"  Peso medio: {peso}")

print("=" * 60)

Características Avanzadas

Caché Automático

La librería implementa caché automático para optimizar consultas repetidas:

reader = PokemonStatsReader("datos.csv")

# Primera llamada: lee del CSV
altura1 = reader.get_altura_media_grupo("monster")  # ~10ms

# Segunda llamada: usa caché
altura2 = reader.get_altura_media_grupo("monster")  # ~0.1ms

Obtener Todas las Estadísticas

# Obtener DataFrame completo
df = reader.get_all_stats()
print(df)

# Obtener estadísticas de un grupo específico
stats = reader.get_grupo_stats("monster")
print(stats)
# {'grupo': 'monster', 'cantidad_pokemon': 45, 'altura_media': 12.5, 'peso_medio': 850.3}

Requisitos

  • Python >= 3.7
  • pandas >= 2.0.0

Licencia

MIT License - ver archivo LICENSE para detalles.

Contribuir

Las contribuciones son bienvenidas! Por favor:

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Testing

# Instalar dependencias de desarrollo
pip install pytest pytest-cov

# Ejecutar tests
pytest tests/

# Ejecutar tests con cobertura
pytest tests/ --cov=pokemon_stats --cov-report=html

Soporte

Si encuentras algún problema o tienes sugerencias:

Roadmap

  • Soporte para múltiples formatos (JSON, XML)
  • CLI para consultas desde terminal
  • Visualizaciones gráficas
  • Soporte async para archivos grandes

Autor

Tu Nombre - GitHub

Agradecimientos

  • Datos obtenidos de PokeAPI
  • Inspirado en la comunidad de Pokémon

¿Te gusta este proyecto? ⭐ Dale una estrella en GitHub!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pokemon_stats_reader-0.1.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pokemon_stats_reader-0.1.1-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file pokemon_stats_reader-0.1.1.tar.gz.

File metadata

  • Download URL: pokemon_stats_reader-0.1.1.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for pokemon_stats_reader-0.1.1.tar.gz
Algorithm Hash digest
SHA256 43497c62dc9d03220c642f6c23239693e09926b2a557ba516c20a09aa3bc4e51
MD5 22b02e5e776ebebca7c0b92df5e45928
BLAKE2b-256 3add310c1e32b972a0603fecece82e0eb0e40424686236b1a2388b92d88294b4

See more details on using hashes here.

File details

Details for the file pokemon_stats_reader-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pokemon_stats_reader-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6b8f5822829cd0ca27a4565af83d4bafc30357b3c02e2af42449b7298541427f
MD5 6f75010ae4f4cfe521ee9a3e87eae9a6
BLAKE2b-256 d468eb5451863f3a75d7aec4ec381e64262c7aca4469b81a19676b8fb1679ea5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page