Commit 0ebf31be authored by David Ramos Salamanca's avatar David Ramos Salamanca
Browse files

complete dataset

parent cc9161d5
......@@ -14275,7 +14275,7 @@ a.anchor-link {
</div>
<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt">
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown">
<h2 id="Soluci&#243;n-(sin-pandas)">Soluci&#243;n (sin pandas)<a class="anchor-link" href="#Soluci&#243;n-(sin-pandas)">&#182;</a></h2>
<h2 id="Soluci&#243;n">Soluci&#243;n<a class="anchor-link" href="#Soluci&#243;n">&#182;</a></h2>
</div>
</div>
<div class="jp-Cell-inputWrapper"><div class="jp-InputPrompt jp-InputArea-prompt">
......@@ -14303,7 +14303,7 @@ a.anchor-link {
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[2]:</div>
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">loadtxt</span><span class="p">(</span><span class="s1">&#39;p_info.csv&#39;</span><span class="p">,</span> <span class="n">delimiter</span> <span class="o">=</span> <span class="s1">&#39;</span><span class="se">\t</span><span class="s1">&#39;</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="s1">&#39;str&#39;</span><span class="p">,</span> <span class="n">unpack</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">loadtxt</span><span class="p">(</span><span class="s1">&#39;p_info.csv&#39;</span><span class="p">,</span> <span class="n">delimiter</span> <span class="o">=</span> <span class="s1">&#39;,&#39;</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="s1">&#39;str&#39;</span><span class="p">,</span> <span class="n">unpack</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</pre></div>
 
</div>
......@@ -14446,6 +14446,85 @@ usuario: navasa
► especialidad : física de sistemas complejos
► institucion : Universidad Nacional de Colombia
► hobbie : crossfit
usuario: bullam
► nombre : Miguel
► apellido : Bulla
► pais : Colombia
► residencia : Bogotá
► edad : 25
► especialidad : física
► institucion : Universidad Nacional de Colombia
► hobbie : series
usuario: ladinoj
► nombre : Jose
► apellido : Ladino
► pais : Colombia
► residencia : Bogotá
► edad : 24
► especialidad : mecánica celeste relativista
► institucion : Universidad Nacional de Colombia
► hobbie : skate
</pre>
</div>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell ">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[8]:</div>
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">bycountry</span><span class="p">(</span><span class="n">compas</span><span class="p">,</span><span class="s1">&#39;Venezuela&#39;</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>usuario: ramosm
► nombre : María
► apellido : Ramos
► pais : Venezuela
► residencia : Mérida
► edad : 23
► especialidad : física
► institucion : Universidad de los Andes
► hobbie : escribir
usuario: arturos
► nombre : Arturo
► apellido : Sanchez
► pais : Venezuela
► residencia : Ginebra
► edad : 34
► especialidad : física
► institucion : LAPP
► hobbie : montar bicicleta
usuario: pierre_r_pujol
► nombre : Pierre
► apellido : Pujol
► pais : Venezuela
► residencia : Toulouse
► edad : 52
► especialidad : física teórica
► institucion : Universidad de Toulouse 3
► hobbie : fotografía
</pre>
</div>
</div>
......@@ -14463,7 +14542,7 @@ usuario: navasa
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs ">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[8]:</div>
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[9]:</div>
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">age_average</span><span class="p">(</span><span class="n">dic</span><span class="p">):</span>
......@@ -14481,7 +14560,7 @@ usuario: navasa
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell ">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[9]:</div>
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[10]:</div>
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">age_average</span><span class="p">(</span><span class="n">compas</span><span class="p">)</span>
......@@ -14500,13 +14579,13 @@ usuario: navasa
<div class="jp-OutputArea-child">
 
<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[9]:</div>
<div class="jp-OutputPrompt jp-OutputArea-prompt">Out[10]:</div>
 
 
 
 
<div class="jp-RenderedText jp-OutputArea-output jp-OutputArea-executeResult" data-mime-type="text/plain">
<pre>22.5</pre>
<pre>27.727272727272727</pre>
</div>
 
</div>
......@@ -14518,7 +14597,7 @@ usuario: navasa
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs ">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[10]:</div>
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[11]:</div>
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">institutions</span><span class="p">(</span><span class="n">dic</span><span class="p">):</span>
......@@ -14537,7 +14616,7 @@ usuario: navasa
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell ">
<div class="jp-Cell-inputWrapper">
<div class="jp-InputArea jp-Cell-inputArea">
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[11]:</div>
<div class="jp-InputPrompt jp-InputArea-prompt">In&nbsp;[12]:</div>
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
<div class="CodeMirror cm-s-jupyter">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">institutions</span><span class="p">(</span><span class="n">compas</span><span class="p">)</span>
......@@ -14561,9 +14640,13 @@ usuario: navasa
 
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain">
<pre>Universidad Nacional de Colombia
Universidad del Valle
LAPP
Universidad Nacional Mayor de San Marcos
Universidad Industrial de Santander
Universidad de Toulouse 3
Universidad Nacional de Ingeniería
Universidad de los Andes
Universidad del Valle
</pre>
</div>
</div>
......
%% Cell type:markdown id: tags:
# David Ramos - UIS
%% Cell type:markdown id: tags:
## Problema: Amigos congueros
%% Cell type:markdown id: tags:
**Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario en mattermost, edad, país de origen, ciudad donde residen, su especialidad científica, nombre del instituto en que estudian/laboran, y un hobbie o afición.**
%% Cell type:markdown id: tags:
## Solución (sin pandas)
## Solución
%% Cell type:markdown id: tags:
Después de recopilar la información, creé un csv con todos los datos llamado *p_info.csv* y lo importé usando numpy.
%% Cell type:code id: tags:
``` python
import numpy as np
```
%% Cell type:code id: tags:
``` python
data = np.loadtxt('p_info.csv', delimiter = '\t', dtype='str', unpack=True)
data = np.loadtxt('p_info.csv', delimiter = ',', dtype='str', unpack=True)
```
%% Cell type:markdown id: tags:
La estrategia es crear una lista de *keys* que sean los usuarios de Mattermost y una lista de *values* que sean diccionarios con los otros datos.
%% Cell type:code id: tags:
``` python
users = data[0][1:] # lista de usuarios usando slicing
```
%% Cell type:code id: tags:
``` python
info = [{data[i][0]:data[i][j] for i in range(1,len(data[1:])+1)} for j in range(1,len(data[0][1:])+1)]
# lista de diccionarios usando un dic-comprehension dentro de una list-comprehension
```
%% Cell type:markdown id: tags:
Ahora, usando el constructor *dic()* y la función *zip()* se puede crear el diccionario deseado [[1](https://stackoverflow.com/questions/209840/how-do-i-convert-two-lists-into-a-dictionary)].
%% Cell type:code id: tags:
``` python
compas = dict(zip(users,info))
```
%% Cell type:markdown id: tags:
**Cree una función que reciba como entrada el diccionario y un país de origen, y retorne las informaciones completas de todas las personas de ese país, tabuladas en una forma fácil de entender.**
%% Cell type:code id: tags:
``` python
def bycountry(dic,country):
# obtengo los usuarios de las personas nacidas en ese pais
compatriots = [user for user in compas.keys() if compas[user]['pais'] == country]
# voy a imprimir verticalmente porque no cabe de manera horizontal
for compatriot in compatriots:
print('usuario: ' + compatriot)
for header in compas[compatriot].keys():
print(' \u25ba ' + header + ' : ' + compas[compatriot][header])
```
%% Cell type:code id: tags:
``` python
bycountry(compas,'Colombia')
```
%% Output
usuario: nicole
► nombre : Nicole
► apellido : Hernández
► pais : Colombia
► residencia : Bucaramanga
► edad : 23
► especialidad : análisis de imagen médica
► institucion : Universidad Industrial de Santander
► hobbie : dibujar
usuario: vargass
► nombre : Sasiri
► apellido : Vargas
► pais : Colombia
► residencia : Cali
► edad : 20
► especialidad : sistemas de reacción difusión unidimensionales
► institucion : Universidad del Valle
► hobbie : bailar
usuario: navasa
► nombre : Alfonso
► apellido : Navas
► pais : Colombia
► residencia : Bogotá
► edad : 24
► especialidad : física de sistemas complejos
► institucion : Universidad Nacional de Colombia
► hobbie : crossfit
usuario: bullam
► nombre : Miguel
► apellido : Bulla
► pais : Colombia
► residencia : Bogotá
► edad : 25
► especialidad : física
► institucion : Universidad Nacional de Colombia
► hobbie : series
usuario: ladinoj
► nombre : Jose
► apellido : Ladino
► pais : Colombia
► residencia : Bogotá
► edad : 24
► especialidad : mecánica celeste relativista
► institucion : Universidad Nacional de Colombia
► hobbie : skate
%% Cell type:code id: tags:
``` python
bycountry(compas,'Venezuela')
```
%% Output
usuario: ramosm
► nombre : María
► apellido : Ramos
► pais : Venezuela
► residencia : Mérida
► edad : 23
► especialidad : física
► institucion : Universidad de los Andes
► hobbie : escribir
usuario: arturos
► nombre : Arturo
► apellido : Sanchez
► pais : Venezuela
► residencia : Ginebra
► edad : 34
► especialidad : física
► institucion : LAPP
► hobbie : montar bicicleta
usuario: pierre_r_pujol
► nombre : Pierre
► apellido : Pujol
► pais : Venezuela
► residencia : Toulouse
► edad : 52
► especialidad : física teórica
► institucion : Universidad de Toulouse 3
► hobbie : fotografía
%% Cell type:markdown id: tags:
**Busque una forma de calcular, a partir del diccionario, el promedio de edad de todas las personas en él, y una forma de mostrar todas las instituciones (sin repetición).**
%% Cell type:code id: tags:
``` python
def age_average(dic):
# recupero la edad de cada persona (convertida a un entero) usando una list-comprehension
ages = [int(value['edad']) for value in dic.values()]
# imprimo el promedio
return sum(ages)/len(ages)
```
%% Cell type:code id: tags:
``` python
age_average(compas)
```
%% Output
22.5
27.727272727272727
%% Cell type:code id: tags:
``` python
def institutions(dic):
# recupero las instituciones usando una list-comprehension y elimino duplicados convirtiéndola a un conjunto
insts = set([value['institucion'] for value in dic.values()])
# imprimo en distintas filas por claridad
for inst in insts:
print(inst)
```
%% Cell type:code id: tags:
``` python
institutions(compas)
```
%% Output
Universidad Nacional de Colombia
Universidad del Valle
LAPP
Universidad Nacional Mayor de San Marcos
Universidad Industrial de Santander
Universidad de Toulouse 3
Universidad Nacional de Ingeniería
Universidad de los Andes
Universidad del Valle
......
usuario nombre apellido pais residencia edad especialidad institucion hobbie
nicole Nicole Hernández Colombia Bucaramanga 23 análisis de imagen médica Universidad Industrial de Santander dibujar
vargass Sasiri Vargas Colombia Cali 20 sistemas de reacción difusión unidimensionales Universidad del Valle bailar
ramosm María Ramos Venezuela Mérida 23 física Universidad de los Andes escribir
navasa Alfonso Navas Colombia Bogotá 24 física de sistemas complejos Universidad Nacional de Colombia crossfit
usuario,nombre,apellido,pais,residencia,edad,especialidad,institucion,hobbie
nicole,Nicole,Hernández,Colombia,Bucaramanga,23,análisis de imagen médica,Universidad Industrial de Santander,dibujar
vargass,Sasiri,Vargas,Colombia,Cali,20,sistemas de reacción difusión unidimensionales,Universidad del Valle,bailar
ramosm,María,Ramos,Venezuela,Mérida,23,física,Universidad de los Andes,escribir
navasa,Alfonso, Navas,Colombia,Bogotá,24,física de sistemas complejos,Universidad Nacional de Colombia,crossfit
aldo,Aldo,Arriola,Perú,Lima,28,magnetismo,Universidad Nacional de Ingeniería,música
bullam,Miguel,Bulla,Colombia,Bogotá,25,física,Universidad Nacional de Colombia,series
fernandezn,Nicolás,Fernández,Argentina,Lima,27,física,Universidad Nacional Mayor de San Marcos,piano
ladinoj,Jose,Ladino,Colombia,Bogotá,24,mecánica celeste relativista,Universidad Nacional de Colombia,skate
omarasto,Omar,Asto,Perú,Lima,25,física de altas energías,Universidad Nacional de Ingeniería,leer periódico
arturos,Arturo,Sanchez,Venezuela,Ginebra,34,física,LAPP,montar bicicleta
pierre_r_pujol,Pierre,Pujol,Venezuela,Toulouse,52,física teórica,Universidad de Toulouse 3,fotografía
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment