Skip to content

Instantly share code, notes, and snippets.

@qguv
Last active August 29, 2015 14:19
Show Gist options
  • Save qguv/f15e325146951b4447e6 to your computer and use it in GitHub Desktop.
Save qguv/f15e325146951b4447e6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# The Flat Squat\n",
"### Analyzing W&M Newspaper Articles"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" - The Flat Hat, school-sponsored, has \"standards\" and \"history\"\n",
" - The Botetourt Squat, freedom-sponsored, comedic newspaper"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" - Flat Hat website → Flat Hat corpus\n",
" - Squat archive PDFs → Squat corpus"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
" - 9 hypotheses"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"To begin, we need a **normalized word count** for each corpus."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import nltk, random\n",
"from articles import flathat, squat, Article\n",
"\n",
"def articleLength(article: Article):\n",
" return len(article.content().split(' '))\n",
"\n",
"def wordsInCorpus(corpus: [Article]):\n",
" '''Counts the amount of discrete words in a corpus.'''\n",
" wordsInArticles = ( articleLength(article) for article in corpus )\n",
" return sum(wordsInArticles)\n",
"\n",
"flathat_words, squat_words = wordsInCorpus(flathat), wordsInCorpus(squat)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"We'll define \"significance\" as having the following properties:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"def is_statistically_significant(greater, less):\n",
" return (greater / less) >= 1.25\n",
"\n",
"def supports(greater, less):\n",
" neg = \"SUPPORTS\" if is_statistically_significant(greater, less) else \"DOESN'T support\"\n",
" return \"Evidence {} hypothesis, ratio is {:.2}\".format(neg, greater / less)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# General Hypotheses"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 4:** Articles in The Flat Hat will be longer.\n",
"\n",
" - the Flat Hat tries to cover as much of a topic as possible.\n",
" - comedy is hard"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Mean Length: 573.3441558441558 words\n",
" Squat Mean Length: 409.52332361516034 words\n",
"\n",
" Flat Hat Median Length: 560.0 words\n",
" Squat Median Length: 388.5 words\n",
"\n",
"Mean: Evidence SUPPORTS hypothesis, ratio is 1.4\n",
"Median: Evidence SUPPORTS hypothesis, ratio is 1.4\n"
]
}
],
"source": [
"from statistics import median\n",
"fh_mean = flathat_words / len(flathat)\n",
"sq_mean = squat_words / len(squat)\n",
"fh_median = median(map(articleLength, flathat))\n",
"sq_median = median(map(articleLength, squat))\n",
"\n",
"m = '''\n",
" Flat Hat Mean Length: {} words\n",
" Squat Mean Length: {} words\n",
"\n",
" Flat Hat Median Length: {} words\n",
" Squat Median Length: {} words\n",
"'''\n",
"print(m.format(fh_mean, sq_mean, fh_median, sq_median))\n",
"print(\"Mean:\", supports(fh_mean, sq_mean))\n",
"print(\"Median:\", supports(fh_median, sq_median))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Word Frequency Hypotheses"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The majority of our hypotheses have to do with word frequency, which we'll define as the _occurances of a word in a corpus divided by the total word count_. We'll define some functions so as not to repeat ourselves."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"def countWordMatchesInArticle(article: Article, matches: [str]) -> int:\n",
" '''Count the amount of occurances of a list of given strings in a given article.'''\n",
" article = article.content().lower()\n",
" return sum(map(article.count, matches))\n",
"\n",
"def wordFrequency(corpus: [Article], matches: [str], wordcount: int) -> float:\n",
" '''Count the frequency of any of the given match words occurring in a given corpus.'''\n",
" matches = [ countWordMatchesInArticle(article, matches) for article in corpus ]\n",
" return sum(matches) / wordcount"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 1:** The frequency of the words 'basketball', 'football', 'soccer', 'golf',\n",
"'tennis', and 'baseball' will be higher in The Flat Hat than in The Botetourt Squat.\n",
"\n",
" - the Squat doesn't have a real sports section\n",
" - the Flat Hat is more affiliated with W&M-sponsored events"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Frequency: 0.0576%\n",
" Squat Frequency: 0.0441%\n",
"\n",
"Evidence SUPPORTS hypothesis, ratio is 1.3\n"
]
}
],
"source": [
"m = '''\n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"sportsball = [\"basketball\", \"football\", \"soccer\", \"golf\", \"tennis\", \"baseball\"]\n",
"fh = wordFrequency(flathat, sportsball, flathat_words)\n",
"sq = wordFrequency(squat, sportsball, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(fh, sq))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 6:** The Flat Hat will mention 'William & Mary', 'Alumni/us/a' more frequently\n",
"than The Squat.\n",
"\n",
" - the Flat Hat is more associated with the school and official events"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Frequency: 0.7782%\n",
" Squat Frequency: 0.1502%\n",
"\n",
"Evidence SUPPORTS hypothesis, ratio is 5.2\n"
]
}
],
"source": [
"m = '''\n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"tribe_pride = [\"william & mary\", \"william and mary\", \"the college\", \"alumni\",\n",
" \"alumna\", \"alumnus\", \"alumnae\"]\n",
"fh = wordFrequency(flathat, tribe_pride, flathat_words)\n",
"sq = wordFrequency(squat, tribe_pride, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(fh, sq))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 7:** The Squat will have more references to national and international politics;\n",
"instances of \"Obama\", \"ISIS\", \"Republican/s\", and \"Putin\" will appear more often.\n",
"\n",
" - the scope of the Flat Hat is comparatively small"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Frequency: 0.0355%\n",
" Squat Frequency: 0.0801%\n",
"\n",
"Evidence SUPPORTS hypothesis, ratio is 2.3\n"
]
}
],
"source": [
"m ='''\n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"national_news = [\"obama\", \"isis\", \"republican\", \"republicans\", \"putin\"]\n",
"fh = wordFrequency(flathat, national_news, flathat_words)\n",
"sq = wordFrequency(squat, national_news, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(sq, fh))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 8:** The Squat will mention The Flat Hat and The Squat more than The Flat Hat\n",
"mentions either.\n",
"\n",
" - parody requires more reference than news fact\n",
" - the Botetourt Squat isn't exactly news to the Flat Hat"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \n",
" Flat Hat Frequency: 0.0179%\n",
" Squat Frequency: 0.0851%\n",
"\n",
"Evidence SUPPORTS hypothesis, ratio is 4.7\n"
]
}
],
"source": [
"m =''' \n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"rivalry = [\"the flat hat\", \"the fat hat\", \"the botetourt squat\", \"the squat\"]\n",
"fh = wordFrequency(flathat, rivalry, flathat_words)\n",
"sq = wordFrequency(squat, rivalry, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(sq, fh))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 9:** The Flat Hat will mention official dining services more frequently\n",
"than The Squat; tested by frequency of the terms 'Commons', 'Caf', 'Sadler',\n",
"'Marketplace', 'Cosi', 'Student Exchange', '1693 Barbecue', 'Wholly Haba(n/ñ)eros'.\n",
"\n",
" - the Flat Hat is in the pocket of the school\n",
" - the Flat Hat goes out of their way to review on-campus things"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Frequency: 0.0374%\n",
" Squat Frequency: 0.0459%\n",
"\n",
"Evidence DOESN'T support hypothesis, ratio is 0.81\n"
]
}
],
"source": [
"m = '''\n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"sodexo = [\"commons\", \"caf\", \"sadler\", \"marketplace\", \"cosi\", \"student exchange\",\n",
" \"1693 barbecue\", \"wholly habaneros\", \"wholly habañeros\"]\n",
"fh = wordFrequency(flathat, sodexo, flathat_words)\n",
"sq = wordFrequency(squat, sodexo, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(fh, sq))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Regular Expression Hypotheses"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Some of our hypotheses concern how many words **match a given pattern**. We'll define functions to do this for us."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"from re import findall\n",
"\n",
"def countRegexMatchesInArticle(article: Article, matches: [r'regex']) -> int:\n",
" '''Count the amount of occurances of a list of given regular expressions in a given article.'''\n",
" article = article.content().lower()\n",
" return sum([ len(findall(match, article)) for match in matches ])\n",
"\n",
"def regexFrequency(corpus: [Article], matches: [r'regex'], wordcount: int) -> float:\n",
" '''Count the frequency of any of the given match expressions occurring in a given corpus.'''\n",
" matches = [ countRegexMatchesInArticle(article, matches) for article in corpus ]\n",
" return sum(matches) / wordcount"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 2:** The frequency of all n-grams in the forms \"was __ed\" or \"__ed by\"\n",
"will be higher in The Flat Hat than in The Squat.\n",
"\n",
" - the Flat Hat uses the common news style\n",
" - the Squat doesn't conform to news style"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Flat Hat Frequency: 0.2209%\n",
" Squat Frequency: 0.2509%\n",
"\n",
"Evidence DOESN'T support hypothesis, ratio is 0.88\n"
]
}
],
"source": [
"m = '''\n",
"Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"passive = [r'was \\S+ed', r'\\S+ed by']\n",
"fh = regexFrequency(flathat, passive, flathat_words)\n",
"sq = regexFrequency(squat, passive, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(fh, sq))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 3:** The frequency of score reports, in the form of regular expression\n",
"\\d+-\\d+ will match more often in The Flat Hat. The Squat does not report on sports,\n",
"certainly not with statistics."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Frequency: 0.3108%\n",
" Squat Frequency: 0.0107%\n",
"\n",
"Evidence SUPPORTS hypothesis, ratio is 2.9e+01\n"
]
}
],
"source": [
"m = '''\n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"score_reports = [r'\\d+-\\d+']\n",
"fh = regexFrequency(flathat, score_reports, flathat_words)\n",
"sq = regexFrequency(squat, score_reports, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(fh, sq))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**Hypothesis 5:** The Flat Hat will show more graduation years, as it includes them\n",
"after every interviewee’s name. The Squat does not always include this indicator of\n",
"year. The regular expression [’']\\d\\d will match more often in The Flat Hat."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" Flat Hat Frequency: 0.2384%\n",
" Squat Frequency: 0.0196%\n",
"\n",
"Evidence SUPPORTS hypothesis, ratio is 1.2e+01\n"
]
}
],
"source": [
"m = '''\n",
" Flat Hat Frequency: {:.4%}\n",
" Squat Frequency: {:.4%}\n",
"'''\n",
"\n",
"class_year = [r\"[’']\\d\\d\"]\n",
"fh = regexFrequency(flathat, class_year, flathat_words)\n",
"sq = regexFrequency(squat, class_year, squat_words)\n",
"print(m.format(fh, sq))\n",
"print(supports(fh, sq))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Fun & Curiosity"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The Flat Hat uses real names. The Botetourt Squat uses pseudonyms, and those pseudonyms aren't always isomorphic to real people. So which \"authors\" are the most prolific in the Flat Hat and the Squat?"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# most and least prolific writers for the Squat and the Flat Hat\n",
"# for fun and testing\n",
"\n",
"import collections\n",
"from itertools import islice\n",
"\n",
"def nodupes(seq):\n",
" noDupes = []\n",
" [noDupes.append(i) for i in seq if not noDupes.count(i)]\n",
" return noDupes\n",
"\n",
"def prolific(articles, reverse=True):\n",
" authors = [ x.author for x in articles ]\n",
" count = collections.Counter(authors)\n",
" authors = nodupes(sorted(authors, key=count.get, reverse=reverse))\n",
" return [ (author, count[author]) for author in authors ]\n",
"\n",
"def displayProlific(least=False):\n",
" comparator = \"Least\" if least else \"Most\"\n",
" print((\" \" * 15 + comparator + \" Prolific Writers\").upper())\n",
" print(\"\\n {:10}{:30}{:10}{:30}\\n\".format(\"Articles\", \"Flat Hat\", \"Articles\", \"Botetourt Squat\"))\n",
" fh_prolific = prolific(flathat, reverse=not least)\n",
" sq_prolific = prolific(squat, reverse=not least)\n",
" for i, (fh, sq) in enumerate(islice(zip(fh_prolific, sq_prolific), 30)):\n",
" print(\"#{:2}: {:>9} {:30}{:>9} {:30}\".format(i+1, fh[1], fh[0][:28], sq[1], sq[0][:28]))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" MOST PROLIFIC WRITERS\n",
"\n",
" Articles Flat Hat Articles Botetourt Squat \n",
"\n",
"# 1: 194 Chris Weber 51 HANK MANGKLACE \n",
"# 2: 185 Zach Hardy 43 PARTICLE-MAN SKYLORD \n",
"# 3: 173 Flat Hat Editorial Board 24 DEMOSTHENES \n",
"# 4: 122 Jack Powers 21 FATHER PADRE \n",
"# 5: 113 Jared Foretek 21 ANTICITIZEN ONE \n",
"# 6: 101 Meredith Ramey 19 DARK PALADIN \n",
"# 7: 88 Mick Sloan 18 GOLDEN-HAIRED NINNY \n",
"# 8: 86 Abby Boyle 17 TOM BOMBADIL \n",
"# 9: 85 Katherine Chiglinsky 17 PARTICLE MAN SKYLORD \n",
"#10: 83 Ariel Cohen 16 PUBLIUS \n",
"#11: 71 Bailey Kirkpatrick 13 DUX CULUS \n",
"#12: 69 Aine Cain 12 FOX IN SOCKS \n",
"#13: 65 Claire Gillespie 11 EDITORIAL STAFF \n",
"#14: 63 Sarah Caspari 11 GHOST OF HORATIO NELSON \n",
"#15: 62 Mike Barnes 10 IMA FETUS \n",
"#16: 62 Sumner Higginbotham 10 SCUBA TUBA \n",
"#17: 57 Annie Curran 9 SCHLONGDONG MANHAMMER \n",
"#18: 54 Madeline Bielski 9 SECRETARIAT \n",
"#19: 50 Benming Zhang 9 DR. RALPHY MOMO \n",
"#20: 50 Eleanor Lamb 9 KEKE THE TRILLE$T \n",
"#21: 47 The Flat Hat 9 ANDERSON POOPER 420 \n",
"#22: 43 Ellie Kaufman 8 LAZERCUNT \n",
"#23: 32 Andrea Aron-Schiavone 6 RONALDINHO McDONALD \n",
"#24: 27 Devin Logan 6 GOLDEN HAIRED NINNY \n",
"#25: 27 Tyler Shaw 6 RANDY KNIGHTLY \n",
"#26: 26 Emily Nye 5 CAPTAIN FALCON \n",
"#27: 26 Rachel Brown 5 PARTICLE MAN-SKYLORD \n",
"#28: 26 Ken Lin 5 FETA CHEESE \n",
"#29: 26 Walter Hickey 5 BIG BOOTY BITCHES \n",
"#30: 25 Emily Stone 5 SEABISCUIT \n"
]
}
],
"source": [
"displayProlific()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" LEAST PROLIFIC WRITERS\n",
"\n",
" Articles Flat Hat Articles Botetourt Squat \n",
"\n",
"# 1: 1 MeghanCondlin 1 GUCCI STEVE \n",
"# 2: 1 Lucas Cohen 1 EXPAND_DONG.JPEG \n",
"# 3: 1 Ryan Corcoran 1 THE PERSON WHO WROTE IT \n",
"# 4: 1 William Gaskins 1 MARY QUEEN OF HOT \n",
"# 5: 1 Spencer Chretien 1 THE ORAL IN “FLORAL” \n",
"# 6: 1 Brady Meixell 1 RONALDINHO MCDONLD \n",
"# 7: 1 Ian Kirkwood 1 GHOST OF JAMES MADISON \n",
"# 8: 1 Elizabeth Jacob 1 A PATRIOTIC HAWK \n",
"# 9: 1 Emily McMillen 1 ME \n",
"#10: 1 Amanda Triplett 1 LAZERCUNT tasted bitterness \n",
"#11: 1 PatriciaRadich 1 @NETSECWONK \n",
"#12: 1 Clay Clemens 1 THE POPE \n",
"#13: 1 Neal Friedman 1 THE SPERM IN “ANGIOSPERM” \n",
"#14: 1 Pete Snyder 1 COLLECTIVE SQUAT STAFF \n",
"#15: 1 Eric Garrison 1 A CONCERNED MOM \n",
"#16: 1 JimmyeLaycock 1 WD-40OZ \n",
"#17: 1 JohnRoakes 1 SOME DUDE \n",
"#18: 1 Ashleigh Arrington 1 THE SPERM IN ‘ANGIOSPERM’ \n",
"#19: 1 JakeDay 1 GHOST OF H. NELSON \n",
"#20: 1 Taylor Reveley 1 WALTER SOBJACK \n",
"#21: 1 John Griffin and Lu Ann Homz 1 CISSCUM MCSHITLORD \n",
"#22: 1 Gina Sawaya 1 BITTER COLLEGE STUDENT \n",
"#23: 1 Ciera Killen 1 LUNAR DETENTION CENTER \n",
"#24: 1 Annie Zhao 1 JACK CAUFFMANN \n",
"#25: 1 Kelvin Abrokwa Johnson, Caro 1 MISTER BATES \n",
"#26: 1 Mark Warner 1 C. BISCUIT \n",
"#27: 1 Allee Lizama 1 SIR FANCYPANTS \n",
"#28: 1 Adam Brock 1 TWO PAWNS \n",
"#29: 1 Mick Sloan and Chris Weber 1 DR. FEELGOOD \n",
"#30: 1 Shannon Fineran 1 A WIZARD \n"
]
}
],
"source": [
"displayProlific(least=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Questions? Thank you."
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment