In [1]:
%matplotlib inline
import csv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

In [2]:
records = pd.read_csv('../../data/cleaned_texts_oct19_2016.tsv', sep='\t')
records = records[records.pub_year > 1699]
records = records[records.pub_year < 1800]

In [3]:
records.replace(
    'el ingenioso hidalgo don qvixote de la mancha,cervantes saavedra, miguel de',
    'el ingenioso hidalgo don quixote de la mancha,cervantes saavedra, miguel de',
    inplace=True
)


/home/davebshow/.virtualenvs/scientific3/lib/python3.4/site-packages/pandas/core/common.py:449: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  mask = arr == x

In [14]:
records.replace(
    'vida y hechos del ingenioso cavallero don quixote de la mancha,cervantes saavedra, miguel de',
    'vida y hechos del ingenioso caballero don quixote de la mancha,cervantes saavedra, miguel de',
    inplace=True
)


/home/davebshow/.virtualenvs/scientific3/lib/python3.4/site-packages/pandas/core/common.py:449: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  mask = arr == x

In [15]:
records.replace(
    'vida, y hechos del ingenioso cavallero don quixote de la mancha,cervantes saavedra, miguel de',
    'vida y hechos del ingenioso caballero don quixote de la mancha,cervantes saavedra, miguel de',
    inplace=True
)


/home/davebshow/.virtualenvs/scientific3/lib/python3.4/site-packages/pandas/core/common.py:449: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  mask = arr == x

In [26]:
records[(records.pub_year == 1777) & (records.text_slug == 'vida y hechos del ingenioso caballero don quixote de la mancha,cervantes saavedra, miguel de')]


Out[26]:
Unnamed: 0 control_number title uniform_title author publisher pub_location pub_year translation prev_language slug canonical_city canonical_country text_slug
527494 801315 433296808 vida y hechos del ingenioso caballero don quix... don quijote de la mancha cervantes saavedra, miguel de a costa de la real compania de impresores y li... madrid 1777 NaN NaN madrid,spain madrid spain vida y hechos del ingenioso caballero don quix...
1948588 2961986 688379313 vida y hechos del ingenioso caballero don quix... don quijote de la mancha cervantes saavedra, miguel de a costa de la real compania de impresores y li... madrid 1777 NaN NaN madrid,spain madrid spain vida y hechos del ingenioso caballero don quix...
2057410 3128300 700151327 vida y hechos del ingenioso caballero don quix... don quijote de la mancha cervantes saavedra, miguel de a costa de la real compania de impresores, y l... madrid 1777 NaN NaN madrid,spain madrid spain vida y hechos del ingenioso caballero don quix...
3214155 4888686 807213535 vida y hechos del ingenioso caballero don quix... NaN cervantes saavedra, miguel de a costa de la real compania de impresores y li... madrid 1777 NaN NaN madrid,spain madrid spain vida y hechos del ingenioso caballero don quix...
4555492 6928648 700151402 vida y hechos del ingenioso caballero don quix... don quijote de la mancha cervantes saavedra, miguel de a costa de la real compania de impresores y li... madrid 1777 NaN NaN madrid,spain madrid spain vida y hechos del ingenioso caballero don quix...
5808424 8837955 700151401 vida y hechos del ingenioso caballero don quix... don quijote de la mancha cervantes saavedra, miguel de a costa de la real compania de impresores y li... madrid 1777 NaN NaN madrid,spain madrid spain vida y hechos del ingenioso caballero don quix...

In [16]:
records.head(1)


Out[16]:
Unnamed: 0 control_number title uniform_title author publisher pub_location pub_year translation prev_language slug canonical_city canonical_country text_slug
91 117 11003743 historia de las guerras de los judios y de la ... NaN josephus, flavius en la oficina de don benito cano madrid 1791 NaN NaN madrid,spain madrid spain historia de las guerras de los judios y de la ...

In [17]:
len(records)


Out[17]:
87907

In [18]:
plt.rcParams['figure.figsize'] = (16.0, 8.0)

In [19]:
records.groupby('text_slug').count()['control_number'].sort_values(inplace=False, ascending=False).ix[:50].plot(kind="bar")


Out[19]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f1529a63710>

In [8]:
len(records.groupby('text_slug').count()['control_number'])


Out[8]:
74820

In [9]:
d = {k: len(v) for k, v in records.groupby("text_slug").groups.items()}

def prob_dist(d):
    probs = {}
    for k, v in d.items():
        probs.setdefault(v, 0)
        probs[v] += 1
    return probs


probs = prob_dist(d)

In [10]:
plt.rcParams['figure.figsize'] = (12.0, 8.0)

In [11]:
plt.xscale("log")
plt.yscale("log")
plt.scatter(list(probs.keys()), list(probs.values()))


Out[11]:
<matplotlib.collections.PathCollection at 0x7f14d25c4e10>

In [12]:
top_slugs = records.groupby('text_slug').count()['control_number'].sort_values(inplace=False, ascending=False).ix[:50].index

In [13]:
top_slugs


Out[13]:
Index(['espana sagrada,florez, enrique',
       'el ingenioso hidalgo don quixote de la mancha,cervantes saavedra, miguel de',
       'historia general de espana,mariana, juan de',
       'promptuario de la theologia moral,larraga, francisco',
       'directorio moral,echarri, francisco',
       'vida y hechos del ingenioso cavallero don quixote de la mancha,cervantes saavedra, miguel de',
       'novelas exemplares,cervantes saavedra, miguel de',
       'historia natural, general y particular,buffon, georges louis leclerc',
       'vida, y hechos del ingenioso cavallero don quixote de la mancha,cervantes saavedra, miguel de',
       'coleccion de las obras sueltas, assi [sic] en prosa, como en verso,vega, lope de',
       'espana sagradatheatro geographico-historico de la iglesia de espana,florez, henrique',
       'coleccion de las obras sueltas, assi [i.e. asi] en prosa, como en verso,vega, lope de',
       'viage de espana, en que se da noticia de las cosas mas apreciables, y dignas de saberse, que hay en ella,ponz, antonio',
       'suma moral,pacheco, bernardo', 'espana sagrada,risco, manuel',
       'viage de espanaen que se da noticia de las cosas mas apreciables, y dignas de saberse, que hay en ella,ponz, antonio',
       'historia eclesiastica,orsi, giuseppe agostino',
       'compendio de la historia de espana,duchesne, jean baptiste philipoteau',
       'noticia de la california, y de su conquista temporal, y espiritual hasta el tiempo presente,venegas, miguel',
       'el christiano instruido en su leydiscursos morales y doctrinales,segneri, paolo',
       'ortografia de la lengua castellana,nan',
       'diccionario de la lengua castellana,real academia espanola',
       'diccionario geografico-historico de las indias occidentales o americaes a saber : de los reynos del peru, nueva espana, tierra-firme, chile y nuevo reyno de granada : con la descripcion de sus provincias, naciones, ciudades, villas, pueblos, rios, montes, costas, puertos, islas, arzobispados, obispados, audiencias, virreynatos, gobiernos, corregimientos, y fortalezas, frutos y produciones; con expresion de sus descubridores, conquistadores y fundatores: conventos y religiones: ereccion de sus catedrales y obispos que ha habido en ellas : y noticia de los sucesos mas notables de varios lugares: incendios, terremotos, sitios, einvasiones que han experimentado, y hombres illustres que han producido,alcedo, antonio de',
       'combate espiritual,scupoli, lorenzo',
       'las costumbres de los israelitas,fleury, claude',
       'vida y hechos del ingenioso caballero don quixote de la mancha,cervantes saavedra, miguel de',
       'historia de la conquista de mexicopoblacion y progresos de la america septentrional, conocida por el nombre de nueva espana,solis, antonio de',
       'republica literaria,saavedra fajardo, diego de',
       'ortografia de la lengua castellana,real academia espanola',
       'la musicapoema,iriarte, tomas de',
       'introduccion a la vida devota,francisco de sales',
       'viage de espa4na 2o cartas : en que se da noticia de las cosas mas apreciables, y dignas de saberse que hay en ella / lapuente, pedro antonio de,lapuente, pedro antonio de',
       'sermones panegiricos,andres, antonio',
       'vida y hechos del ingenioso hidalgo don quixote de la mancha,cervantes saavedra, miguel de',
       'el texedor de segoviacomedia famosa,ruiz de alarcon, juan',
       'obras,quevedo, francisco de',
       'diccionario apostolico,montargon, jacinto (o.s.a',
       'exercicio de perfeccion y virtudes christianas,rodriguez, alonso',
       'elementos de matematica,bails, benito',
       'manual de exercicios espirituales para tener oracion mental,villacastin, tomas de',
       'la corte santa,caussin, nicolas',
       'noticias de la provincia de californias en tres cartasde un sacerdote religioso hijo del real convento de predicadores de valencia a un amigo suyo,sales, luis',
       'introduccion a la historia natural y a la geografia fisica de espana,bowles, william',
       'gramatica de la lengua castellana,real academia espanola',
       'historia de nueva-espana,cortes, hernan',
       'espana sagradatheatro geographico-historico de la iglesia de espana : origen, divisiones, y limites de todas sus provincias, antiguedad, traslaciones, y estado antiguo y presente de sus sillas con varias dissertaciones criticas,florez, enrique',
       'el viagero universal o noticia del mundo antiguo y nuevo,nan',
       'obras de lorenzo gracian,gracian y morales, baltasar',
       'espana sagrada,florez, henrique',
       'clave geographica para aprender geographia los que no tienen maestro,florez, enrique'],
      dtype='object', name='text_slug')

In [17]:
top_producers = records[records.text_slug.isin(top_slugs)]

In [18]:
group_top_producers = top_producers.sort_values('pub_year').groupby(['text_slug', 'pub_year']).count()['control_number']

In [19]:
top_producer_df1 = pd.DataFrame({
    'tratado del amor de dios,fonseca, cristobal de': group_top_producers.ix['tratado del amor de dios,fonseca, cristobal de'],
    'la perfecta casada,leon, luis de': group_top_producers.ix['la perfecta casada,leon, luis de'],
    'breuissima relacion de la destruycion de las indias,casas, bartolome de las': group_top_producers.ix['breuissima relacion de la destruycion de las indias,casas, bartolome de las'],
    'de los nombres de christoen tres libros,leon, luis de': group_top_producers.ix['de los nombres de christoen tres libros,leon, luis de'],
    'vocabulario en lengua castellana y mexicana,molina, alonso de': group_top_producers.ix['vocabulario en lengua castellana y mexicana,molina, alonso de'],
    'orlando furioso,ariosto, lodovico': group_top_producers.ix['orlando furioso,ariosto, lodovico'],
    'arte de la lengua mexicana y castellana,molina, alonso de': group_top_producers.ix['arte de la lengua mexicana y castellana,molina, alonso de'],
    'las siete partidas del sabio rey don alonso el nono,nan': group_top_producers.ix['las siete partidas del sabio rey don alonso el nono,nan'],
    'tragicomedia de calisto y melibea': group_top_producers.ix['tragicomedia de calisto y melibea. enla ql se cotiene de mas de su agradable dulce estilo muchas sentencias filosofales: auisosmuy necessarios a macebos ... nueuamente anadido el tractado de centurio. [with woodcuts.] g.l,nan'],
    'oratorio de religiosos y exercicio de virtuosos,guevara, antonio de': group_top_producers.ix['oratorio de religiosos y exercicio de virtuosos,guevara, antonio de'],
    }).fillna(0)

In [20]:
top_producer_df1.plot()


Out[20]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f9e39a81588>

In [ ]:
top_producer_df5 = pd.DataFrame({
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
    '': group_top_producers.ix[''],
}).fillna(0)