Las más toneras de Radio Inspiración

El último reportaje de la saga #intervenganAPDAYC se está transmitiendo desde el Congreso del República (30-Oct-2013). Además el útero de marita acaba de publicar una base de datos interactiva con toda la repartición de las regalías que cobró APDAYC durante el 2012. También hay una hoja de ruta para intervenir APDAYC.

Es ya conocido que Radio Inspiración maneja muchas radios vía la Fundación Autor que está ligada a APDAYC. Esta cadena de radios pasa muchas canciones y queríamos averiguar si hay algún patrón interesante en aquellas canciones que son más difundidas y repetidas en su programación. Por ejemplo, qué canciones tienen como autores a los directivos de APDAYC?, cuáles pertenecen al catálogo de las empresas que están íntimamente relacionadas con APDAYC? (E.T. Music?, IEPMSA?)

Para eso hice una acumulación y tabulación de los datos de las canciones más toneras de Radio Inspiración (aquí están los rankings). La resolución de las imágenes era mínima y no se pudo hacer OCR. Entonces tuve que tipear las canciones una por una. Felizmente no eran muchas.

Luego era cuestión de juntar toda la información en un sólo archivo y hacer el plot usando funciones estadísticas del lenguaje de programación Python.

Canciones de Radio Inspiración del top10 que son más frecuentes.

Canciones de Radio Inspiración del top10 que son más frecuentes.

Canciones de Radio Inspiración que son más frecuentes en el top20

Canciones de Radio Inspiración que son más frecuentes en el top20

Sería interesante averiguar quiénes son los autores de esas canciones top-10. En teoría se podría ver cuáles son las canciones que pertenecen a cada autor y compositor registrado en APDAYC. Pero creo que eso es pedir demasiada transparencia.

Sección geek

Aquí el código para dibujar el gráfico:

Previa limpieza de datos:

cat all_data.csv | awk -F ',' '{print $2}' | sort | uniq -c | sort -hr | sed 's/^\s\+//g' | grep -v '1 ' | sed -r 's/^([0-9]+)\s+/\1,/g' > tmp


# -*- coding: utf-8 -*-
import prettyplotlib as ppl
import numpy as np
from prettyplotlib import plt
import csv
from array import array
import collections
""" Top 10 ranking """
x = []
y = []
ranks = ["1","2","3","4","5","6","7","8","9","10","maxima"]
with open("all_data.csv", "rb") as csvfile:
f = csv.reader(csvfile, delimiter=",")
for row in f:
print row
if row[0] in ranks:
x.append(row[1])
counter = collections.Counter(x)
x = []
y = []
for i in sorted(counter, key=counter.get, reverse=True):
if counter[i] != 1:
x.append(i)
y.append(counter[i])
for i in range(len(x)):
print str(y[i]) + "," + str(x[i])
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(20,6))
width = 0.35
ind = np.arange(len(y))
xdata = ind + 0.05 + width
ax.bar(ind, y)
ax.set_xticks(ind + 0.5)
ax.set_xticklabels(x, rotation="vertical")
ax.autoscale()
ax.set_title(u'Ranking de canciones "Top 10"\n Radio Inspiraci贸n FM',
fontdict = {'fontsize':24}
)
plt.ylabel('Frecuencia en "Top 10"', fontdict={'fontsize':18})
plt.xlabel(u"Canci贸n", fontdict={'fontsize':22})
ppl.bar(ax, np.arange(len(y)), y, grid="y")
fig.tight_layout()
fig.savefig("top10.png")

view raw

top10.py

hosted with ❤ by GitHub


# -*- coding: utf-8 -*-
import prettyplotlib as ppl
import numpy as np
from prettyplotlib import plt
import csv
from array import array
""" Top 20 ranking """
x = []
y = []
with open("tmp", "rb") as csvfile:
f = csv.reader(csvfile, delimiter=",")
for row in f:
print row
x.append(row[1])
y.append(row[0])
# converts strings to int
y = map(int,y)
print x
print y
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(20,6))
width = 0.35
ind = np.arange(len(y))
xdata = ind + 0.05 + width
ax.bar(ind, y)
ax.set_xticks(ind + 0.5)
ax.set_xticklabels(x, rotation="vertical")
ax.autoscale()
ax.set_title(u'Ranking de canciones "Top 20"\n Radio Inspiraci贸n FM',
fontdict = {'fontsize':24}
)
plt.ylabel('Frecuencia en "Top 20"', fontdict={'fontsize':18})
plt.xlabel(u"Canci贸n", fontdict={'fontsize':22})
ppl.bar(ax, np.arange(len(y)), y, grid="y")
#fig.tight_layout()
fig.savefig("top20.png")

view raw

top20.py

hosted with ❤ by GitHub

Aquí los datos:



maxima lejos de ti
1 El baile del caballo
1 Opam kay kasja
2 donde esta el amor
3 ya no sere tu panuelito
4 ai se eu te pego
5 tu ausencia
6 hoy he vuelto a ver el amor
7 intentalo
8 linda wawita
9 si me vas a abandonar
10 tirate un paso
11 balada boa
12 el ritmo de mi corazon
13 pedacito de mi vida
14 la pregunta
15 canto herido
16 corre
17 me prefieres a mi
18 el amor que perdimos
19 el teke teke
20 no te recuerdo
revelacion festroni-k
21 el dinero
21 el cuchi cuchi
22 tento tu love
23 virgen
23 en aquel lugar
24 si te vas que hare
24 te burlabas de mi
25 bombon asesino
26 chora me liga
27 la escobita
27 gitana
28 mil heridas
29 la borrachita
29 como te olvido
30 te dejo en libertad
31 cuando se pierde un amor
32 se me ha perdido el corazon
33 te eche al olvido
34 te amare
35 que pena
36 curandero de amor
37 la borrachita
37 dutty love
38 corazon herido
39 te extrano tanto
40 mr saxobeat
41 acabame
41 estar sin ti
42 corazon embustero
43 obsesion
44 ya no te aguanto
44 tirana
45 no te voy a preguntar
46 he vuelto por ti
46 te va a doler
47 si me tenias
48 esta noche
49 buscandote
50 danza kuduro
maxima bara bere
1 mi estrella
2 el baile de la gallina
3 tu me cambiaste la vida
4 tu nombre
5 more
6 diganle
7 domitila
8 volvi a nacer
9 aprendere
10 el amor esta pero viene y se va
11 como le explico a mi corazon
12 vete lejos
13 el baile del tao/el meneito arrebatao
14 leyes del corazon
15 alejate de mi
maxima bara bere
1 mi estrella
2 more
3 el baile de la gallina
4 volvi a nacer
5 tu me cambiaste la vida
6 camuflaje
7 diganle
8 domitila
9 tu nombre
10 el amor esta pero viene y se va
11 aprendere
12 leyes del corazon
13 vete lejos
14 como le explico a mi corazon
15 el baile del tao/el meneito arrebatao
maxima el baile de la gallina
1 tu nombre
2 tu me cambiaste la vida
3 aprendere
4 el baile del tao/el meneito arrebatao
5 bara bere
6 diganle
7 vete lejos
8 el amor esta pero viene y se va
9 mi estrella
10 como le explico a mi corazon
11 leyes del corazon
12 more
13 domitila
14 alejate de mi
15 volvi a nacer
maxima tu nombre
1 el baile del tao/el meneito arrebatao
2 vete lejos
3 aprendere
3 diganle
4 el baile de la gallina
5 mi estrella
6 el amor esta pero viene y se va
7 leyes del corazon
8 tu me cambiaste la vida
9 como le explico a mi corazon
10 bara bere
11 alejate de mi
12 el dinero
13 domitila
14 more
15 volvi a nacer
maxima tu nombre
1 el baile del tao/el meneito arrebatao
2 vete lejos
3 aprendere
4 leyes del corazon
5 mi estrella
6 el amor esta pero viene y se va
7 como le explico a mi corazon
8 el dinero
9 el baile de la gallina
10 alejate de mi
11 diganle
12 tu me cambiaste la vida
13 bara bere
14 cuando el amor se acaba
15 domitila
maxima el baile del tao/el meneito arrebatao
1 aprendere
2 vete lejos
3 tu nombre
4 mi estrella
5 leyes del corazon
6 el dinero
7 el amor esta pero viene y se va
8 como le explico a mi corazon
9 alejate de mi
10 el baile de la gallina
11 cuando el amor se acaba
12 tu me cambiaste la vida
13 se fue mi amor
14 diganle
15 bara bere
maxima aprendere
1 vete lejos
2 el baile del tao/el meneito arrebatao
3 leyes del corazon
4 el dinero
5 como le explico a mi corazon
6 alejate de mi
7 tu nombre
8 mi estrella
9 cuando el amor se acaba
10 el amor esta pero viene y se va
11 mix celeste
12 se fue mi amor
13 fria
14 el baile de la gallina
15 limbo
maxima aprendere
1 vete lejos
2 el dinero
3 leyes del corazon
4 cuando se acaba el amor
5 mix celeste
6 alejate de mi
7 fria
7 como le explico a mi corazon
8 se fue mi amor
9 el baile del tao/el meneito arrebatao
10 aguita de coco
11 tu nombre
12 mi estrella
13 el amor esta pero viene y se va
14 limbo
15 todo me da vueltas
maxima aprendere
1 el dinero
2 mix celeste
3 cuando se acaba el amor
4 fria
5 alejate de mi
6 se fue mi amor
7 aguita de coco
8 vete lejos
9 el baile del tao/el meneito arrebatao
9 todo me da vueltas
10 leyes del corazon
11 tu nombre
12 como le explico a mi corazon
13 limbo
14 un loco amor
15 hasta que salga el sol
maxima mix celeste
1 el dinero
2 cuando el amor se acaba
3 aprendere
4 fria
5 aguita de coco
6 se fue mi amor
7 leyes del corazon
8 alejate de mi
9 el baile del tao/el meneito arrebatao
10 un loco amor
11 vete lejos
12 hasta que salga el sol
13 limbo
14 llora llora corazon
15 tu nombre
maxima el dinero
1 cuando el amor se acaba
2 aguita de coco
3 mix celeste
4 fria
5 se fue mi amor
6 todo me da vueltas
7 leyes del corazon
8 un loco amor
9 hasta que salga el sol
10 llora llora corazon
11 alejate de mi
12 aprendere
12 como te olvido
13 el baile del tao/el meneito arrebatao
14 limbo
15 vete lejos
maxima el dinero
1 aguita de coco
2 mix celeste
3 fria
4 se fue mi amor
5 todo me da vueltas
6 hasta que salga el sol
7 como te olvido
8 un loco amor
9 llora llora corazon
9 cuando el amor se acaba
10 leyes del corazon
11 alejate de mi
12 donde estaras
13 por eso te amo
14 puro cuento
15 aprendere
maxima aguita de coco
1 fria
2 se fue mi amor
3 hasta que salga el sol
4 todo me da vueltas
5 el dinero
6 mix celeste
6 como te olvido
7 un loco amor
8 llora llora corazon
9 por eso te amo
10 leyes del corazon
11 donde estaras
12 yo te lo dije
13 puro cuento
14 alejate de mi
15 el pegao
maxima fria
1 hasta que salga el sol
2 se fue mi amor
3 aguita de coco
4 todo me da vueltas
5 como te olvido
6 un loco amor
7 por eso te amo
8 llora llora corazon
9 el dinero
9 leyes del corazon
10 yo te lo dije
11 donde estaras
12 parranda amor amor
13 puro cuento
14 el pegao
15 mix celeste
maxima fria
1 hasta que salga el sol
2 se fue mi amor
3 por eso te amo
4 como te olvido
5 un loco amor
6 llora corazon llora
7 aguita de coco
8 yo te lo dije
9 todo me da vueltas
10 donde estaras
10 parranda amor amor
11 puro cuento
12 el pegao
13 ella se fue llorando
14 carita de pasaporte
15 el dinero
15 leyes del corazon
maxima hasta que salga el sol
1 se fue mi amor
2 por eso te amo
3 como te olvido
4 un loco amor
5 fria
5 llora corazon llora
6 parranda amor amor
7 yo te lo dije
8 donde estaras
9 puro cuento
9 el pegao
10 ella se fue llorando
11 carita de pasaporte
12 aguita de coco
13 amigo mio
14 zumba
15 todo me da vueltas
maxima hasta que salga el sol
1 por eso te amo
2 como te olvido
3 llora corazon llora
3 parranda amor amor
4 un loco amor
5 se fue mi amor
6 yo te lo dije
7 carita de pasaporte
8 donde estaras
8 ella se fue llorando
9 puro cuento
9 el pegao
10 fria
11 amigo mio
12 zumba
13 lastima
14 el amor mas grande del planeta
15 aguita de coco
maxima por eso te amo
1 como te olvido
1 parranda amor amor
2 llora corazon llora
2 un loco amor
3 yo te lo dije
4 carita de pasaporte
5 amigo mio
6 ella se fue llorando
6 el pegao
7 el amor mas grande del planeta
8 zumba
9 lastima
10 puro cuento
11 caprichos del corazon
12 mi corazon esta llorandote
13 princesa
14 tu poeta
15 hasta que salga el sol
15 donde estaras
maxima por eso te amo
1 como te olvido
2 parranda amor amor
2 llora corazon llora
3 un loco amor
4 yo te lo dije
5 carita de pasaporte
6 hasta que salga el sol
7 ella se fue llorando
7 puro cuento
8 el pegao
9 amigo mio
10 el amor mas grande del planeta
11 zumba
12 donde estaras
12 lastima
13 se fue mi amor
13 caprichos del corazon
14 mi corazon esta llorandote
15 fria
maxima como te olvido
1 parranda amor amor
2 yo te lo dije
3 carita de pasaporte
3 amigo mio
4 por eso te amo
5 llora corazon llora
5 ella se fue llorando
6 el amor mas grande del planeta
7 un loco amor
7 zumba
8 lastima
9 el pegao
9 caprichos del corazon
10 mi corazon esta llorandote
11 princesa
12 hay que saber perder
13 tu poeta
14 te extrano tanto
14 cuando me acuerdo de ti
15 puro cuento
maxima parranda amor amor
1 carita de pasaporte
1 amigo mio
2 yo te lo dije
3 como te olvido
4 ella se fue llorando
5 zumba
6 lastima
6 caprichos del corazon
7 mi corazon esta llorandote
8 por eso te amo
9 un loco amor
10 te extrano tanto
11 llora corazon llora
11 hay que saber perder
12 tu poeta
13 cuando me acuerdo de ti
14 algo que decir
15 el pegao
maxima parranda amor amor
1 carita de pasaporte
1 amigo mio
2 yo te lo dije
3 ella se fue llorando
3 el amor mas grande del planeta
4 lastima
4 mi corazon esta llorandote
5 zumba
6 caprichos del corazon
7 princesa
8 te extrano tanto
9 hay que saber perder
10 como te olvido
11 tu poeta
12 cuando me acuerdo de ti
13 por eso te amo
13 algo que decir
14 te olvidare
15 llora corazon llora
maxima amigo mio
1 yo te lo dije
1 ella se fue llorando
2 parranda amor amor
2 el amor mas grande del planeta
3 mi corazon esta llorandote
4 zumba
4 princesa
5 carita de pasaporte
5 caprichos del corazon
6 te extrano tanto
7 lastima
7 tu poeta
8 hay que saber perder
8 te olvidare
9 cuando me acuerdo de ti
10 algo que decir
11 vivir mi vida
12 tan solo un minuto
13 si tu me faltas
14 como te olvido
15 un loco amor
16 llora corazon llora
17 hasta que salga el sol
18 me enamore
19 angel en zapatillas
19 hasta el fin del mundo
20 asi no
maxima ella se fue llorando
1 el amor mas grande del planeta
2 mi corazon esta llorandote
3 yo te lo dije
3 princesa
4 zumba
4 caprichos del corazon
5 amigo mio
5 te extrano tanto
6 lastima
6 tu poeta
7 hay que saber perder
7 cuando me acuerdo de ti
8 parranda amor amor
8 te olvidare
9 tan solo un minuto
10 algo que decir
11 vivir mi vida
12 carita de pasaporte
12 si tu me faltas
13 hasta el fin del mundo
14 me enamore
15 angel en zapatillas
16 asi no
17 festroni-k
18 como te olvido
18 llora corazon llora
19 un loco amor
20 hasta que salga el sol
maxima el amor mas grande del planeta
1 mi corazon esta llorandote
1 princesa
2 ella se fue llorando
3 caprichos del corazon
4 zumba
4 lastima
5 tu poeta
5 hay que saber perder
6 cuando me acuerdo de ti
6 te olvidare
7 tan solo un minuto
8 amigo mio
8 te extrano tanto
9 algo que decir
10 vivir mi vida
11 si tu me faltas
11 festroni-k
12 hasta el fin del mundo
13 parranda amor amor
13 me enamore
14 asi no
15 angel en zapatillas
16 yo te lo dije
17 carita de pasaporte
18 el tiempo
19 para siempre
20 como te olvido
maxima mi corazon esta llorandote
1 princesa
2 el amor mas grande del planeta
2 caprichos del corazon
3 lastima
3 tu poeta
4 te olvidare
5 hay que saber perder
6 cuando me acuerdo de ti
6 vivir mi vida
7 tan solo un minuto
8 ella se fue llorando
8 zumba
9 algo que decir
9 hasta el fin del mundo
10 festroni-k
11 si tu me faltas
11 me enamore
12 asi no
13 amigo mio
14 angel en zapatillas
15 te extrano tanto
16 el tiempo
17 para siempre
18 parranda amor amor
18 carita de pasaporte
19 perdon
19 lo que un dia fue no sera
20 yo te lo dije
maxima mi corazon esta llorandote
1 princesa
1 caprichos del corazon
2 lastima
2 tu poeta
3 te olvidare
4 hay que saber perder
5 cuando me acuerdo de ti
5 vivir mi vida
6 tan solo un minuto
7 el amor mas grande del planeta
7 hasta el fin del mundo
8 algo que decir
8 festroni-k
9 ella se fue llorando
10 si tu me faltas
10 asi no
11 me enamore
12 para siempre
13 angel en zapatillas
14 el tiempo
15 zumba
16 amigo mio
16 te extrano tanto
17 lo que un dia fue no sera
18 carita de pasaporte
18 perdon
19 vete
20 parranda amor amor
maxima princesa
1 caprichos del corazon
1 tu poeta
2 mi corazon esta llorandote
2 te olvidare
3 vivir mi vida
4 hay que saber perder
4 cuando me acuerdo de ti
5 hasta el fin del mundo
6 lastima
7 festroni-k
8 algo que decir
9 asi no
10 me enamore
10 para siempre
11 el amor mas grande del planeta
12 lo que un dia fue no sera
13 angel en zapatillas
13 el tiempo
14 ella se fue llorando
15 si tu me faltas
15 vete
16 zumba
17 te extrano tanto
17 perdon
18 amigo mio
19 carita de pasaporte
20 soy soltera y hago lo
maxima caprichos del corazon
1 tu poeta
1 te olvidare
2 vivir mi vida
3 princesa
3 hasta el fin del mundo
4 hay que saber perder
4 cuando me acuerdo de ti
5 lastima
6 festroni-k
6 asi no
7 para siempre
8 me enamore
8 lo que un dia fue no sera
9 tan solo un minuto
10 el tiempo
11 mi corazon esta llorandote
11 el amor mas grande del planeta
12 soy soltera y hago lo
13 algo que decir
14 ella se fue llorando
14 vete
15 perdon
16 angel en zapatillas
17 te extrano tanto
18 tributo a la cumbia
19 carita de pasaporte
19 amigo mio
20 zumba

view raw

all_data.csv

hosted with ❤ by GitHub

Los que cobraron más: APDAYC 2012

El útero de marita está emitiendo informes diarios acerca de los manejos del dinero que realiza APDAYC en nombre de los compositores y escritores de música del Perú.

Marco Sifuentes escribió en Facebook que requiere ayuda para poder asimilar mejor todos los destapes que está posteando en su blog utero.pe (junto con Jonathan Castro).

Con ánimos de ayudar a la causa (#intervenganAPDAYC) me puse a ver la cantidad de dinero que cobraron algunos directivos del APDAYC durante el 2012, por concepto de derechos de autor. En el post uterino «se la llevan facil» aparecen algunos números, pero no se aprecia si esta ganancia es mucho (o poco) en comparación con lo ganado por los asociados de APDAYC que no son miembros del Consejo Directivo.

Intenté hacer un gráfico de lo ganado por los compositores más prolíficos en comparación con el dinero que cobraron los directivos de APDAYC.

Obtuve la lista de directivos de aqui. Y las ganancias de los 250 asociados que tuvieron más regalías durante el 2012 de aqui.

Tuve que bajarme el PDF, convertirlo a texto, y dibujar el gráfico. Como soy bien nerd, para convertir el texto usé comandos de Linux y para dibujar el gráfico usé el lenguaje de programación Python (con su librería gráfica matplotlib).

Aqui está el gráfico, y más abajo el código que tuve que tipear para hacer este «análisis» tan diligente 😉 (hacer click para agrandar la imagen).

Los que más cobraron, APDAYC 2012

Los que más cobraron, APDAYC 2012

Manya, son haaaaaartos los compositores que cobran regalías. Pero son unos pocos quien se llevan harta plata, y son muchos los que cobran poquito (se lleva 3 mil soles al año el que está en puesto 250).

Debemos alegrarnos por los miembros del Consejo Directivo de APDAYC que son afortunados en estar entre los que más regalías se llevaron durante el 2012 (por ejemplo José Escajadillo, Armando Massé y Julio Andrade, entre otros).

[Actualización 6 de Octubre 2013]

Un tuitero/bloguero influyente me sugirió averiguar si hay un patrón de las ganancias recibidas por los socios que tienen mayor poder de decisión en APDAYC. Osea ver si los que cortan en jamón en APDAYC ganan más o ganan menos en comparación con los socios que tienen menor voto en los manejos de la Sociedad Colectiva APDAYC.

El útero de marita nos cuenta que no todos los socios de APDAYC tienen el mismo derecho a voto. Por ejemplo cada voto de los socios principales vale por 5, cada voto de los socios vitalicios vale como 4 votos, cada voto de socios activos vale por 3.

Se supone que en una democracia cada persona es igual a un voto, pero en APDAYC eso no es así. Entonces los que tienen mayor poder de decisión del rumbo de APDAYC, los que parten y reparten son principalmente ese grupo de socios principales, vitalicios y activos.

Cuanto reciben de regalías los que cortan el jamón en APDAYC?

Estuve mirando otra vez los datos y me di cuenta que estos socios privilegiados son casi la mitad (138 socios, o el 55%) pero se llevan la mayoría de plata recaudada en APDAYC. El 84% del dinero cobrado por regalías durante el 2012 (7 millones de soles) se lo llevaron este grupo de socios con voto privilegiado. Mientras que la otra mitad de socios le corresponde poco más de 1 millon (16% del total).

Resulta interesante que los que cortan el jamón en APDAYC se lleven el 84% del dinero (a pesar de ser la mitad de socios con derecho a voto).

Bueno dicen que el que parte y reparte se lleva la mayor parte?

Aqui les dejo el gráfico para digerir mejor los datos (al final de este post está todo el código usado para los análisis).

Ganancias de socios principales, vitalicios y activos

La mitad de socios tiene voto privilegiado, cada voto vale de 3 a 5 veces que los votos de la otra mitad. Es curioso que además se lleven la mayor tajada de las regalías recaudadas por APDAYC.

[Actualización 7 Oct 2013]

Pero qué porcentaje de TODAS las regalías recibe este grupo de socios?

En la Memoria de APDAYC del 2012, señalan en la página 12 (o página 22 en
realidad), que se repartieron 29 millones de soles entre todos sus asociados.

Según el útero de marita «APDAYC tiene más de 8 mil afiliados, pero sólo 248 tienen derecho a voto en la Asamblea General».

Supongamos que APDAYC tiene 8 mil socios, entonces entre ellos repartieron 29 millones de soles durante el 2012.

Quiero saber:

  • Qué porcentaje de estos 8mil son los socios con votos privilegiados (principales, vitalicios y activos).
  • Qué porcentaje del dinero total se llevan estos socios con voto privilegiado?

Estos son los datos:

  • Dinero total: 29,197,272 Soles
  • Número total de socios: 8000
  • Total socios con voto privilegiado: 138
  • Dinero recibido por socios principales: 1240,041.19
  • Dinero recibido por socios vitalicios: 59,347.69
  • Dinero recibido por socios activos: 5731,717.18
  • Porcentaje de socios con voto privilegiado: 1.7%
  • Porcentaje del dinero que se recibe este grupo: 24.08%

Y este es el gráfico resultante:

Porcentaje de ganancias de socios con voto privilegiado

Porcentaje de ganancias de socios con voto privilegiado, APDAYC 2012

Pues es de esperarse que el 1.7% de socios se lleve la cuarta parte de las regalías. Si vemos otra vez el gráfico de los socios más rendidores, los que más plata reciben, veremos que son los socios principales y activos (con voto multiplicado por 5 y por 3) quienes reciben más regalías.

Los socios principales y activos son los que más regalías cobraron durante el 2012.

Los socios principales y activos son los que más regalías cobraron durante el 2012.

Sección para geeks

Aqui el código en la consola de Linux:

# Bajarse la memoria en PDF y extraer las páginas 34, 35 y 36
pdftk Memoria_APDAYC_2012.pdf cat 34-36 output mas_productivos_2012.pdf

# convertir PDF a texto
pdftotext -layout mas_productivos_2012.pdf

# hacer limpieza manual para eliminar texto que no se necesita (joyas y premios)
# extraer nombres y ganancias
cat mas_productivos_2012.txt | sed 's/S\/\.//g' | sed 's/\$//g' | sed 's/\s\+/ /g' | sed -r 's/([A-Z]),/\1/g' | sed 's/,//g' | sed -r 's/(([A-Z]+\s)+)/\1,/g' | sed 's/ ,/,/g' | sed -r 's/^[0-9]+\s[0-9]+\s//g' | sed -r 's/\s*$//g' > tmp_mas_productivos.txt

# dibujar el gráfico usando Python y matplotlib
python mas_productivos.py

Y aqui el código actualizado en el lenguage Python:

# -*- coding: utf-8 -*-
import codecs
import locale
import prettyplotlib as ppl
import numpy as np
from prettyplotlib import plt

locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')

f = codecs.open("output/tmp_socios_principales.txt", encoding="utf-8")
data = f.read()
f.close()

# Esta es la lista de "Socios principales"
data = data.split("\n")
principales = []
vitalicios = []
activos = []
for line in data:
    line = line.strip()
    if len(line) > 0:
        line = line.split(",")
        if line[1] == "PRINCIPAL":
            principales.append(line[0])
        if line[1] == "VITALICIO":
            vitalicios.append(line[0])
        if line[1] == "ACTIVO":
            activos.append(line[0])

# cantidad de regalias por "socios principales"
f = codecs.open("output/tmp_mas_productivos.txt", encoding="utf-8")
data = f.read()
f.close()

data = data.split("\n")
princi_money = float()
vitali_money = float()
activo_money = float()
otros_money = float()

for i in data:
    if len(i) > 0:
        i = i.split(",")
        author = i[0]
        money = i[1].split(" ")
        money = money[len(money)-1]
        if author in principales:
            princi_money += float(money)
        elif author in vitalicios:
            vitali_money += float(money)
        elif author in activos:
            activo_money += float(money)
        else:
            otros_money += float(money)

## DO principales + vitalicios
## numero de socios por categoria
numero_socios = [str(len(principales) + len(vitalicios)),
                 str(250-len(principales)-len(vitalicios))]

print "Socios privilegiados con el voto " + str(len(principales) +
        len(vitalicios) + len(activos))

y = [princi_money + vitali_money, activo_money + otros_money]
annotate = [locale.format("%d", y[0], grouping=True) + " S/.",
            locale.format("%d", y[1], grouping=True) + " S/."]

width = 0.35
bar_color = ["r", "#66c2a5"]
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(8,6))
ind = np.arange(2)
xdata = ind + 0.05 + width
ax.bar(ind, y)
ax.set_xticks(ind + 0.4)
ax.set_xticklabels(["principales y vitalicios\n(" + numero_socios[0] + " socios)",
                    "otros socios\n(" + numero_socios[1] + " socios)",
                    ],
                    rotation="horizontal", multialignment="center")
ax.autoscale()
ax.set_title(u'Ganancias de socios principales y vitalicios\n comparados con el resto de socios',
        fontdict = {'fontsize':22}
        )

y_labels = ["0", "1,000,000", "2,000,000", "3,000,000", "4,000,000",
                "5,000,000", "6,000,000", "7,000,000", "8,000,000"]
ax.set_yticklabels(y_labels)

plt.ylabel(u'Regalías en S/.', fontdict={'fontsize':18})
plt.xlabel(u'Beneficiarios', fontdict={'fontsize':22})

ppl.bar(ax, np.arange(len(y)), y, grid="y", annotate=annotate, color=bar_color)
fig.tight_layout()
fig.savefig("output/socios_principales.png")
output = "Plot de socios Principales + Vitalicios guardados en archivo "
output += "``output/socios_principales.png``\n"
print output

## DO principales + vitalicios + activos
## numero de socios por categoria
numero_socios = [str(len(principales) + len(vitalicios) + len(activos)),
                 str(250-len(principales) - len(vitalicios) - len(activos))]

# Porcentaje de socios principales+vitalicios+activos versus otros
percent_pva = float((len(principales)+len(vitalicios)+len(activos))*100/250)
percent_socios_otros = 100.0 - percent_pva

# Porcentaje de DINERO de socios principales+vitalicios+activos versus otros
y = [princi_money + vitali_money + activo_money, otros_money]
percent_money_pva = int(float(princi_money + vitali_money + activo_money)*100/(y[0] + y[1]))
percent_money_otros = 100 - percent_money_pva

annotate = [locale.format("%d", y[0], grouping=True) +
                " S/.",
            locale.format("%d", y[1], grouping=True) +
                " S/."]

width = 0.35
bar_color = ["r", "#0099FF"]
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(9,6))
ind = np.arange(2)
xdata = ind + 0.05 + width

# write percentaje of money to plot
ax.annotate(str(percent_money_pva) +"%\ndel dinero", ha="center", color="w",
        size=38, xy=(0.2,1.2), xytext=(0.4, 2500000))
ax.annotate(str(percent_money_otros) +"%\ndel dinero", ha="center", color="w",
        size=18, xy=(0.2,1.2), xytext=(1.4, 150000))

ax.bar(ind, y)
ax.set_xticks(ind + 0.4)
ax.set_xticklabels(["principales, vitalicios y activos\n(" +
                            str(int(percent_pva)) + "% del total)",
                    "otros socios\n(" +
                            str(int(percent_socios_otros)) + "% del total)"
                    ],
                    rotation="horizontal", multialignment="center")
ax.autoscale()
ax.set_title(u'Ganancias de socios principales, vitalicios y activos'
        + '\ncomparados con el resto de socios',
        fontdict = {'fontsize':22}
        )

y_labels = ["0", "1,000,000", "2,000,000", "3,000,000", "4,000,000",
                "5,000,000", "6,000,000", "7,000,000", "8,000,000"]
ax.set_yticklabels(y_labels)

plt.ylabel(u'Regalías en S/.', fontdict={'fontsize':18})
plt.xlabel(u'Beneficiarios', fontdict={'fontsize':22})

ppl.bar(ax, np.arange(len(y)), y, annotate=annotate, color=bar_color)
fig.tight_layout()
fig.savefig("output/socios_principales_vitalicios_activos.png")
output = "Plot de socios Principales + Vitalicios + Activos guardados en archivo "
output += "``output/socios_principales_vitalicios_activos.png``\n"
print output

Código de cuáles miembros del consejo directivo se llevan más regalías


# -*- coding: utf-8 -*-
import codecs
import prettyplotlib as ppl
import numpy as np
from prettyplotlib import plt
import re
f = codecs.open("tmp_mas_productivos.txt", encoding="utf-8")
data = f.read()
f.close()
# This is the list of APDAYC directors "Comite Directivo"
apdayc = [
"Escajadillo Farro",
"Masse Fernandez",
"Moreira Mercado",
"Andrade Rios",
"Cabrejos Bermejo",
"Fuentes Barriga",
"Montaño Jaramillo",
"Rodriguez Grandez",
"Laura Saavedra",
"Bustamante Gomez"
]
x = []
y = []
bar_color = []
data = data.split("\n")
for i in data:
if len(i) > 0:
i = i.split(",")
author = i[0].split(" ")
author = author[0].capitalize() + " " + author[1].capitalize()
if author in apdayc:
bar_color.append("r")
else:
bar_color.append("#66c2a5")
money = i[1].split(" ")
total_money = money[len(money)-1]
x.append(author)
y.append(total_money)
y = map(float, y)
plt.rc('font', **{'family': 'DejaVu Sans'})
fig, ax = plt.subplots(1, figsize=(40,6))
width = 0.35
ind = np.arange(len(y))
xdata = ind + 0.05 + width
ax.bar(ind, y)
ax.set_xticks(ind + 0.5)
ax.set_xticklabels(x, rotation="vertical")
ax.autoscale()
ax.set_title(u'Los Asociados de APDAYC que cobraron más dinero en el 2012\nen color rojo figuran los miembros del Consejo Directivo',
fontdict = {'fontsize':24}
)
y_labels = ["0", "200,000", "400,000", "600,000", "800,000", "1,000,000"]
ax.set_yticklabels(y_labels)
plt.ylabel(u'Regalías en S/.', fontdict={'fontsize':18})
plt.xlabel(u'Beneficiario', fontdict={'fontsize':22})
print len(y)
print len(x)
ppl.bar(ax, np.arange(len(y)), y, grid="y", color=bar_color)
fig.tight_layout()
fig.savefig("output/mas_productivos.png")
###
# Que tal si ploteamos los socios principales, vitalicios y activos
f = codecs.open("data/socios_principales.tsv", encoding="utf-8")
data = f.read()
f.close()
bar_color = []
new_x = []
new_y = []
data = data.split("\n")
# keep all data in a dictionary
df = {}
for line in data:
if len(line) > 0:
line = re.sub("^\s+", "", line)
line = re.sub("\s{2,}", "|", line)
line = line.split("|")
tmp = line[3].split(",")
tmp2 = tmp[0].split(" ")
try:
author = tmp2[0].capitalize() + " " + tmp2[1].capitalize()
except:
continue
if line[4] == "PRINCIPAL":
index = x.index(author)
money = y[index]
df[money] = [author, "b"]
x.remove(author)
y.remove(y[index])
elif line[4] == "VITALICIO":
try:
index = x.index(author)
money = y[index]
df[money] = [author, "g"]
x.remove(author)
y.remove(y[index])
except:
continue
elif line[4] == "ACTIVO":
try:
index = x.index(author)
money = y[index]
df[money] = [author, "r"]
x.remove(author)
y.remove(y[index])
except:
continue
else:
try:
index = x.index(author)
money = y[index]
df[money] = [author, "#D8D8D8"]
x.remove(author)
y.remove(y[index])
except:
continue
for author in x:
index = x.index(author)
money = y[index]
df[money] = [author, "#D8D8D8"]
d = sorted(df, reverse=True)
for i in d:
new_y.append(i)
new_x.append(df[i][0])
bar_color.append(df[i][1])
fig, ax = plt.subplots(1, figsize=(40,6))
ax.bar(ind, new_y)
ax.set_xticks(ind + 0.5)
ax.set_xticklabels(new_x, rotation="vertical")
ax.autoscale()
ax.set_title(u'Los Asociados de APDAYC que recibieron más regalías en el 2012',
fontdict = {'fontsize':24}
)
y_labels = ["0", "200,000", "400,000", "600,000", "800,000", "1,000,000"]
ax.set_yticklabels(y_labels)
plt.ylabel(u'Regalías en S/.', fontdict={'fontsize':18})
plt.xlabel(u'Beneficiarios', fontdict={'fontsize':22})
ppl.bar(ax, np.arange(len(new_y)), new_y, grid="y", color=bar_color)
fig.tight_layout()
fig.savefig("output/mas_productivos2.png")

Aquí el código y datos para generar el pie-chart



socios_pva 1.725
resto_de_socios 98.275
socios principales vitalicios y activos 24.0813801372
resto de socios 75.9186198628

Y aquí el código necesario para hacer el plot usando el paquete estadístico R.

library(ggplot2)
datos <- read.csv("output/socios_pva_versus_total.csv", sep=",",
              header=FALSE)
money <- datos[3:4,]
names(money) <- c("Socios","Regalías")

png(filename="output/socios_pva_versus_total.png",
      width=950, height=630, units="px")
ggplot(money, aes(x="", y=Regalías, fill=Socios)) +
  theme(text = element_text(size=22)) +
  geom_bar(width=1, stat="identity") +
  coord_polar("y", start=pi/3) +
  labs(title="Repartición de regalías, APDAYC 2012")
dev.off()