Skip to content

Commit a952b84

Browse files
authored
Merge pull request #31 from tacosdedatos/agrega-df
Agrega los atributos `df` y `subdivisiones_df` a `Pais`. Estos son DataFrames con la información del país y sus subdivisiones, respectivamente.
2 parents 6be744a + 1c5bb3a commit a952b84

File tree

4 files changed

+159
-4
lines changed

4 files changed

+159
-4
lines changed

latam/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@
1111
__version__ = version(__name__)
1212
except PackageNotFoundError: # pragma: no cover
1313
__version__ = "unknown"
14+
15+
16+
from . import paises

latam/entidades.py

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
from typing import Dict, List, Optional, Tuple
44

55
import datetime as dt
6-
from dataclasses import dataclass, field
6+
from dataclasses import dataclass
7+
8+
import pandas as pd
79

810

911
@dataclass
@@ -140,6 +142,10 @@ class Pais:
140142
Huso horarios de la subdivisión. En general, cada subdivisión tiene un solo huso horario pero no siempre.
141143
subdivisiones: Dict[str, Subdivision]
142144
Diccionario de subdivisiones que comprenden el país.
145+
df: pandas.DataFrame
146+
Un DataFrame de pandas de una fila con la información del país.
147+
subdivisiones_df: pandas.DataFrame
148+
Un DataFrame de pandas con la información de cada subdivision el país.
143149
"""
144150

145151
nombre: str
@@ -160,3 +166,60 @@ class Pais:
160166

161167
def __repr__(self):
162168
return f"<{self.__class__.__name__}:{self.nombre_comun}>"
169+
170+
def _pais_df(self) -> pd.DataFrame:
171+
pais_data = {
172+
"abrev": self.abrev,
173+
"alpha_2": self.alpha_2,
174+
"alpha_3": self.alpha_3,
175+
"capital": self.capital,
176+
"capital_horario": self.capital_horario,
177+
"capital_lat": self.capital_latlong[0],
178+
"capital_long": self.capital_latlong[1],
179+
"codigo": self.codigo,
180+
"es_independiente": self.es_independiente,
181+
"es_isla": self.es_isla,
182+
"fecha_independencia": self.fecha_independencia,
183+
"huso_horario": self.husos_horarios,
184+
"nombre": self.nombre,
185+
"nombre_comun": self.nombre_comun,
186+
"nombre_pronunciacion_local": self.nombre_pronunciacion_local,
187+
"subdivisiones": [
188+
subdivision.nombre
189+
for subdivision in self.subdivisiones.values()
190+
],
191+
}
192+
return pd.DataFrame(data=[pais_data])
193+
194+
def _subdivision_df(self) -> pd.DataFrame:
195+
subdivision_data = []
196+
for key, subdivision in self.subdivisiones.items():
197+
subdivision_data.append(
198+
{
199+
"abrev": subdivision.abrev,
200+
"capital": subdivision.capital.nombre,
201+
"capital_horario": subdivision.capital_horario,
202+
"capital_lat": subdivision.capital_latlong[0],
203+
"capital_long": subdivision.capital_latlong[1],
204+
"alpha_2": subdivision.codigo,
205+
"codigo_numerico": subdivision.codigo_numerico,
206+
"es_contigua": subdivision.es_contigua,
207+
"es_isla": subdivision.es_isla,
208+
"fecha_de_fundacion": subdivision.fecha_de_fundacion,
209+
"huso_horario": subdivision.husos_horarios[0],
210+
"nombre": subdivision.nombre,
211+
"nombre_comun": subdivision.nombre_comun,
212+
"nombre_pronunciacion_local": subdivision.nombre_pronunciacion_local,
213+
"nombres_nativos": ",".join(
214+
[
215+
f"{value} ({key})"
216+
for key, value in subdivision.nombres_nativos.items()
217+
]
218+
),
219+
}
220+
)
221+
return pd.DataFrame(subdivision_data)
222+
223+
def __post_init__(self):
224+
self.df = self._pais_df()
225+
self.subdivisiones_df = self._subdivision_df()

poetry.lock

Lines changed: 90 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "poetry.masonry.api"
66

77
[tool.poetry]
88
name = "latam"
9-
version = "0.1.1"
9+
version = "0.1.2"
1010
description = "Un paquete para trabajar facilmente con metadatos de paises en latinoamerica."
1111
readme = "README.md"
1212
authors = [
@@ -37,6 +37,7 @@ importlib_metadata = {version = "^2.0.0", python = "<3.8"}
3737
typer = {extras = ["all"], version = "^0.3.2"}
3838
rich = "^8.0.0"
3939
pytz = "^2020.1"
40+
pandas = "^1.1.3"
4041

4142
[tool.poetry.dev-dependencies]
4243
darglint = "^1.5.4"

0 commit comments

Comments
 (0)