I am working on the file "Devel/V05/MemberLoads.ipynb".
The first task is:
Load Type LVL
Load type LVL represents a linearly varying distributed load actiong over a portion of the span:
Can you write Python code for it?

class LVL(MemberLoad):

    TABLE_MAP = {'w1':'W1','w2':'W2','a':'A','b':'B','c':'C'}

    def __init__(self,L,w1,w2=None,a=None,b=None,c=None):
        if a is not None and b is not None and c is not None and L != (a+b+c):
            raise Exception('Cannot specify all of a, b & c')
        if a is None:
            if b is not None and c is not None:
                a = L - (b+c)
            else:
                a = 0.
        if c is None:
            if b is not None:
                c = L - (a+b)
            else:
                c = 0.
        if b is None:
            b = L - (a+c)
        if w2 is None:
            w2 = w1
        self.L = L
        self.w1 = w1
        self.w2 = w2
        self.a = a
        self.b = b
        self.c = c

    def fefs(self):
        """This mess was generated via sympy.  See:
        ../../examples/cive3203-notebooks/FEM-2-Partial-lvl.ipynb """
        L = float(self.L)
        a = self.a
        b = self.b
        c = self.c
        w1 = self.w1
        w2 = self.w2
        m2 = -b*(15*a*b**2*w1 + 5*a*b**2*w2 + 40*a*b*c*w1 + 20*a*b*c*w2 + 30*a*c**2*w1 + 30*a*c**2*w2 + 3*b**3*w1 + 2*b**3*w2 + 10*b**2*c*w1 + 10*b**2*c*w2 + 10*b*c**2*w1 + 20*b*c**2*w2)/(60.*(a + b + c)**2)
        m5 = b*(20*a**2*b*w1 + 10*a**2*b*w2 + 30*a**2*c*w1 + 30*a**2*c*w2 + 10*a*b**2*w1 + 10*a*b**2*w2 + 20*a*b*c*w1 + 40*a*b*c*w2 + 2*b**3*w1 + 3*b**3*w2 + 5*b**2*c*w1 + 15*b**2*c*w2)/(60.*(a + b + c)**2)
        v4 = -(b*w1*(a + b/2.) + b*(a + 2*b/3.)*(-w1 + w2)/2. + m2 + m5)/L
        v1 = -b*(w1 + w2)/2. - v4
        return EF(0.,v1,m2,0.,v4,m5)

    def __repr__(self):
        return '{}(L={},w1={},w2={},a={},b={},c={})'\
               .format(self.__class__.__name__,self.L,self.w1,self.w2,self.a,self.b,self.c)

    def shear(self,x):
        c = (x>self.a+self.b)    # 1 if x > A+B else 0
        l = (x-self.a)*(x>self.a)*(1.-c) + self.b*c  # length of load portion to the left of x
        return -(self.w1 + (self.w2-self.w1)*(l/self.b)/2.)*l

   ...


I am working on the file "Devel/V05/MemberLoads.ipynb".
The first task is:
Load Type PL
Load type PL represents a single concentrated force, of magnitude P, at a distance a from the j-end:
Can you write Python code for it?

class PL(MemberLoad):

    TABLE_MAP = {'P':'W1','a':'A'}

    def __init__(self,L,P,a):
        self.L = L
        self.P = P
        self.a = a

    def fefs(self):
        P = self.P
        L = self.L
        a = self.a
        b = L-a
        m2 = -P*a*b*b/(L*L)
        m5 = P*a*a*b/(L*L)
        v1 = (m2 + m5 - P*b)/L
        v4 = -(m2 + m5 + P*a)/L
        return EF(0.,v1,m2,0.,v4,m5)

    def shear(self,x):
        return -self.P*(x>self.a)

    def moment(self,x):
        return self.P*(x-self.a)*(x>self.a)

    def __repr__(self):
        return '{}(L={},P={},a={})'.format(self.__class__.__name__,self.L,self.P,self.a)

##test:
p = PL(1000.,300.,400.)
p, p.fefs()

@extend
class MemberLoad:

    EPSILON = 1.0E-6

@extend
class PL:

    @property
    def vpts(self):
        return (self.a-self.EPSILON,self.a+self.EPSILON,0)

    @property
    def mpts(self):
        return (self.a,None,1)

##test:
p = PL(1000.,300.,400.)
p.vpts

##test:
p.mpts


I am working on the file "Devel/V05/MemberLoads.ipynb".
The first task is:
Load Type PLA
Load type PLA represents a single concentrated force applied parallel to the length
of the segment (producing only axial forces).
Can you write Python code for it?

class PLA(MemberLoad):

    TABLE_MAP = {'P':'W1','a':'A'}

    def __init__(self,L,P,a):
        self.L = L
        self.P = P
        self.a = a

    def fefs(self):
        P = self.P
        L = self.L
        a = self.a
        c0 = -P*(L-a)/L
        c3 = -P*a/L
        return EF(c0=c0,c3=c3)

    def shear(self,x):
        return 0.

    def moment(self,x):
        return 0.

    def __repr__(self):
        return '{}(L={},P={},a={})'.format(self.__class__.__name__,self.L,self.P,self.a)

##test:
p = PLA(10.,P=100.,a=4.)
p.fefs()

@extend
class PLA:

    @property
    def vpts(self):
        return (0.,self.L,0)

    @property
    def mpts(self):
        return (0.,self.L,0)


I am working on the file "Devel/V05/MemberLoads.ipynb".
The first task is:
Now define properties so that the individual components can be accessed like name atrributes,
eg: 'ef.m3' or 'ef.m5 = 100.'.
Can you write Python code for it?

@extend
class EF:

    @property
    def c0(self):
        return self.fefs[0,0]

    @c0.setter
    def c0(self,v):
        self.fefs[0,0] = v

    @property
    def v1(self):
        return self.fefs[1,0]

    @v1.setter
    def v1(self,v):
        self.fefs[1,0] = v

    @property
    def m2(self):
        return self.fefs[2,0]

    @m2.setter
    def m2(self,v):
        self.fefs[2,0] = v

    @property
    def c3(self):
        return self.fefs[3,0]

    @c3.setter
    def c3(self,v):
        self.fefs[3,0] = v

    @property
    def v4(self):
        return self.fefs[4,0]

    @v4.setter
    def v4(self,v):
        self.fefs[4,0] = v

    @property
    def m5(self):
        return self.fefs[5,0]

    @m5.setter
    def m5(self,v):
        self.fefs[5,0] = v

##test:
f = EF(10.,11,12,13,15,15)
f, f.c0, f.v1, f.m2, f.c3, f.v4, f.m5

##test:
f.c0 *= 2
f.v1 *= 3
f.m2 *= 4
f.c3 *= 5
f.v4 *= 6
f.m5 *= 7
f


I am working on the file "Devel/V05/Testing-Stuff.ipynb".
The first task is:
'test' magic
Can you write Python code for it?

from IPython.core.magic import register_cell_magic

@register_cell_magic('test')
def _test(line,cell):
    print('Line:',line)
    print('Cell:',cell)
    return 13

%%test foo be doo
a + b
c

%%time
n = 1000000
sum(range(n))

%lsmagic

cc = compile('''a=3;
b=4;
c=a*b;
c*10''','here','exec')

eval(cc)

cc

cc.co_code

dir(cc)

cc.co_filename


I am working on the file "Devel/V05/Testing-Stuff.ipynb".
The first task is:
No args to @extend?
The following trick might be usable to extract the old class when its not
specifically given to @extend.
Can you write Python code for it?

class Zoop:
    pass

Zoop.__module__

import sys
m = sys.modules['__main__']

m

getattr(m,'Zoop')

c = Zoop
m.__dict__[c.__name__]


I am working on the file "DeviceCaracterization/FirstCharacterization/first characterization.ipynb".
The first task is:
Let's average the noise over the first Nempty lines
Can you write Python code for it?

FFT = np.zeros(SizeFFT)
for k in range(Nempty):
    FFT = FFT + np.abs(np.fft.fft(plate[k]))
FFT = FFT/Nempty

for i in range(10):
    FFT[i] = 0
    FFT[-i] = 0

plt.plot(XScale,np.abs(FFT),"g")
plt.xlabel('Frequency')
plt.ylabel("FFT'ed")
plt.show()

# Let's save the noise pattern
np.savez_compressed("plate.noise",XScale=XScale,FFT=FFT)

# We observe an interesting pattern
plt.plot(XScale[20:400],np.abs(FFT[20:400]),"g")
plt.xlabel('Frequency')
plt.ylabel("FFT'ed")
plt.show()


I am working on the file "DeviceCaracterization/FirstCharacterization/first characterization.ipynb".
The first task is:
Result : actually the data is coded on 14 bits. But the reference of the red pitaya is 20V and the input is only 1V So on the +/-8192 possible values only 410 are useful. Some noise is visible so i computed the SNR. For that i took the plate image and computed the variance on the half top. It give me the power of the noise. I Then took max and min of the whole signal to compute max amplitude and thus the max signal power. This give 40.4 db of SNR. This agreed s with the value stated by jerome.
Conclusion : If the noise we can see is analog noise, an ADC of 10bit should be enough (60 dB of dynamic range for 40db of SNR). Moreover, if we don't find a way of fully use the 14bits of the red pytaia, this will still be a improvement since we pass from +/-410 values to +/-512.
The hand
Can you write Python code for it?

# plot it for fun

plt.figure(3)
plt.title('hand envelope')
plt.imshow(abs(sp.hilbert(hand)), cmap='gray', aspect='auto')
plt.colorbar()
plt.xlabel('samples')
plt.ylabel('lines')
plt.show()


I am working on the file "DeviceCaracterization/FirstCharacterization/first characterization.ipynb".
The first task is:
What does the noise look like?
Basing ourselves on the fact that the Acquisition rate is 125MHz and Decimation 8.
Can you write Python code for it?

ACQ = 125000000
DECIMATION = 8
SizeFFT = len(plate[Nempty])

XScale = range(SizeFFT)

print len(XScale),SizeFFT
for i in range(SizeFFT):
    XScale[i] = (1.0*ACQ/DECIMATION)*float(XScale[i])/(1.0*SizeFFT)

plt.figure(3)
FFT = np.fft.fft(plate[Nempty])
# We clean the low frequencies
for i in range(10):
    FFT[i]=0
    FFT[-i]=0

plt.plot(XScale,np.real(FFT),"r")
plt.plot(XScale,np.imag(FFT),"b")
plt.plot(XScale,np.abs(FFT),"g")
plt.xlabel('Frequency')
plt.ylabel("FFT'ed")
plt.show()


I am working on the file "Devoirs/devoir1-solutions.ipynb".
The first task is:
Le vecteur $w=(0, -6, -1, -8, 10)$ est-il dans ce sous-espace vectoriel?
Can you write Python code for it?


I am working on the file "Devoirs/devoir1-solutions.ipynb".
The first task is:
Question 3
Tracer la surface de Dini
dont les équations paramétriques sont:
\begin{align}
    x&=a\cos\left(u\right)\sin\left(v\right)\
    y&=a\sin\left(u\right)\sin\left(v\right)\
    z&=a\left(\cos\left(v\right)+\ln\left(\tan\left(\frac{v}{2}\right)\right)\right)+bu
\end{align}
pour $a=1$, $b=1$ sur les intervalles $0\leq u \leq 5\pi$ et $0.01 \leq v\leq
1$.
Can you write Python code for it?

%matplotlib inline
from sympy.plotting import plot3d_parametric_surface
from sympy import cos,sin,tan,log,pi
from sympy.abc import u,v
plot3d_parametric_surface(cos(u)*sin(v), sin(u)*sin(v),cos(v)+log(tan(v/2))+u, (u,0,5*pi), (v,0.01,1))


I am working on the file "Devoirs/devoir1-solutions.ipynb".
The first task is:
Question 4
Soit $p(x)=- x^{4} + 28 x^{3} - 221 x^{2} + 350 x + 600$ un polynôme. Trouver
l'ensemble des valeurs de $x$ telles que $p(x)$ atteint un optimum local et dire s'il s'agit d'un minimum ou un maximum.
Can you write Python code for it?

from sympy.abc import x
p = -x**4+28*x**3-221*x**2+350*x+600
p

from sympy import diff,solve
p_optimum = solve(diff(p, x), x)
p_optimum

from sympy import N
map(N, p_optimum)

p_xx = diff(p, x, x)
[(a, p_xx.subs(x, a).n()) for a in sorted(p_optimum)]


I am working on the file "Devoirs/devoir1-solutions.ipynb".
The first task is:
Question 5
On considère la fonction $f(x)=x^{x\over 1-x}$ pour tout réel $x>0$. Donner le
domaine de définition de $f$.
Can you write Python code for it?

from sympy import oo
from sympy.abc import x
f = x**(x/(1-x))

f.subs(x,0), f.subs(x,1), f.subs(x,oo)


I am working on the file "Devoirs/devoir1-solutions.ipynb".
The first task is:
Réponse: NON
Est-ce qu'un polygone régulier à 88305875025920 côtés est constructible?
Can you write Python code for it?


I am working on the file "Devoirs/devoir1-solutions.ipynb".
The first task is:
Réponse: le domaine est $[0, 1[\cup]1,\infty[$ si on accepte que $0^0=1$ est bien défini.
Calculer les limites de la fonction $f$ aux bornes des intervalles qui composent le domaine de $f$.
Can you write Python code for it?

from sympy import limit
limit(f, x, 0)

limit(f, x, 1)

limit(f, x, oo)


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
D'abord, on remarque qu'il n'existe pas de quadruplet de nombre premiers $p$, $p+2$, $p+4$, $p+6$, car l'un d'eux doit être divisible par trois (en effet, leurs valeurs modulo 3 sont $p$, $p+2$, $p+1$). Comme 3 est le seul nombre premier divisible par trois, il faudrait que le quadruplet contienne le nombre 3. Or un tel quadruplet n'existe pas.
Can you write Python code for it?

def triplets_nombre_premier(n):
    L = []
    p = 3
    while len(L) < n:
        if est_premier(p) and est_premier(p+6):
            if est_premier(p+2):
                L.append((p, p+2, p+6))
            elif est_premier(p+4):
                L.append((p, p+4, p+6))
        p += 2
    return L

triplets_nombre_premier(10)


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
On vérifie en utilisant sympy que ce calcul est correct:
Can you write Python code for it?


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
On vérifie en utilisant sympy que le calcul est correct:
Can you write Python code for it?

from sympy import Matrix
Mx = Matrix(X)
My = Matrix(Y)
Mx + My


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
On vérifie que la fonction est_premier fonctionne bien:
Can you write Python code for it?

for i in range(100):
    if est_premier(i):
        print(i, end=', ')


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
Question 1
Can you write Python code for it?


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
Question 2
Can you write Python code for it?

def produit(A, B):
    C = []
    for i in range(4):
        row = []
        for j in range(4):
            row.append(sum(A[i][k]*B[k][j] for k in range(4)))
        C.append(row)
    return C

produit(X,Y)


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
Question 3
Can you write Python code for it?

from math import sqrt
def est_premier(n):
    if n == 0 or n == 1:
        return False
    for i in range(2, int(sqrt(n))+1):
        if n % i == 0:
            return False
    return True


I am working on the file "Devoirs/devoir2-solutions.ipynb".
The first task is:
Question 4
Can you write Python code for it?

def triplets_pythagore(n):
    L = []
    for c in range(1, n+1):
        for b in range(1, c+1):
            for a in range(1, b+1):
                if a**2+b**2 == c**2:
                    L.append((a,b,c))
    return L

triplets_pythagore(30)


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
Actividad 1 : Ejercicios de Programacion
Meta: Obtener confianza con Python.
1.a) Usa un ciclo-for e imprime tus platillos bolivianos favoritos
1.b) Crea un arreglo de numeros aleatorios de tamano $n$
1.c) Encapsula la funcion pasada en una funcion
1.d)  Grafica un histograma de numeros aleatorios con $n=10,50,100,1k,10k$
Para graficar histogramas usa plt.hist().
Extra: Sumatoria de ondas
Extra: Mas cosas para darle sabor
Celdas de Texto: Latex & Markdown
Celdas se crean por default como celdas de codigo, pero se pueden cambiar.
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.

In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
The code for this cell is:
```markdown
Text Cells: Latex & Markdown
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.

In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
```
Images
We can work with images (JPEG, PNG) and SVG via the Image and SVG class.
Can you write Python code for it?

from IPython.display import Image
Image(filename='files/large-hadron-collider.jpg')


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
Doble!
Can you write Python code for it?

for i in a_list:
    for j in a_list:
        print i, j
print("Fin!")


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
Que tal funciones?
Can you write Python code for it?

# La definimos..

def reordenar(lista):
    val=random.sample(lista,1)
    return val

# la llamamos
print(reordenar(numeros))
print(reordenar(numeros))


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
Resetear
Puedes resetear usando el boton <button class='btn btn-default btn-xs'><i class='fa fa-repeat icon-repeat'></i></button>.
Python Basico
Lists and Arrays (Listas y arreglos)
Can you write Python code for it?

a_list = [ "vaca", "taco", "gato"] #list
print(a_list)


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
Videos?
Can you write Python code for it?

from IPython.display import YouTubeVideo
#https://www.youtube.com/watch?v=_6uKZWnJLCM
YouTubeVideo('_6uKZWnJLCM')


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
o podemos usar el modulo Numpy para arreglos numericos (Protip: quieres saber mas? dale click a la imagen)
Can you write Python code for it?

import numpy as np

# lista de numeros del 0 a 100, en incrementos de 1
numeros = np.arange(0,100,1)
print(numeros)


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
podemos agregar elementos
Can you write Python code for it?

a_list.append("pollo") # now part of the family
a_list


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
podemos cambiar valores usando  [ indice ]:
Can you write Python code for it?

array_vacio[2] = 8 # manipular el tercer elemento
array_vacio


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
y que tal arreglos de numeros aleatorios?
Can you write Python code for it?

integers = np.random.randint(low=1,high=10, size=100000)
integers


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
y que tal arreglos vacios? Aqui creamos un vector de 5 x 1
Can you write Python code for it?

array_vacio = np.zeros((5,1))
array_vacio


I am working on the file "Dia1/.ipynb_checkpoints/1_Computacion_con_Jupyter-checkpoint.ipynb".
The first task is:
y usarlo en otra celda
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
Borrando columnas
Aveces simplemente queremos reducir el numero de datos, entonces podemos usar el drop:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
Exportando a otro formato
Aveces queremos guardar nuestros datos (excel, csv, sql database, pickle, json) , por ejemplo a un excel:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
Grafica de cajas 'Boxplot'
Un boxplot nos da mucha informacion:
* Cada caja esta centrada en la mediana
* Tiene de alto la desviacion estandar entonces nos dice donde se encuentra el 60% de los datos.
* Tiene los minimos y maximos de cada dato.
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
Jugando con el Dataframe!
Estadisticas
Ya con teniendo un dataframe podemos hacer muchas cosas, por ejemplo sacar estadisticas, de medias, desviaciones estandares, cuantos elementos:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
Leyendo un DataFrame de otro formato
O alrevez, queremos crear un dataframe apartir de un archivo:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
Y yo para que quiero eso? De que sirve pandas?
Pandas te sirve si quieres:

Trabajar con datos de manera facil.
Explorar un conjunto de datos de manera rapida, enterder los datos que tienes.
Facilmente manipular informacion, por ejemplo sacar estadisticas.
Graficas patrones y distribuciones de datos.
Trabajar con Exceles, base de datos, sin tener que suar esas herramientas.

Y mucho mas...
El DataFrame en Pandas
Una estructura de datos en Pandas se llama un DataFrame, con el manejamos todos los datos y aplicamos tranformaciones.
Asi creamos un DataFrame vacio:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
o talvez solo nos interese del Lunes:
 Ojo!  Tenemos que usar .ix para seleccionar un renglon
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/2_PandasIntro-checkpoint.ipynb".
The first task is:
pero talvez solo queramos estadisticas de Pastor, entonces seria:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Bases de datos en el internet
Aveces los datos que queremos se encuentran en el internet. Asumiendo que se encuentran ordenados y en un formato amigable siempre los podemos bajar y guardar como un DataFrame.
Por ejemplo:
Gapminder es una pagina con mas de 500 conjunto de daatos relacionado a indicadores globales como ingresos, producto interno bruto (PIB=GDP) y esperanza de vida.
Aqui bajamos la base de datos de esperanza de vida, lo guardamos en memoria y lo lodeamos como un excel:
Ojo! Aqui usamos .head() para imprimir los primeros 5 renglones del dataframe pues son gigantescos los datos.
Can you write Python code for it?

xurl="http://spreadsheets.google.com/pub?key=phAwcNAVuyj2tPLxKvvnNPA&output=xls"
df=pd.read_excel(xurl)
print("Tamano completo es %s"%str(df.shape))
df.head()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Crear graficas (plot)
Crear graficas es muy facil en matplotlib, si tienes una lista de valores X y otra y..solo basta usar :
Can you write Python code for it?

x = np.array([0,1,2,3,4])
y = x**2 #cuadramos x
plt.plot(x,y)
plt.title("Grafica sencilla")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Dibujando puntos (scatter)
Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:
Can you write Python code for it?

N = 50 # numero de puntos
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
y = np.random.rand(N)
plt.scatter(x, y)
plt.title("Scatter de puntos aleatorios")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Entonces ahora podemos ver la calidad de vida en Mexico atravez del tiempo:
Can you write Python code for it?

df['Mexico'].plot()
print("== Esperanza de Vida en Mexico ==")


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:
Can you write Python code for it?

N = 50 # numero de puntos
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
y = np.random.rand(N)
colores = np.random.rand(N) # colores aleatorios
radios= 15 * np.random.rand(N) # numeros aleatorios entre 0 y 15
areas = np.pi * radios**2 # la formula de area de un circulo
plt.scatter(x, y, s=areas, c=colores, alpha=0.5)
plt.title("Scatter plot de puntos aleatorios")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:
Can you write Python code for it?

x = np.linspace(0,10,100)
y = x**2 #cuadramos x
plt.plot(x,y)
plt.title("Grafica sencilla")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:
Can you write Python code for it?

x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
y3 = np.sqrt(x) # sacamos raiz cuadrada a x
y4 = np.power(x,1.5) # elevamos x a la potencia 1.5

plt.plot(x,y1,label="Linea",linestyle='-') # linea
plt.plot(x,y2,label="Cuadrado",linestyle=':') # puntitos
plt.plot(x,y3,label="Raiz",linestyle='-.') # linea y punto
plt.plot(x,y4,label="potencia 1.5",linestyle='--') # lineas salteadas
plt.legend()
plt.title("Dos graficas sencillas")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
de esta visualizacion vemos que la caldiad ha ido subiendo apartir de 1900, ademas vemos mucho movimiento entre 1890 y 1950, justo cuando habia muchas guerras en Mexico.
Tambien podemos seleccionar un rango selecto de años, vemos que este rango es interesante entonces
Can you write Python code for it?

subdf=df[ df.index >= 1890 ]
subdf=subdf[ subdf.index <= 1955 ]
subdf['Mexico'].plot()
plt.title("Esperanza de Vida en Mexico entre 1890 y 1955")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
o sin tanto rollo, podemos restringuir el rango de nuestra grafica con xlim (los limites del eje X)
Can you write Python code for it?

df['Mexico'].plot()
plt.xlim(1890,1955)
plt.title("Esperanza de Vida en Mexico entre 1890 y 1955")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/3_Intro a Matplotlib-checkpoint.ipynb".
The first task is:
otro tipo de datos, tomados de una campana de gauss, es decir una distribucion normal:
Can you write Python code for it?

N=500
x = np.random.randn(N)
plt.hist(x)
plt.title("Histograma aleatorio Normal")
plt.show()

N=1000
x1 = np.random.randn(N)
x2 = 2+2*np.random.randn(N)

plt.hist(x1,20,alpha=0.3)
plt.hist(x2,20,alpha=0.3)
plt.title("Histograma de dos distribuciones")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Arreglando los Datos
Head nos permite darle un vistazo a los datos... asi a puro ojo vemos que las columnas son anios y los renglones los paises...ponder reversar esto con transpose, pero tambien vemos que esta con indices enumerados, prefeririamos que los indices fueran los paises, entonces los cambiamos y tiramos la columna que ya no sirve...al final un head para ver que todo esta bien... a este juego de limpiar y arreglar datos se llama "Data Wrangling"
Can you write Python code for it?

df = df.rename(columns={'Life expectancy with projections. Yellow is IHME': 'Life expectancy'})
df.index=df['Life expectancy']
df=df.drop('Life expectancy',axis=1)
df=df.transpose()
df.head()


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Bases de datos en el internet
Aveces los datos que queremos se encuentran en el internet. Asumiendo que se encuentran ordenados y en un formato amigable siempre los podemos bajar y guardar como un DataFrame.
Por ejemplo:
Gapminder es una pagina con mas de 500 conjunto de daatos relacionado a indicadores globales como ingresos, producto interno bruto (PIB=GDP) y esperanza de vida.
Aqui bajamos la base de datos de esperanza de vida, lo guardamos en memoria y lo lodeamos como un excel:
Ojo! Aqui usamos .head() para imprimir los primeros 5 renglones del dataframe pues son gigantescos los datos.
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Crear graficas (plot)
Crear graficas es muy facil en matplotlib, si tienes una lista de valores X y otra y..solo basta usar :
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Dibujando puntos (scatter)
Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Histogramas (hist)
Los histogramas nos muestran distribuciones de datos, la forma de los datos, nos muestran el numero de datos de diferentes tipos:
Can you write Python code for it?

N=500
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
plt.hist(x)
plt.title("Histograma aleatorio")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot
Can you write Python code for it?

x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
plt.plot(x,y1,label="Linea")
plt.plot(x,y2,label="Cuadrado")
plt.legend()
plt.title("Dos graficas sencillas")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
Y podemos graficar dos cosas al mismo tiempo:
Can you write Python code for it?

x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
plt.plot(x,y1)
plt.plot(x,y2)
plt.title("Dos graficas sencillas")
plt.show()


I am working on the file "Dia1/.ipynb_checkpoints/Intro a Matplotlib-checkpoint.ipynb".
The first task is:
de esta visualizacion vemos que la caldiad ha ido subiendo apartir de 1900, ademas vemos mucho movimiento entre 1890 y 1950, justo cuando habia muchas guerras en Mexico.
Tambien podemos seleccionar un rango selecto de años, vemos que este rango es interesante entonces
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/PandasIntro-checkpoint.ipynb".
The first task is:
Borrando columnas
Aveces simplemente queremos reducir el numero de datos, entonces podemos usar el drop:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/PandasIntro-checkpoint.ipynb".
The first task is:
Combinando columnas
Que tal si queremos saber cuantos tacos vendimos en total?
Pues solamente sumamos las columnas:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/PandasIntro-checkpoint.ipynb".
The first task is:
Exportando a otro formato
Aveces queremos guardar nuestros datos (excel, csv, sql database, pickle, json) , por ejemplo a un excel:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/PandasIntro-checkpoint.ipynb".
The first task is:
Leyendo un DataFrame de otro formato
O alrevez, queremos crear un dataframe apartir de un archivo:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/PandasIntro-checkpoint.ipynb".
The first task is:
Y yo para que quiero eso? De que sirve pandas?
Pandas te sirve si quieres:

Trabajar con datos de manera facil.
Explorar un conjunto de datos de manera rapida, enterder los datos que tienes.
Facilmente manipular informacion, por ejemplo sacar estadisticas.
Graficas patrones y distribuciones de datos.
Trabajar con Exceles, base de datos, sin tener que suar esas herramientas.

Y mucho mas...
El DataFrame en Pandas
Una estructura de datos en Pandas se llama un DataFrame, con el manejamos todos los datos y aplicamos tranformaciones.
Asi creamos un DataFrame vacio:
Can you write Python code for it?


I am working on the file "Dia1/.ipynb_checkpoints/PandasIntro-checkpoint.ipynb".
The first task is:
pero talvez solo queramos estadisticas de Pastor, entonces seria:
Can you write Python code for it?


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
1.b) Crea un arreglo de numeros aleatorios de tamano $n$
Can you write Python code for it?

n =20
arreglo = np.random.randint(1,10,n)
print(arreglo)


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
1.d)  Grafica un histograma de numeros aleatorios con $n=10,50,100,1k,10k$
Para graficar histogramas usa plt.hist().
Can you write Python code for it?

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

a = np.random.randint(1,10,10)
plt.hist(a)


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
Actividad 1 : Ejercicios de Programacion
Meta: Obtener confianza con Python.
1.a) Usa un ciclo-for e imprime tus platillos bolivianos favoritos
Can you write Python code for it?

lista = ['mAJAdITO','picopas de pollo','quemacho','trancapechos']
for i in lista:
    print(i)


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
Computo Iterativo
El "kernel" mantiene un estado de todos los calculos del la libreta.
Por ejemplo puedes guardar el resultado de un calculo en una variable
Can you write Python code for it?


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
Extra: Sumatoria de ondas

Aproximaremos la siguiente onda cuadrada:
$$
f(x) = \sum^{\infty}_{n=1} \frac{ sin(2 \pi (2n-1) x)}{2n -1}
$$
via la formula:
$$
f(x) = \sum^{N}_{n=1} \frac{ sin(2 \pi (2n-1) x)}{2n -1}
$$
Pasos:

Crear una onda sinosoidal y graficarla $sin(2 \pi  x)$
Crear una onda sumada de cuatro ondas sinosoidal (n=1,2,3,4) y graficarla.
Lo mismo pero utilizando un ciclo para un numero arbitraio $n$
Crear una funcion que para un numero $n$ crea una aproximacion a la onda cuadrada.
Graficar para $n=4,8,12,16,50$

Extra: Mas cosas para darle sabor
Celdas de Texto: Latex & Markdown
Celdas se crean por default como celdas de codigo, pero se pueden cambiar.
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.

In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
The code for this cell is:
```markdown
Text Cells: Latex & Markdown
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.

In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
```
Images
We can work with images (JPEG, PNG) and SVG via the Image and SVG class.
Can you write Python code for it?

from IPython.display import Image
Image(filename='files/large-hadron-collider.jpg')


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
For loops (Ciclos For)
Un for loop va sobre cada elemento del ciclo, Ojo! nota el espaciamiento/indentacion justo despues del for!
Can you write Python code for it?

lista = ['perro' ,'delfin','perezoso','leon','gato']

for domesticos in lista:
    print(domesticos)
    print("Otro animal:")


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
Parar codigo
El codigo se corre en un proceso separado llamado el"kernel:". Este puede ser interumpido o reseteado.
Trata de correr el siguiente codigo y dale al boton <button class='btn btn-default btn-xs'><i class='icon-stop fa fa-stop'></i></button>.
Can you write Python code for it?


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
Y si quieres un elemento aleatorio de la lista?
El modulo random al rescate, corre varias veces la celda y checa si son aleatorios
Que tal funciones?
Can you write Python code for it?

def tienda(animalito):
    print("barato baratoooo")
    print(animalito)
    return

for animal in lista:
    tienda(animal)


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
o podemos usar el modulo Numpy para arreglos numericos (Protip: quieres saber mas? dale click a la imagen)
Can you write Python code for it?

import numpy as np

array_1 = np.array([3,4,5])
array_2 = np.array([4,8,7])
array_1 + array_2


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
podemos agregar elementos
Can you write Python code for it?


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
podemos cambiar valores usando  [ indice ]:
Can you write Python code for it?


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
un loop pero enumerado, te rergresa un indice y un elemento
Can you write Python code for it?

arreglo = np.random.randint(1,10,5000)

for indice,animal in enumerate(arreglo):
    print(indice,animal)
print("fin")


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
y que tal arreglos de numeros aleatorios?
Utilidades de Array
Tenemos muchas utilidades para trabajar con arreglos...

Sortear valores: entoces usamos np.sort(array)
Encontrar Maximo, Minimo: entoces usamos np.min(array), np.max(array)
Encontrar el indices del Maximo o Minimo: entoces usamos np.argmin(array), np.argmax(array)
Calcular medias o desviaciones estandar : usamos np.mean(array),np.std(array)
Can you write Python code for it?

arreglo = np.random.randint(1,10,500000)
np.mean(arreglo)


I am working on the file "Dia1/1_Computacion_con_Jupyter-Vacio.ipynb".
The first task is:
y que tal arreglos vacios? Aqui creamos un vector de 5 x 1
Can you write Python code for it?

array_1 = np.zeros(17304)
print(array_1)


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
Computo Iterativo
El "kernel" mantiene un estado de todos los calculos del la libreta.
Por ejemplo puedes guardar el resultado de un calculo en una variable
Can you write Python code for it?

un_str = "Cuanto es 2 x 4 ?"
resultado= 2 * 4


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
For loops (Ciclos For)
Un for loop va sobre cada elemento del ciclo, Ojo! nota el espaciamiento/indentacion justo despues del for!
Can you write Python code for it?

for i in range(2,10,2):
    print(i)

print("Fin!")


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
Resetear
Puedes resetear usando el boton <button class='btn btn-default btn-xs'><i class='fa fa-repeat icon-repeat'></i></button>.
Python Basico
Lists and Arrays (Listas y arreglos)
Can you write Python code for it?

a_list = [ "vaca", "taco", "gato"] #list
print(a_list)


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
Utilidades de Array
Tenemos muchas utilidades para trabajar con arreglos...

Sortear valores: entoces usamos np.sort(array)
Encontrar Maximo, Minimo: entoces usamos np.min(array), np.max(array)
Encontrar el indices del Maximo o Minimo: entoces usamos np.argmin(array), np.argmax(array)
Calcular medias o desviaciones estandar : usamos np.mean(array),np.std(array)
Can you write Python code for it?

print("Sortead :",np.sort(integers))
print("Max:",np.max(integers),", Min:",np.min(integers))
print("Max at:",np.argmax(integers),", Min at:",np.argmin(integers))
print("Mean:",np.mean(integers),", Std:",np.std(integers))


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
Videos?
Can you write Python code for it?

from IPython.display import YouTubeVideo
#https://www.youtube.com/watch?v=_6uKZWnJLCM
YouTubeVideo('_6uKZWnJLCM')


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
o podemos usar el modulo Numpy para arreglos numericos (Protip: quieres saber mas? dale click a la imagen)
Can you write Python code for it?

import numpy as np

# lista de numeros del 0 a 100, en incrementos de 1
numeros = np.arange(0,100,1)
print(numeros)


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
podemos agregar elementos
Can you write Python code for it?

a_list.append("pollo") # now part of the family
a_list


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
podemos cambiar valores usando  [ indice ]:
Can you write Python code for it?

array_vacio[2] = 8 # manipular el tercer elemento
array_vacio


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
y que tal arreglos de numeros aleatorios?
Can you write Python code for it?

integers = np.random.randint(low=1,high=10, size=100000)
integers


I am working on the file "Dia1/1_Computacion_con_Jupyter.ipynb".
The first task is:
y usarlo en otra celda
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro-Vacio.ipynb".
The first task is:
Exportando a otro formato
Aveces queremos guardar nuestros datos (excel, csv, sql database, pickle, json) , por ejemplo a un excel:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro-Vacio.ipynb".
The first task is:
Grafica de cajas 'Boxplot'
Un boxplot nos da mucha informacion:
* Cada caja esta centrada en la mediana
* Tiene de alto la desviacion estandar entonces nos dice donde se encuentra el 60% de los datos.
* Tiene los minimos y maximos de cada dato.
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro-Vacio.ipynb".
The first task is:
Jugando con el Dataframe!
Estadisticas
Ya con teniendo un dataframe podemos hacer muchas cosas, por ejemplo sacar estadisticas, de medias, desviaciones estandares, cuantos elementos:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro-Vacio.ipynb".
The first task is:
No nos sirve nada vacio, entonces agreguemos le informacion!
LLenando informacion con un Dataframe

Situacion:
Suponte que eres un taquero y quieres hacer un dataframe de cuantos tacos vendes en una semana igual y para ver que tacos son mas populares y echarle mas ganas en ellos,
Asumiremos:

Que vende tacos de Pastor, Tripa y Chorizo
Hay 7 dias en una semana de  Lunes a Domingo (obvio)
Crearemos el numero de tacos como numeros enteros aleatorios (np.random.randint)

 Ojo!  Si ponemos la variable de un dataframe al final de una celda no saldra una tabla con los datos, eah!
Can you write Python code for it?

df = pd.DataFrame()
df['Tripas'] = np.random.randint(100,size=7)
df['Chorizo'] = np.random.randint(100,size=7)
df['Pastor'] = np.random.randint(100,size=7)

df.index = ['L','Mar','Mier','J','V','S','D']
df


I am working on the file "Dia1/2_PandasIntro-Vacio.ipynb".
The first task is:
Y yo para que quiero eso? De que sirve pandas?
Pandas te sirve si quieres:

Trabajar con datos de manera facil.
Explorar un conjunto de datos de manera rapida, enterder los datos que tienes.
Facilmente manipular informacion, por ejemplo sacar estadisticas.
Graficas patrones y distribuciones de datos.
Trabajar con Exceles, base de datos, sin tener que suar esas herramientas.

Y mucho mas...
El DataFrame en Pandas
Una estructura de datos en Pandas se llama un DataFrame, con el manejamos todos los datos y aplicamos tranformaciones.
Asi creamos un DataFrame vacio:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro.ipynb".
The first task is:
Borrando columnas
Aveces simplemente queremos reducir el numero de datos, entonces podemos usar el drop:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro.ipynb".
The first task is:
Combinando columnas
Que tal si queremos saber cuantos tacos vendimos en total?
Pues solamente sumamos las columnas:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro.ipynb".
The first task is:
Grafica de cajas 'Boxplot'
Un boxplot nos da mucha informacion:
* Cada caja esta centrada en la mediana
* Tiene de alto la desviacion estandar entonces nos dice donde se encuentra el 60% de los datos.
* Tiene los minimos y maximos de cada dato.
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro.ipynb".
The first task is:
Jugando con el Dataframe!
Estadisticas
Ya con teniendo un dataframe podemos hacer muchas cosas, por ejemplo sacar estadisticas, de medias, desviaciones estandares, cuantos elementos:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro.ipynb".
The first task is:
Leyendo un DataFrame de otro formato
O alrevez, queremos crear un dataframe apartir de un archivo:
Can you write Python code for it?


I am working on the file "Dia1/2_PandasIntro.ipynb".
The first task is:
Y yo para que quiero eso? De que sirve pandas?
Pandas te sirve si quieres:

Trabajar con datos de manera facil.
Explorar un conjunto de datos de manera rapida, enterder los datos que tienes.
Facilmente manipular informacion, por ejemplo sacar estadisticas.
Graficas patrones y distribuciones de datos.
Trabajar con Exceles, base de datos, sin tener que suar esas herramientas.

Y mucho mas...
El DataFrame en Pandas
Una estructura de datos en Pandas se llama un DataFrame, con el manejamos todos los datos y aplicamos tranformaciones.
Asi creamos un DataFrame vacio:
Can you write Python code for it?


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Bajar datos
Aveces los datos que queremos se encuentran en el internet.
Aqui usaremos datos del NREL (National Renewable Energy Laboratory): http://rredc.nrel.gov/solar/spectra/am1.5/
del espectro solar  (AM1.5G) con intensity (1000 W/m2).
Primero lo bajamos y lo descomprimimos:
Can you write Python code for it?

data_url = 'http://rredc.nrel.gov/solar/spectra/am1.5/ASTMG173/compressed/ASTMG173.csv.tar'
a_file = wget.download(data_url)
download_as_tarfile_object = tarfile.open(fileobj=a_file)
csv_file = download_as_tarfile_object.extractfile('ASTMG173.csv')


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Creamos una funcion, interpolando valores intermedios
Can you write Python code for it?

AM15interp = scipy.interpolate.interp1d(AM15[:,0], AM15[:,1])


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Crear graficas (plot)
Crear graficas es muy facil en matplotlib, si tienes una lista de valores X y otra y..solo basta usar :
Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:
Y podemos graficar dos cosas al mismo tiempo:
Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot
Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:
Dibujando puntos (scatter)
Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:
Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:
Histogramas (hist)
Los histogramas nos muestran distribuciones de datos, la forma de los datos, nos muestran el numero de datos de diferentes tipos:
otro tipo de datos, tomados de una campana de gauss, es decir una distribucion normal:
A graficar el Hermoso Espectro Solar
Primero constantes numericas
Para usarlo convertimos numeros a unidades, por ejemplo:
x = 5 * nu.cm significa "x es igual a 5 centimetros".
si quieres sacar el valor numerico de x, podemos dividir por las unidades
y = x / nu.mm, en este caso tenemos el valor numerico en milimetros
Can you write Python code for it?


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Definimos la Celda solar cualquiera a una temperatura de 300 kelvin:
Can you write Python code for it?


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Importamos varios paquetes de Python
Can you write Python code for it?

import  scipy.interpolate, scipy.integrate, wget, tarfile


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Manipular datos
La columna 0 es la longitud de onda y la 2 es los datos AM1.5G
Can you write Python code for it?

# Wavelength is in column 0, AM1.5G data is column 2
AM15 = downloaded_array[:,[0,2]]
# The first line should be 280.0 , 4.7309E-23
# The last line should be 4000.0, 7.1043E-03
print(AM15)


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Que tamanio tienen los datos?
Can you write Python code for it?

downloaded_array = np.genfromtxt('ASTMG173.csv', delimiter=",", skip_header=2)
downloaded_array.shape


I am working on the file "Dia1/3_Graficame_Espectro_Solar.ipynb".
The first task is:
Vamos a dar unidades a cada columna
Can you write Python code for it?


I am working on the file "Dia1/3_Intro a Matplotlib-Vacio.ipynb".
The first task is:
Crear graficas (plot)
Crear graficas es muy facil en matplotlib, si tienes una lista de valores X y otra y..solo basta usar :
Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:
Y podemos graficar dos cosas al mismo tiempo:
Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot
Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:
Dibujando puntos (scatter)
Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:
Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:
Histogramas (hist)
Los histogramas nos muestran distribuciones de datos, la forma de los datos, nos muestran el numero de datos de diferentes tipos:
otro tipo de datos, tomados de una campana de gauss, es decir una distribucion normal:
Bases de datos en el internet
Aveces los datos que queremos se encuentran en el internet. Asumiendo que se encuentran ordenados y en un formato amigable siempre los podemos bajar y guardar como un DataFrame.
Por ejemplo:
Gapminder es una pagina con mas de 500 conjunto de daatos relacionado a indicadores globales como ingresos, producto interno bruto (PIB=GDP) y esperanza de vida.
Aqui bajamos la base de datos de esperanza de vida, lo guardamos en memoria y lo lodeamos como un excel:
Ojo! Aqui usamos .head() para imprimir los primeros 5 renglones del dataframe pues son gigantescos los datos.
Can you write Python code for it?

xurl="http://spreadsheets.google.com/pub?key=phAwcNAVuyj2tPLxKvvnNPA&output=xls"
df=pd.read_excel(xurl)
print("Tamano completo es %s"%str(df.shape))
df.head()


I am working on the file "Dia1/3_Intro a Matplotlib-Vacio.ipynb".
The first task is:
Entonces ahora podemos ver la calidad de vida en Mexico atravez del tiempo:
Can you write Python code for it?

df['Mexico'].plot()
print("== Esperanza de Vida en Mexico ==")


I am working on the file "Dia1/3_Intro a Matplotlib-Vacio.ipynb".
The first task is:
Tambien es importante ver como esto se compara con otros paises, podemos comparar con todo Norteamerica:
Can you write Python code for it?

df[['Mexico','United States','Canada']].plot()
plt.title("Esperanza de Vida en Norte-America")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib-Vacio.ipynb".
The first task is:
o sin tanto rollo, podemos restringuir el rango de nuestra grafica con xlim (los limites del eje X)
Can you write Python code for it?

df['Mexico'].plot()
plt.xlim(1890,1955)
plt.title("Esperanza de Vida en Mexico entre 1890 y 1955")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Bases de datos en el internet
Aveces los datos que queremos se encuentran en el internet. Asumiendo que se encuentran ordenados y en un formato amigable siempre los podemos bajar y guardar como un DataFrame.
Por ejemplo:
Gapminder es una pagina con mas de 500 conjunto de daatos relacionado a indicadores globales como ingresos, producto interno bruto (PIB=GDP) y esperanza de vida.
Aqui bajamos la base de datos de esperanza de vida, lo guardamos en memoria y lo lodeamos como un excel:
Ojo! Aqui usamos .head() para imprimir los primeros 5 renglones del dataframe pues son gigantescos los datos.
Can you write Python code for it?


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Dibujando puntos (scatter)
Aveces no queremos dibujar lineas, sino puntos, esto nos da informacion de donde se encuentras datos de manera espacial. Para esto podemos usarlo de la siguiente manera:
Can you write Python code for it?

N = 50 # numero de puntos
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
y = np.random.rand(N)
plt.scatter(x, y)
plt.title("Scatter de puntos aleatorios")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Entonces ahora podemos ver la calidad de vida en Mexico atravez del tiempo:
Can you write Python code for it?

plt.xkcd()
df = pd.read_csv("files/training.csv")
plt.plot(df['DER_mass_MMC'][:1000],
         df['DER_mass_transverse_met_lep'][:1000])
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:
Can you write Python code for it?

N = 50 # numero de puntos
x = np.random.rand(N) # numeros aleatorios entre 0 y 1
y = np.random.rand(N)
colores = np.random.rand(N) # colores aleatorios
radios= 15 * np.random.rand(N) # numeros aleatorios entre 0 y 15
areas = np.pi * radios**2 # la formula de area de un circulo
plt.scatter(x, y, s=areas, c=colores, alpha=0.5)
plt.title("Scatter plot de puntos aleatorios")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:
Can you write Python code for it?

x = np.linspace(0,10,100)
y = x**2 #cuadramos x
plt.plot(x,y)
plt.title("Grafica sencilla")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot
Can you write Python code for it?

x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
plt.plot(x,y1,label="Linea")
plt.plot(x,y2,label="Cuadrado")
plt.legend()
plt.title("Dos graficas sencillas")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Tambien es importante ver como esto se compara con otros paises, podemos comparar con todo Norteamerica:
Can you write Python code for it?


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:
Can you write Python code for it?

x = np.linspace(0,10,100)
y1 = x # una linea
y2 = x**2 # cuadramos x
y3 = np.sqrt(x) # sacamos raiz cuadrada a x
y4 = np.power(x,1.5) # elevamos x a la potencia 1.5

plt.plot(x,y1,label="Linea",linestyle='-') # linea
plt.plot(x,y2,label="Cuadrado",linestyle=':') # puntitos
plt.plot(x,y3,label="Raiz",linestyle='-.') # linea y punto
plt.plot(x,y4,label="potencia 1.5",linestyle='--') # lineas salteadas
plt.legend()
plt.title("Dos graficas sencillas")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
de esta visualizacion vemos que la caldiad ha ido subiendo apartir de 1900, ademas vemos mucho movimiento entre 1890 y 1950, justo cuando habia muchas guerras en Mexico.
Tambien podemos seleccionar un rango selecto de años, vemos que este rango es interesante entonces
Can you write Python code for it?

subdf=df[ df.index >= 1890 ]
subdf=subdf[ subdf.index <= 1955 ]
subdf['Mexico'].plot()
plt.title("Esperanza de Vida en Mexico entre 1890 y 1955")
plt.show()


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
o sin tanto rollo, podemos restringuir el rango de nuestra grafica con xlim (los limites del eje X)
Can you write Python code for it?


I am working on the file "Dia1/3_Intro a Matplotlib.ipynb".
The first task is:
otro tipo de datos, tomados de una campana de gauss, es decir una distribucion normal:
Can you write Python code for it?

N=500
x = np.random.randn(N)
plt.hist(x)
plt.title("Histograma aleatorio Normal")
plt.show()

N=1000
x1 = np.random.randn(N)
x2 = 2+2*np.random.randn(N)

plt.hist(x1,20,alpha=0.3)
plt.hist(x2,20,alpha=0.3)
plt.title("Histograma de dos distribuciones")
plt.show()


I am working on the file "Dia2/1_Computacion_con_Jupyter.ipynb".
The first task is:
Resetear
Puedes resetear usando el boton <button class='btn btn-default btn-xs'><i class='fa fa-repeat icon-repeat'></i></button>.
Python Basico
Lists and Arrays (Listas y arreglos)
Can you write Python code for it?


I am working on the file "Dia2/1_Computacion_con_Jupyter.ipynb".
The first task is:
Videos?
Can you write Python code for it?

from IPython.display import YouTubeVideo
#https://www.youtube.com/watch?v=_6uKZWnJLCM
YouTubeVideo('_6uKZWnJLCM')


I am working on the file "Dia2/1_Computacion_con_Jupyter.ipynb".
The first task is:
Y si quieres un elemento aleatorio de la lista?
El modulo random al rescate, corre varias veces la celda y checa si son aleatorios
Que tal funciones?
Siguen la siguiente forma:
def nombre(opcion1,opcion2):
    #relleno
    print("hola soy relleno")
    return
Actividad 1 : Ejercicios de Programacion
Meta: Obtener confianza con Python.
1.a) Usa un ciclo-for e imprime tus platillos favoritos
1.b) Crea un arreglo de numeros aleatorios de tamano $n$
1.c) Encapsula la funcion pasada en una funcion
Extra: Sumatoria de ondas

Aproximaremos la siguiente onda cuadrada:
$$
f(x) = \sum^{\infty}_{n=1} \frac{ sin(2 \pi (2n-1) x)}{2n -1}
$$
via la formula:
$$
f(x) = \sum^{N}_{n=1} \frac{ sin(2 \pi (2n-1) x)}{2n -1}
$$
Pasos:

Crear una onda sinosoidal y graficarla $sin(2 \pi  x)$
Crear una onda sumada de cuatro ondas sinosoidal (n=1,2,3,4) y graficarla.
Lo mismo pero utilizando un ciclo para un numero arbitraio $n$
Crear una funcion que para un numero $n$ crea una aproximacion a la onda cuadrada.
Graficar para $n=4,8,12,16,50$

Extra: Mas cosas para darle sabor
Celdas de Texto: Latex & Markdown
Celdas se crean por default como celdas de codigo, pero se pueden cambiar.
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.

In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
The code for this cell is:
```markdown
Text Cells: Latex & Markdown
Cell are by default created as code cells, can be but can be easily changed to text cells by cliking on the toolbar.

In text cells you can embed narrative text using Markdown, HTML code and LaTeX equations with inline dollar signs \$ insert equation \$ and new line as \$\$ insert equation \$\$.
For example: $$H\psi = E\psi$$
```
Images
We can work with images (JPEG, PNG) and SVG via the Image and SVG class.
Can you write Python code for it?

from IPython.display import Image
Image(filename='files/large-hadron-collider.jpg')


I am working on the file "Dia2/1_Computacion_con_Jupyter.ipynb".
The first task is:
podemos cambiar valores usando  [ indice ]:
Can you write Python code for it?


I am working on the file "Dia2/2_Intro_Matplotlib.ipynb".
The first task is:
Ahora por pedazos
Podemos usar la funcion np.linspace para crear valores en un rango, por ejemplo si queremos 100 numeros entre 0 y 10 usamos:
Y podemos graficar dos cosas al mismo tiempo:
Que tal si queremos distinguir cada linea? Pues usamos legend(), de leyenda..tambien tenemos que agregarles nombres a cada plot
Tambien podemos hacer mas cosas, como dibujar solamente los puntos, o las lineas con los puntos usando linestyle:
Actividad: Haz muchas graficas
Grafica las siguientes curvas:

Usa x dentro del rango $[-2,2]$.
$e^{-x^2}$
$x^2$
$ cos(2 x) $
Ponle nombre a cada curva, usa leyendas, titulos y demas informacion.

Pero ademas podemos meter mas informacion, por ejemplo dar colores cada punto, o darle tamanos diferentes:
Histogramas (plt.hist)
Los histogramas nos muestran distribuciones de datos, la forma de los datos, nos muestran el numero de datos de diferentes tipos:
Can you write Python code for it?

mu, sigma = 100, 15
x = mu + sigma*np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, normed=1)
plt.ylabel('Porcentaje')
plt.xlabel('IQ')
plt.title('Distribucion de IQ entre 10k personas')
plt.xlim([0,200])
sns.despine()
plt.show()


I am working on the file "Dia2/2_Intro_Matplotlib.ipynb".
The first task is:
Graficas chidas!
Can you write Python code for it?

def awesome_settings():
    # awesome plot options
    sns.set_style("white")
    sns.set_style("ticks")
    sns.set_context("paper", font_scale=2)
    sns.set_palette(sns.color_palette('Set2'))
    # image stuff
    plt.rcParams['figure.figsize'] = (12.0, 6.0)
    plt.rcParams['savefig.dpi'] = 60
    plt.rcParams['lines.linewidth'] = 3

    return

%config InlineBackend.figure_format='retina'
awesome_settings()


I am working on the file "Dia2/4_Datos_LHC.ipynb".
The first task is:
Columnas
Can you write Python code for it?


I am working on the file "Dia2/4_Datos_LHC.ipynb".
The first task is:
Datos LHC
Hemos preparado una version mini de los datos, que funcionara bastante bien.
Los datos estan en formato CSV  (Que siginifica CSV?)
Can you write Python code for it?

df = pd.read_csv('files/mini-LHC.csv')
df.head()


I am working on the file "Dia2/4_Datos_LHC.ipynb".
The first task is:
Histogramas
Usando la funcion sns.distplot, esta combina la funcionalidad de un histograma y ademas trata de ajustar una curva a los datos.
Can you write Python code for it?

sns.distplot(boson_df["DER_mass_MMC"],label='boson')
sns.distplot(ruido_df["DER_mass_MMC"],label='ruido')
plt.ylabel('Frecuencia')
plt.legend()
plt.title("Distribucion de DER_mass_MMC")
plt.show()


I am working on the file "Dia2/4_Datos_LHC.ipynb".
The first task is:
Preguntas:

Cuantos Bosones tenemos?
Y cuantos de ruido?
Can you write Python code for it?

print (len(boson_df))
print (len(ruido_df))


I am working on the file "Dia2/4_Datos_LHC.ipynb".
The first task is:
Scatter plots
Con scatter plots podemos ver la relacion de dos variables, graficando puntos en una dimension (X) y luego en otra (Y).
En este caso escojemos una variable extra PRI_tau_pt  que segun la documentacion representa

PRI_tau_pt The transverse momentum  $\sqrt{p^2_x + p^2_y}$ of the hadronic tau.

Es decir el momento transversal del tau hadronico..algo loco
Probemoslo:
Can you write Python code for it?

ejeX = "DER_mass_MMC"
ejeY = "PRI_tau_pt"
plt.scatter(df[ejeX],df[ejeY],alpha=0.5)
plt.xlabel(ejeX)
plt.ylabel(ejeY)
plt.show()


I am working on the file "Dia2/4_Datos_LHC.ipynb".
The first task is:
Visualizar!
Ahora que sabemos accesar a los datos, vamos a visualizar los datos.
Como ejemplo usaremos la propiedad fisica DER_mass_MMC que de acuerdo al documento de datos dice:

DER_mass_MMC: The estimated mass mH of the Higgs boson candidate, obtained through a prob- abilistic phase space integration

Es decir la masa estimada de la particula.
BoxPlot
Con los boxplots, vemos el minimo, maximo, promedio y una caja donde esta concentrado la mayoria de los datos (75%).
Con boxplots usamos todos los datos no divididos (df)..le decimos quien es esta en el eje x (Label) y quien en el eje y que puede ser cualquier propiedad fisica.
Can you write Python code for it?


I am working on the file "Dia2/5_Estadistica_Basica.ipynb".
The first task is:
Distribución uniforme
Cacho!

Que otros feneomenos siguen una distribuicon uniforme?
Can you write Python code for it?

x = np.random.rand(100)
sns.distplot(x,kde=False)
plt.xlim(0,1)
plt.show()


I am working on the file "Dia2/5_Estadistica_Basica.ipynb".
The first task is:
Que significa la desviacion estandar?
Y las sigmas!

$1 \sigma$ = 68.26%
$2 \sigma$ = 95.44%
$3 \sigma$ = 99.74%
$4 \sigma$ = 99.995%
$5 \sigma$ = 99.99995%
Actividades
Haz lo siguiente:

Crear 3 distribuciones variando promedio (mean)
Crear 3 distribuciones variando la desviacion estandar (std)
Crear 2 distribuciones con cierto sobrelape, es decir que se toquen

Campanas gaussianas en la Naturaleza
Examenes de salidad en prepas en Polonia:

Que podria ser esta desviacion?
Distribución normal en 2D
Can you write Python code for it?

x = np.random.normal(loc=2.0,scale=0.5,size=100)
y = np.random.normal(loc=2.0,scale=0.5,size=100)
plt.scatter(x,y,c='r',label='rojos')
plt.legend()
plt.show()


I am working on the file "Dia2/5_Estadistica_Basica.ipynb".
The first task is:
Tambien podemos hacerlo de otra manera con np.random.normal() que tiene 3 argumentos:

loc, la locacion ... o mejor dicho el promedio.
scale, la escala ... o mejor dicho el la desviacion estandar.
size, o tamaño ... cuantos numeros vamos a generar.
Can you write Python code for it?

numeros = np.random.normal(loc=2.0,scale=0.1,size=1000)
sns.distplot(numeros)
plt.xlim(0,4)
plt.show()


I am working on the file "Dia2/6_Datos_Iris.ipynb".
The first task is:
Un mini-ejemplo: Classificacion
Usaremos el archivo 'files/ejemplo.csv' en conjunto con pandas:
Can you write Python code for it?


I am working on the file "Dia2/6_Datos_Iris.ipynb".
The first task is:
Visualizando
Utilizaremos la funcion sns.pairplot() que combina las técnicas de visualización que ya vimos, para cada variable crea una versión 1D (Histograma) y luego para cada pareja de variables crea un scatter plot.
Usamos hue='Tipo' para colorear los datos en base a el tipo de dato.
Can you write Python code for it?

sns.pairplot(df,hue='Tipo')
plt.title('Distribuciones de Datos')
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/4_Datos_LHC-checkpoint.ipynb".
The first task is:
Columnas
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/4_Datos_LHC-checkpoint.ipynb".
The first task is:
Dividir datos
Finalmente vamos dividir los datos entre los que son bosones (s) y los que no.
Cada uno sera una base de datos seprada
Can you write Python code for it?

boson_df = df[df['Label']=='s']
ruido_df = df[df['Label']=='b']


I am working on the file "Dia3/.ipynb_checkpoints/4_Datos_LHC-checkpoint.ipynb".
The first task is:
Histogramas
Usando la funcion sns.distplot, esta combina la funcionalidad de un histograma y ademas trata de ajustar una curva a los datos.
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/4_Datos_LHC-checkpoint.ipynb".
The first task is:
Utilidades:
Podemos accesar informacion de la base de datos (DataFrame) mediante las siugientes formas:
Tamaño
Para eso podemos usar len() (longitud) y .shape (forma).
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/4_Datos_LHC-checkpoint.ipynb".
The first task is:
Ven algun problema ?
En este caso tiene sentido visualizar los datos separados...asi tenemos una mejor idea
Can you write Python code for it?

ejeX = "DER_mass_MMC"
ejeY = "PRI_tau_pt"
plt.scatter(boson_df[ejeX],boson_df[ejeY],c='r',alpha=0.1,s=20,label='boson',lw=0)
plt.scatter(ruido_df[ejeX],ruido_df[ejeY],c='g',alpha=0.1,s=10,label='ruido',lw=0)
plt.xlabel(ejeX)
plt.ylabel(ejeY)
plt.legend()
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/4_Datos_LHC-checkpoint.ipynb".
The first task is:
Y si quiero imprimir columnas, una por una?
Usamos un for!
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Datos_Iris-checkpoint.ipynb".
The first task is:
Columnas
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Datos_Iris-checkpoint.ipynb".
The first task is:
Datos LHC
Hemos preparado una version mini de los datos, que funcionara bastante bien.
Los datos estan en formato CSV  (Que siginifica CSV?)
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Datos_Iris-checkpoint.ipynb".
The first task is:
Histogramas
Usando la funcion sns.distplot, esta combina la funcionalidad de un histograma y ademas trata de ajustar una curva a los datos.
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Datos_Iris-checkpoint.ipynb".
The first task is:
Recuerda: <br> Para accesar una columna usamos su nombre
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Datos_Iris-checkpoint.ipynb".
The first task is:
Ven algun problema ?
En este caso tiene sentido visualizar los datos separados...asi tenemos una mejor idea
Can you write Python code for it?

ejeX = "DER_mass_MMC"
ejeY = "PRI_tau_pt"
plt.scatter(boson_df[ejeX],boson_df[ejeY],c='r',alpha=0.5,label='boson')
plt.scatter(ruido_df[ejeX],ruido_df[ejeY],c='g',alpha=0.5,label='ruido')
plt.xlabel(ejeX)
plt.ylabel(ejeY)
plt.legend()
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/5_Datos_Iris-checkpoint.ipynb".
The first task is:
Y si quiero imprimir columnas, una por una?
Usamos un for!
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Estadistica_Basica-checkpoint.ipynb".
The first task is:
Distribución de Poisson
Número de solicitudes de amistad en facebook en una semana
Can you write Python code for it?

s = np.random.poisson(2,2000)
sns.distplot(s,kde=False)
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/5_Estadistica_Basica-checkpoint.ipynb".
The first task is:
Distribución normal
Distribución de tiempos de maraton para corredores de varias edades:

Cambia el numero de datos y ve que pasa:
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Estadistica_Basica-checkpoint.ipynb".
The first task is:
Distribución uniforme
Cacho!

Que otros feneomenos siguen una distribuicon uniforme?
Can you write Python code for it?

x = np.random.rand(10)
sns.distplot(x,kde=False)
plt.xlim(0,1)
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/5_Estadistica_Basica-checkpoint.ipynb".
The first task is:
Tambien podemos hacerlo de otra manera con np.random.normal() que tiene 3 argumentos:

loc, la locacion ... o mejor dicho el promedio.
scale, la escala ... o mejor dicho el la desviacion estandar.
size, o tamaño ... cuantos numeros vamos a generar.
Can you write Python code for it?

numeros = np.random.normal(loc=2.0,scale=2.0,size=1000)
sns.distplot(numeros)
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/5_Estadistica_Basica-checkpoint.ipynb".
The first task is:
Una forma de automatizar esto es:
Can you write Python code for it?

numeros = [10,50,100,1000,10000]

for n in numeros:
    x = np.random.randn(n)
    sns.distplot(x)
    plt.title('n = %d'%n)
    plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
Finalemente vamos a visualizar el error conforme el numero de K's
Can you write Python code for it?

ks =[ 2,5,8,10,20,40,60,80,100]
error=[]
for k in ks:
    kmeans = KMeans(k)
    kmeans.fit(X)
    error.append(kmeans.score(X,Y))

plt.plot(ks,error,'-o')
plt.show()


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
Introduccion a Machine Learning
En Machine learning, computadoras aplican tecnicas de aprendizaje estadistico para automaticamente reconocer patrones en los datos.
Estas tecnicas se pueden utilizar para predecir, clasificar, ajustar modelos, descubrir patrones y reducir dimencionalidad.
Para ello utilizaremos la libreria Scikit-learn:
Can you write Python code for it?

import numpy as np
import sklearn as sk
import matplotlib.pyplot as plt
import sklearn.datasets as datasets
%matplotlib inline


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
Le atinamos?
Que podemos cambiar?
Actividad!

Crear un numero alteatorio, guardalo en una variable, recuerda (np.random.randint())
NO LO VEAS!
Crea gaussianas con esa variable
Usa K-means para tratar de encontrar el numero de classificaciones.
Que pasa cuando los clusters se encuentran cerca? Es decir cuando hay sobrelape

Mas dimensiones extra, mas info, sutilezas

Dimensiones en un conjunto de datos se llaman features o variables.

La esencia del aprendizaje estadistico es identificar los limites en los datos usando matematicas.

Crea modelo tambien se dice que es "entrenar un modelo".
Can you write Python code for it?

from sklearn.cluster import KMeans
from sklearn.utils import shuffle
from sklearn.datasets import load_digits
digits = load_digits()
X = digits.data
Y = digits.target
#X_digits, _,_, Y_digits = load_digits() # datos MNIST
#X_digits, Y_digits = shuffle(X_digits,Y_digits) # movemos los datos aleatoriamente
#X_digits = X_digits[-5000:]       # take only the last instances, to shorten runtime of KMeans


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
corremos k-means
Can you write Python code for it?

kmeans = KMeans(20)
mu_digits = kmeans.fit(X).cluster_centers_


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
k-means al rescate!
K-mean es un algoritmo sencillo que podemos utilizar, busca los centros mas "probables" y entonces un punto se encuentra en la categoria si se encuentra mas cerca a estos centros.
Can you write Python code for it?

from sklearn.cluster import KMeans

kmeans = KMeans(4)
Y_pred = kmeans.fit(X).labels_
print(Y_pred)


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
mas bonito
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
podemos cuantificar el error para ver que tal
Can you write Python code for it?

error=kmeans.score(X,Y)
print("El error es : %f "%error)


I am working on the file "Dia3/.ipynb_checkpoints/5_Machine_Learning_Intro-checkpoint.ipynb".
The first task is:
vamos a ver que acabamos de lodear:
Can you write Python code for it?

plt.rc("image", cmap="binary") # use black/white palette for plotting
for i in xrange(10):
    plt.subplot(2,5,i+1)
    plt.imshow(X[i].reshape(28,28))
    plt.xticks(())
    plt.yticks(())
plt.tight_layout()


I am working on the file "Dia3/.ipynb_checkpoints/6_Datos_Iris-checkpoint.ipynb".
The first task is:
Visualizando
Utilizaremos la funcion sns.pairplot() que combina las técnicas de visualización que ya vimos, para cada variable crea una versión 1D (Histograma) y luego para cada pareja de variables crea un scatter plot.
Usamos hue='Tipo' para colorear los datos en base a el tipo de dato.
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
<i class="fa fa-database"></i> Vamos a crear datos de jugete
Crea varios "blobs"
recuerda la funcion de scikit-learn datasets.make_blobs()
 Tambien prueba
python
 centers = [[1, 1], [-1, -1], [1, -1]]
 X,Y = datasets.make_blobs(n_samples=10000, centers=centers, cluster_std=0.6)
Can you write Python code for it?

centers = [[1, 1], [-1, -1], [1, -1]]
X,Y = datasets.make_blobs(n_samples=1000, centers=centers, cluster_std=0.6)
plt.scatter(X[:,0],X[:,1],c=Y)
plt.jet()


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
<i class="fa fa-question-circle"></i>
Como se ve nuestro modelo?
Que fue mas importante para hacer una decision?
Como podemos mejorar  y controlar como dividimos nuestros datos?
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:

Por que no queremos 100%?
Este problema se llama "Overfitting"

   Pasos para un tipico algoritmo ML:

Crear un modelo
Particionar tus datos en diferentes pedazos (10% entrenar y 90% prueba)
Entrenar tu modelo sobre cada pedazo de los datos
Escogete el mejor modelo o el promedio de los modelos
Predice!

Primero vamos a particionar los datos usando
Can you write Python code for it?

from sklearn.cross_validation import train_test_split
X_train,X_test, Y_train, Y_test= train_test_split(X,Y,test_size=0.90)


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
<i class="fa fa-question-circle"></i>
Y como podemos mejorar un arbol de decision?

 RandomForestClassifier(n_estimators=n_estimators) Al rescate!
Can you write Python code for it?

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier()
print(clf)


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
<i class="fa fa-question-circle"></i> Que parametros y funciones tiene el classificador?
Hint: usa help(cosa)!
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
Actividad:
Objetivo: Entrena un arbol para predecir la especie de la planta

Checa las graficas, que variables podrian ser mas importante?
Agarra los datos, que dimensiones son?
Rompelos en pedacitos y entrena tus modelos
Que scores te da? Que resulto ser importante?
Can you write Python code for it?

iris = datasets.load_iris()
X = iris.data
Y = iris.target


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
Validación cruzada y
K-fold

Y lo mejor es que podemos hacer todo de usa sola patada con sci-kit!
Hay que usar cross_val_score
Can you write Python code for it?

from sklearn.cross_validation import cross_val_score

resultados = cross_val_score(clf,X,Y, cv=10)

np.mean(resultados)


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
cuales son los tamanios de estos nuevos datos?
Can you write Python code for it?


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
vamos a ajustar nuestro modelo con fit y sacar su puntaje con score
Can you write Python code for it?

clf.fit(X,Y)
clf.score(X,Y)

clf = DecisionTreeClassifier()
clf.fit(X[:1000],Y[:1000])
clf.score(X,Y)*100


I am working on the file "Dia3/.ipynb_checkpoints/8_Arboles_y_Bosques_de_decisión-checkpoint.ipynb".
The first task is:
y ahora entrenamos nuestro modelo y checamos el error
Can you write Python code for it?

clf = DecisionTreeClassifier()
clf.fit(X_train,Y_train)
clf.score(X_test,Y_test)*100


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
1  A graficar el Hermoso Espectro Solar
Primero constantes numericas
Utilizaremos un modulo que manejara unidades numericas y fisicas:
Can you write Python code for it?


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
4 Recombinacion
Un poco abstracto (falta traducir)
In the best possible case, the only cause of electron-hole-pair recombination is radiative recombination. Radiative recombination occurs when an electron and hole collide, so it depends on how many electrons and holes there are, or more specifically it depends
on the electron and hole QFLs.
Recombination rate when electron QFL = hole QFL ("QFL" is "Quasi-Fermi Level")
This is the case where electron QFL = hole QFL throughout the semiconductor. An example is the solar cell at zero bias in the dark. Then it’s in thermal equilibrium and its radiation can be calculated by the blackbody formula – more specifically, assuming it’s a perfect blackbody above the bandgap and white-body below the bandgap. We also assume isotropic radiation from the top surface, and a mirror on the bottom surface.
Let RR0 be the "Radiative Recombination rate at 0 QFL splitting", (per solar-cell area). By the blackbody formula:
$$\text{RR0} = \frac{2\pi}{c^2 h^3} \int_{E_{gap}}^{\infty} \frac{E^2 dE}{\exp(E/(k_B T_{cell})) - 1}$$
Can you write Python code for it?

def RR0(Egap):
    integrand = lambda E : E**2 / (np.exp(E / (nu.kB * Tcell)) - 1)
    integral = scipy.integrate.quad(integrand, Egap, E_max, full_output=1)[0]
    return ((2 * np.pi) / (nu.c0**2 * nu.hPlanck**3)) * integral


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Actividad: Graficar el limite SC

Calcula la eficiencia maxima para cada valor de bandgap
x son los bangaps
y son la eficiencia maxima
Grafica!

Panorama de las perdidas
$(\text{Energia solar entrante}) = V_{MPP} \times I_{MPP}$

$ \qquad + (\text{Energia fotonica debajo del bandgap})$

$ \qquad + (\text{Energia fotonica arriba del bandgap} - \text{Numero de fotones arriba del bandgap} \times \text{Energia Bandgap})$

$ \qquad + ((\text{Numero de fotones arriba del bandgap}) - I_{MPP} / e) \times (\text{Energia Bandgap})$

$ \qquad + I_{MPP} \times (\text{Voltaje del Bandgap} - V_{MPP})$

Can you write Python code for it?

def electricidad_util(Egap):
    return max_efficiencia(Egap)

def energia_debajo_bandgap(Egap):
    integrand = lambda E : E * FotonesPorTEA(E)
    return scipy.integrate.quad(integrand, E_min, Egap, full_output=1)[0] / solar_constant

def exceso_arriba_bandgap(Egap):
    integrand = lambda E : (E - Egap) * FotonesPorTEA(E)
    return scipy.integrate.quad(integrand, Egap, E_max, full_output=1)[0] / solar_constant

def mpp_recombination(Egap):
    return (solar_photons_above_gap(Egap) - J_mpp(Egap) / nu.e) * Egap / solar_constant

def mpp_voltage_debajo_bangap(Egap):
    return J_mpp(Egap) * (Egap / nu.e - V_mpp(Egap)) / solar_constant


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Actividad: Limites de los datos
Para los limites de numeros onda ($\lambda$), podemos usar np.min y np.max.
Para la energia usaremos la formula
$$
E = \frac{\hbar c_0}{\lambda}
$$
Can you write Python code for it?

wavelength_min =
wavelength_max =
E_min = nu.hPlanck * nu.c0
E_max = nu.hPlanck * nu.c0


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Actividad: Usa las funciones con una celda solar 1.1eV
Calcula la energia y las perdidas
Por ejemplo para calcular el porcentaje de recombinacion usamos
python
mpp_recombination(1.1 * nu.eV)
Suma todo para ver que si llega al 100%
Can you write Python code for it?


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Bandgap Ideal y maxima efficiencia
Dado lo que tenemos, podemos calcular el bandgap ideal y maxima eficiencia, optimizando numericamente el producto JV para cada bandgap.
El "maximum power point" (MPP) es el punto donde la curve JV tiene un maximo, el poder maximo es la energia generada en el MPP, la eficiencia es el poder dividido por la constante solar (i.e. cuanta luz nos llega).
Can you write Python code for it?

from scipy.optimize import fmin

def fmax(func_to_maximize, initial_guess=0):
    """return the x that maximizes func_to_maximize(x)"""
    func_to_minimize = lambda x : -func_to_maximize(x)
    return fmin(func_to_minimize, initial_guess, disp=False)[0]

def V_mpp(Egap):
    """ voltage at max power point """
    return fmax(lambda V : V * densidad_de_corriente(V, Egap))

def J_mpp(Egap):
    """ current at max power point """
    return densidad_de_corriente(V_mpp(Egap), Egap)

def max_power(Egap):
    V = V_mpp(Egap)
    return V * densidad_de_corriente(V, Egap)

def max_efficiencia(Egap):
    return max_power(Egap) / solar_constant


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Constante Solar
Esta constante es irradiancia total del sol. Debe de estar cerca de 1000 W/m^2 , asi NREL normalizo sus datos.
Can you write Python code for it?

PowerPorTEA = lambda E : E * FotonesPerTEA(E)
# quad() es integracion
solar_constant = sp.integrate.quad(PowerPorTEA,E_min,E_max, full_output=1)[0]
print(solar_constant / (nu.W/nu.m**2))


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Creamos una funcion, interpolando valores intermedios
Can you write Python code for it?

AM15interp = scipy.interpolate.interp1d(AM15[:,0], AM15[:,1])


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Cuanto suma todo?
Graficando cada contribucion
Can you write Python code for it?

Egap_list = np.linspace(0.4 * nu.eV, 3 * nu.eV, num=25)
loss_list = []
for indx,Egap in enumerate(Egap_list):
    e_util = electricidad_util(Egap)
    gap_abajo = energia_debajo_bandgap(Egap)
    gap_arriba = exceso_arriba_bandgap(Egap)
    mpp_recomb = mpp_recombination(Egap)
    mpp_voltaje = mpp_voltage_debajo_bangap(Egap)
    loss_list.append([e_util,gap_abajo,gap_arriba,mpp_recomb,mpp_voltaje])
    print("%2.2f%% .. "%(indx/float(len(Egap_list))*100.0),end='')

loss_list = np.array(loss_list)
# sumamos todo y lo ponemos encima
loss_list = np.cumsum(loss_list,axis=1)

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.fill_between(Egap_list / nu.eV,              0, loss_list[:,0], facecolor="k")
ax1.fill_between(Egap_list / nu.eV, loss_list[:,0], loss_list[:,1], facecolor="m")
ax1.fill_between(Egap_list / nu.eV, loss_list[:,1], loss_list[:,2], facecolor="g")
ax1.fill_between(Egap_list / nu.eV, loss_list[:,2], loss_list[:,3], facecolor="b")
ax1.fill_between(Egap_list / nu.eV, loss_list[:,3],              1, facecolor="0.75")
plt.title('POWER GOES TO...\n'
          'Energia Util (negro);\n'
          'debajo del gap (magenta);\n'
          'exceso del gap (verde);\n'
          'Current loss from radiative recombination (azul)\n'
          'Voltage menor del bandgap (gris)')
plt.xlabel('Bandgap (eV)')
plt.ylabel('Fraccion de luz incidente')
plt.xlim(0.4, 3)
plt.ylim(0,1);


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Ejemplo:
Este calculo nos dice que hay cerca de $1.43 \times 10^{18}$ fotones solares con energia solar photons with energy entre 2eV y 2.001eV pegandole a un metro cuadrado (m^2) por segundo:
Can you write Python code for it?

print(FotonesPorTEA(2 * nu.eV) * (1 * nu.meV) * (1 * nu.m**2) * (1 * nu.s))


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
En funcion de la energia
Can you write Python code for it?

Egap_list = np.linspace(0.4 * nu.eV, 3 * nu.eV, num=100)
y_values = np.array([fotones_arriba_gap(E) for E in Egap_list])
plt.plot(Egap_list / nu.eV , y_values / (1e21 * nu.m**-2 * nu.s**-1))
plt.xlabel("Bandgap (eV)")
plt.ylabel("fotones arriba del gap ($10^{21}$ m$^{-2} \cdot $s$^{-1}$)");


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Example: An ideal 1.1eV-bandgap solar cell has an efficiency of 32.9%.
Can you write Python code for it?


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Examplo:
Una celda solar de 1.1eV de bandgap tiene una corriente corto-circuito de
 44 mA/cm$^2$ y un voltaje de circuito-abierto de 0.86V.
Can you write Python code for it?

print(JSC(1.1 * nu.eV) / (nu.mA / nu.cm**2))
print(VOC(1.1 * nu.eV) / nu.V)


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Graficas chidas!
Can you write Python code for it?

def awesome_settings():
    # awesome plot options
    sns.set_style("white")
    sns.set_style("ticks")
    sns.set_context("paper", font_scale=2)
    sns.set_palette(sns.color_palette('bright'))
    # image stuff
    plt.rcParams['figure.figsize'] = (12.0, 6.0)
    plt.rcParams['savefig.dpi'] = 60
    plt.rcParams['lines.linewidth'] = 4
    return

%config InlineBackend.figure_format='retina'
awesome_settings()


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Manipular datos
La columna 0 es la longitud de onda y la 2 es los datos AM1.5G
Can you write Python code for it?

AM15 = downloaded_array[:,[0,2]]
print(AM15)


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Para usarlo convertimos numeros a unidades, por ejemplo:
x = 5 * nu.cm significa "x es igual a 5 centimetros".
si quieres sacar el valor numerico de x, podemos dividir por las unidades
y = x / nu.mm, en este caso tenemos el valor numerico en milimetros.
Pruebalo!
Definimos la Celda solar cualquiera a una temperatura de 300 kelvin:
Can you write Python code for it?


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Que tamanio tienen los datos?
Can you write Python code for it?

csv_file = 'ASTMG173.csv'
downloaded_array = np.genfromtxt(csv_file, delimiter=",", skip_header=2)
downloaded_array.shape


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Recombination rate when electron QFL and hole QFL are split
By kinetic theory, the radiative recombination rate is proportional to the product of electron concentration
and hole concentration, $p\times n$. If you move the electron QFL up towards the conduction band by energy $E$,
the electron concentration increases by $\exp(-E/kT)$. Likewise, if you move the hole QFL down towards the
valence band by E, the hole concentration increases by $\exp(E/k_BT)$. Either way,
$p\times n \propto \exp(E/k_BT)$, where $E$ is the QFL energy splitting.
In the best possible case, the QFL splitting is equal to the external voltage (in reality, it may be larger
than the external voltage). Therefore, the lowest possible radiative recombaniton rate is:
$$\text{Recomb rate} = e \text{RR0} \exp(e V / k_B T_{cell}),$$
where $V$ is the external voltage.

Note for pedants: I’m using the expression for radiative recombination $\frac{2\pi}{c^2 h^3} \exp(eV/k_B T_{cell})\int_{E_{gap}}^\infty \frac{E^2 dE}{\exp(E/k_B T_{cell})-1}.$ This isn't quite right: A more accurate expression is: $\frac{2\pi}{c^2 h^3} \int_{E_{gap}}^\infty \frac{E^2 dE}{\exp((E-eV)/k_B T_{cell})-1}.$ The difference is negligible except for tiny tiny bandgaps (less than 200meV). For explanation see link or link. (Thanks Ze’ev!)

J-V curve
The current is from the electron-hole pairs that are created but which don’t recombine. In the best case, all the solar photons possible are absorbed, while none recombine except radiatively. This gives:
$$J = e (\text{SolarPhotonsAboveGap} - \text{RR0} (\exp(e V / k_B T_{cell}) - 1 ))$$
where $J$ is the current per unit area, and $V$ is the forward bias on the junction. The "-1" on the right accounts for spontaneous
generation of e-h pairs through thermal fluctuations at 300K. I will leave out the "-1" below because
$\text{RR0} \ll \text{SolarPhotonsAboveGap}$, at least in the range of bandgaps...
Can you write Python code for it?

def densidad_de_corriente(V, Egap):
    return nu.e * (fotones_arriba_gap(Egap) - RR0(Egap) * np.exp(nu.e * V / (nu.kB * Tcell)))

def JSC(Egap):
    return densidad_de_corriente(0, Egap)
def VOC(Egap):
    return (nu.kB * Tcell / nu.e) * np.log(fotones_arriba_gap(Egap) / RR0(Egap))


I am working on the file "Dia3/3_Limite_Shockley_Queisser.ipynb".
The first task is:
Vamos a dar unidades a cada columna

Columna1 es $\lambda$ numeros onda, entonces queremos usar $nm$ (nu.nm).
Columna2 es energia entonces queremos usar usar $W/(m^{2}nm)$ (nu.W,nu.m,nu.nm).
Can you write Python code for it?


I am working on the file "Dia3/4_Estadistica_Basica.ipynb".
The first task is:
Distribución uniforme
Lotería mexicana
Can you write Python code for it?


I am working on the file "Dia3/4_Estadistica_Basica.ipynb".
The first task is:
Hacemos dos listas, la primera contendrá las edades de los chavos de clubes de ciencia y la segusda el número de personas que tienen dicha edad
Can you write Python code for it?

Edades = np.array([15, 16, 17, 18, 19, 20, 21, 22, 23, 24])
Frecuencia = np.array([10, 22, 39, 32, 26, 10, 7, 5, 8, 1])
print sum(Frecuencia)
plt.bar(Edades, Frecuencia)
plt.show()


I am working on the file "Dia3/4_Estadistica_Basica.ipynb".
The first task is:
Probabilidad en una distribución normal

$1 \sigma$ = 68.26%
$2 \sigma$ = 95.44%
$3 \sigma$ = 99.74%
$4 \sigma$ = 99.995%
$5 \sigma$ = 99.99995%
Actividades
Grafica lo siguiente:

Crear 3 distribuciones variando mean
Crear 3 distribuciones variando std
Crear 2 distribuciones con cierto sobrelape

Campanas gaussianas en la Naturaleza
Examenes de salidad en prepas en Polonia:

Distribución normal en 2D
Can you write Python code for it?

x = np.random.normal(loc=2.0,scale=2.0,size=100)
y = np.random.normal(loc=2.0,scale=2.0,size=100)
plt.scatter(x,y)
plt.show()


I am working on the file "Dia3/4_Estadistica_Basica.ipynb".
The first task is:
Un poco de estadística
Can you write Python code for it?

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline


I am working on the file "Dia3/4_Estadistica_Basica.ipynb".
The first task is:
Una forma de automatizar esto es:
Can you write Python code for it?

tams = [1,2,3,4,5,6,7]

for tam in tams:
    numeros = np.random.randn(10**tam)
    plt.hist(numeros,bins=20 )
    plt.title('%d' %tam)
    plt.show()

numeros = np.random.normal(loc=2.0,scale=2.0,size=1000)
plt.hist(numeros)
plt.show()


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
<i class="fa fa-list"></i> Ahora entra el ML!
Los pasos tipicos para usar un algoritmo son:

clf, Definir tu modelo de classificacion.
fit(X,Y), Entrenar el algoritmo con datos de prueba (Train)
predict(X), Predecir nuevos datos enbase a las caracteristicas que aprendio. Regresara un nuevo arreglo y_pred.
score(X,Y), Calcular el error entre el valor predicado y el real. Normalmente esto es $\| y_{real} - y_{pred}\|$

Para K-means vamos a calcular el error como $1 - \frac{1}{N}\sum_i^N | y_{real} - y_{pred}| $, que en otras palabras es sumar todas las diferencias y dividir entre el numero total de datos, por cien.
En codigo esto se ve asi:
Can you write Python code for it?

clf.fit(X,Y)
y_pred = clf.predict(X)
# no te preocupes de esta formula
error= 1 - np.sum(np.abs(y_pred - Y))/float(len(Y))
score = clf.score(X,Y)
print("Precision es ",error)
print("Score es ",score)


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
A visualizar! (Solo para recordar como son los datos)
Con Y, el valor que queremos predecir, podemos asignar colores
Can you write Python code for it?

plt.scatter(X[:,0], X[:,1],c=Y,cmap=plt.cm.Paired)
plt.title('Datos Ejemplo')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Actividad!

Aplicar el algoritmo SVC a los datos de Iris completos!
Usar Kfold, cross_validation y division de datos
Cual score consiguen? Cual es el error?
Que ventajas/desventajas ven de usar un modelo lineal/poly/RBF?

Usa el archivo 'files/iris_full.csv'
Extra: Visualizar el score conforme el numero de K's (centros)
Can you write Python code for it?

ks =[ 2,5,8,10,20,40,60,80,100]
error=[]
for k in ks:
    kmeans = cluster.KMeans(k)
    kmeans.fit(X)
    error.append(kmeans.score(X,Y))

plt.plot(ks,error,'-o')
plt.xlabel('K-centros')
plt.ylabel('Error')
plt.show()


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Algoritmo-del-ritmo #1: K-means
K-mean es un algoritmo sencillo que podemos utilizar, busca los centros mas "probables" y entonces un punto se encuentra en la categoria si se encuentra mas cerca a estos centros.
Normalmente es un algoritmo para "clusterizacion", un problema de classificacion cuando no conoces el numeros de class, pero lo usaremos asi suponiendo que si sabes (claro).
Primero lo instanciamos como una variable clf, como clasificador con el numero 2 para indicar dos clases.
Can you write Python code for it?


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
De nuevo
Actividad!

Aplicar el algoritmo K-means a los datos de Iris completos!
Utilizar KFold y division de datos.
Cual score promedio consiguen? Cual es el error?

Usa el archivo 'files/iris_full.csv'
Algoritmo-del-ritmo #2: SVC
Support Vector Classifier
Suena complicado pero sigue una idea muy sencilla, tratar de dividir a los datos por una linea o curva, dando un "margen de error". Visualmente veremos a que se refiere este margen de error.
Podemo crearlo usando el codigo
python
clf = svm.SVC(kernel=tipo)
donde tipo = 'linear' o 'poly' o 'rbf'.
Modelo Lineal
Es decir usar lineas para hacer nuestra classificacion
Can you write Python code for it?

clf = svm.SVC(kernel='linear')
clf.fit(X,Y)
y_pred = clf.predict(X)
score = clf.score(X,Y)
print("Score es ",score)

ejeX = X[:, 0]
ejeY = X[:, 1]
plt.scatter(ejeX,ejeY, c=Y, zorder=10, cmap=plt.cm.Paired)
grafica_SVC(ejeX,ejeY,clf)
plt.title('Grafica de decision - Lineal')
plt.xlabel('x')
plt.ylabel('y')
plt.show()


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Espacios de classificacion
Can you write Python code for it?


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Librerias
Can you write Python code for it?

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
%matplotlib inline
# Estos son nuevos!
import sklearn as sk
from sklearn import preprocessing
from sklearn import cluster, svm
import sklearn.cross_validation as cv


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Modelo Polynomial
Aqui usaremos lineas curvas que siguen un polinomio de grado tres.
Can you write Python code for it?

clf = svm.SVC(kernel='poly',degree=3)
clf.fit(X,Y)
y_pred = clf.predict(X)
score = clf.score(X,Y)
print("Score es ",score)

ejeX = X[:, 0]
ejeY = X[:, 1]
plt.scatter(ejeX,ejeY, c=Y, zorder=10, cmap=plt.cm.Paired)
grafica_SVC(ejeX,ejeY,clf)
plt.title('Grafica de decision - Poly')
plt.xlabel('x')
plt.ylabel('y')
plt.show()


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Modelo RBF
RBF significa Radial Basis Functions
Can you write Python code for it?

clf = svm.SVC(kernel='rbf')
clf.fit(X,Y)
y_pred = clf.predict(X)
score = clf.score(X,Y)
print("Score es ",score)

ejeX = X[:, 0]
ejeY = X[:, 1]
plt.scatter(ejeX,ejeY, c=Y, zorder=10, cmap=plt.cm.Paired)
grafica_SVC(ejeX,ejeY,clf)
plt.title('Grafica de decision - RBF')
plt.xlabel('x')
plt.ylabel('y')
plt.show()


I am working on the file "Dia3/7_Machine_Learning_Intro.ipynb".
The first task is:
Nuevo espacio de classificacion
Can you write Python code for it?

X1 = X[:,0]
X2 = X[:,1]
grafica_KMeans(X1,X2,Y,clf)