{"id":171,"date":"2017-02-24T11:55:00","date_gmt":"2017-02-24T10:55:00","guid":{"rendered":"http:\/\/benedict-witzenberger.de\/wordpress\/?p=171"},"modified":"2018-04-23T11:53:45","modified_gmt":"2018-04-23T09:53:45","slug":"werkstatt-wie-voll-sind-die-muenchner-bibliotheken","status":"publish","type":"post","link":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/","title":{"rendered":"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken?"},"content":{"rendered":"<p>Studenten in M\u00fcnchen haben es nicht leicht. Die Mietpreise sind der Wahnsinn, es gab gro\u00dfen Stress um das relativ teuere Semesterticket &#8211; und dann sind die Bibliotheken noch so voll. Das war zumindest der Anlass, weshalb die Universit\u00e4tsbibliothek der LMU Ende 2016 ein neues Tool gestartet hat: Den Platzfinder. Zusammen mit einer Parkscheibe, die Studierende bekommen, wenn sie die Bibliothek betreten, ermitteln die Bibliotheksmitarbeiter, wie voll ihre Bibliothek gerade ist &#8211; und tragen das in ein Onlineformular ein (Was nat\u00fcrlich auch sehr fehlerbehaftet ist &#8211; aber die Daten sind das Beste, was wir haben).<\/p>\n<p>Auf der Webseite der Uni-Bibliothek k\u00f6nnen Studierende dann checken, wie voll ihre &#8222;Lieblingsbib&#8220; ist.<\/p>\n<p>F\u00fcr M94.5 wollte ich herausfinden, welche Bib am vollsten ist &#8211; und wie sich das im Tagesverlauf ver\u00e4ndert.<\/p>\n<p>Die Seite der LMU gibt SVGs mit Prozentwerten f\u00fcr die F\u00fcllung aus, die in den Balkendiagrammen angezeigt werden. Mit Python und der Bibliothek BeautifulSoup konnte ich also easy die Daten auslesen und in ein CSV speichern:<\/p>\n<pre class=\"lang:python decode:true\">#!\/usr\/bin\/python\r\n# -*- coding: utf-8 -*-\r\nfrom bs4 import BeautifulSoup\r\nimport urllib\r\nimport re\r\nimport csv\r\nfrom datetime import datetime\r\n\r\nr = urllib.urlopen('http:\/\/www.ub.uni-muenchen.de\/arbeiten\/platzfinder\/index.html').read()\r\n\r\nsoup = BeautifulSoup(r, \"lxml\")\r\n\r\niframes = soup.find_all(\"iframe\")\r\ncsvdata = []\r\n\r\nprint \"Sammle Daten\"\r\nfor i in iframes:\r\n    r1 = urllib.urlopen(i[\"src\"]).read()\r\n    iframe = BeautifulSoup(r1, \"lxml\")\r\n    name = iframe.find(\"div\", {\"id\": \"chart_text1\"}).get_text().encode('utf-8')\r\n    data = iframe.find_all(\"script\")[1].string\r\n    data = data.replace(\"'\", '\"')\r\n    p = re.compile('var data = google.visualization.arrayToDataTable\\(\\[\\[(.*?)\\],\\[.+\"\\,(.*?)\\]\\]\\)')\r\n    m = p.search(data)\r\n    try:\r\n        lst = str(m.group(2).encode('utf-8')).split(\",\")\r\n    except:\r\n        lst = str(m.group(0).encode('utf-8')).split(\",\")\r\n\r\n    if lst[0] == \"1\":\r\n        name = name.strip()\r\n        fill = \"Geschlossen\"\r\n        empty = 0\r\n    else:\r\n        name = name.strip()\r\n        fill = lst[0]\r\n        empty = lst[1]\r\n\r\n    csvdata.append((name, fill, empty))\r\n    print \"Schreibe: \", i[\"src\"]\r\n\r\n# open a csv file with append, so old data will not be erased\r\nwith open('data.csv', 'a') as csv_file:\r\n    writer = csv.writer(csv_file, delimiter=';', lineterminator='\\n')\r\n    # The for loop\r\n    print \"Schreibe CSV\"\r\n    for name, fill, empty in csvdata:\r\n        writer.writerow([name, fill, empty, datetime.now()])\r\nprint \"Fertig\"<\/pre>\n<p>Damit das Ganze alle 15 Minuten laufen kann &#8211; in den Zeiten, in denen die Bibliotheken ge\u00f6ffnet haben &#8211;\u00a0 habe ich zu einem Trick gegriffen. Das Pythonskript lag auf meinem Webspace, der Python vorinstalliert hat. Daneben lag ein einfaches Shell-Startskript f\u00fcr das Python. Dieses Skript rufe ich \u00fcber \u00fcber einen Cronjob auf. In meinem Fall habe ich Cronjob.de benutzt (ein Skript ist kostenlos, weitere kosten ab 99 Cent pro Monat) &#8211; es gibt Alternativen.<\/p>\n<p>Dann hie\u00df es: Warten. 1,5 Monate lang etwa. Das CSV f\u00fcllte sich immer weiter, ohne, dass ich irgendwas tun musste.<\/p>\n<p>Dann hie\u00df es: Auswerten. Daf\u00fcr habe ich das CSV gedownloaded und in R eingelesen.<\/p>\n<pre class=\"lang:r decode:true \">library(dplyr)\r\nlibrary(ggplot2)\r\nlibrary(lubridate)\r\nlibrary(extrafont)\r\nlibrary(grid)\r\n\r\ncolN &lt;- c(\"Bibliothek\", \"Belegt\", \"Leer\", \"Datum\")\r\nd &lt;- read.csv2(\"data.csv\", stringsAsFactors = TRUE, col.names = colN, colClasses = c(\"factor\", \"numeric\", \"numeric\", \"POSIXct\"), header = FALSE, encoding = \"UTF-8\", na.strings = \"Geschlossen\")\r\n<\/pre>\n<p>Schon beim ersten Rumspielen hat sich gezeigt: Weihnachten ist ne bl\u00f6de Zeit f\u00fcr den Datensatz. Im Vergleich zu den anderen Zeiten lag die Belegungsquote ziemlich weit unten. Das hie\u00df f\u00fcr mich: Weihnachten raus.<\/p>\n<pre class=\"lang:r decode:true \">#Remove Test-Data and create new columns, filter out Christmas-Time\r\nd %&gt;% \r\n  filter(Datum &gt; \"2016-12-17 23:45:29\") %&gt;% \r\n  filter(Datum &lt;= \"2016-12-23 23:59:59\" | Datum &gt;= \"2017-01-02 00:00:00\") %&gt;% \r\n  mutate(weekday = weekdays.POSIXt(Datum), hour = hour(Datum)) -&gt; w\r\n\r\nw$weekday &lt;- factor(w$weekday, levels = c(\"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\", \"Sonntag\"))\r\n<\/pre>\n<p>Dann folgten die einzelnen Analysen. Zun\u00e4chst wollte ich wissen (und nat\u00fcrlich auch plotten), wie gro\u00df der Unterschied zwischen Wochentag und Wochenende in den Bibliotheken ist.<\/p>\n<pre class=\"lang:default decode:true\"># create tbl_df for weekend and weekday with mean per hour\r\nw %&gt;% \r\n  select(Bibliothek, Belegt, weekday, hour, Datum) %&gt;% \r\n  filter(complete.cases(.)) %&gt;% \r\n  filter(weekday != \"Samstag\" &amp; weekday != \"Sonntag\") %&gt;% \r\n  group_by(hour) %&gt;% \r\n  summarise(mean(Belegt)) -&gt; week\r\n\r\nw %&gt;% \r\n  select(Bibliothek, Belegt, weekday, hour, Datum) %&gt;%\r\n  filter(complete.cases(.)) %&gt;% \r\n  filter(weekday == \"Samstag\" | weekday == \"Sonntag\") %&gt;% \r\n  group_by(hour) %&gt;% \r\n  summarise(mean(Belegt)) -&gt; weekend\r\n\r\n## Plotting Weekday vs Weekend\r\nsvg(\"week_vs_weekend.svg\", pointsize = 28, width = 11.78, height = 8.39)\r\nggplot() +\r\n  geom_line(data = weekend, aes(hour, `mean(Belegt)`), color = \"#590086\", size = 1.3) +\r\n  geom_area(data = weekend, aes(hour, `mean(Belegt)`), color = \"#dd9aff\", alpha = 0.2) +\r\n  geom_line(data = week, aes(hour, `mean(Belegt)`), color = \"#865900\", size = 1.3) +\r\n  geom_area(data = week, aes(hour, `mean(Belegt)`), fill = \"#ffd686\", alpha = 0.6) +\r\n  labs(title = \"Durchschnitts-Belegung im Tagesverlauf\", subtitle = \"Braun: Werktag, Blau: Wochenende\") +\r\n  ylab(\"Belegung in Prozent\") + \r\n  xlab(\"Uhrzeit\") +\r\n  theme_bw() +\r\n  theme(text = element_text(size = 12),\r\n        plot.margin = unit(c(1, 1, 4, 1), \"lines\"),\r\n        panel.grid.major.x = element_blank(),\r\n        panel.grid.minor.x = element_blank(),\r\n        panel.border = element_blank())\r\ndev.off()\r\n<\/pre>\n<p>Dann wollte ich wissen, wie die unterschiedlichen Wochentage sich einzeln unterscheiden. Das k\u00f6nnte man in ggplot<a href=\"http:\/\/docs.ggplot2.org\/current\/facet_grid.html\" target=\"_blank\"> mit Facets<\/a> l\u00f6sen. Ich wollte das ganze aber in einem Plot. Das hie\u00df: Rumspielen.<\/p>\n<pre class=\"lang:r decode:true \"># Plotting Every day by hour\r\nw %&gt;% \r\n  select(Bibliothek, Belegt, weekday, hour, Datum) %&gt;%\r\n  filter(Datum &lt;= \"2016-12-23 23:59:59\" | Datum &gt;= \"2017-01-02 00:00:00\") %&gt;% \r\n  filter(complete.cases(.)) %&gt;% \r\n  group_by(weekday, hour) %&gt;% \r\nsummarise(mean = mean(Belegt)) -&gt; weekday_by_hour\r\n\r\nsvg(\"weekday_per_hour.svg\", pointsize = 28, width = 11.78, height = 8.39)\r\n#png(\"weekday_per_hour.png\", pointsize = 28, width = 500)\r\ng1 &lt;- ggplot(weekday_by_hour, aes(x = interaction(weekday, hour, lex.order = TRUE), y = mean, group = 1)) +\r\n  geom_line(colour = \"#008659\", size = 1.3) +\r\n  geom_area(fill = \"#86ffd6\", alpha = 0.5) +\r\n  coord_cartesian(ylim = c(0, 65), expand = FALSE) +\r\n  annotate(geom = \"text\", x = seq_len(nrow(weekday_by_hour)), y = -1, label = weekday_by_hour$hour, size = 2) +\r\n  annotate(geom = \"text\", x = 9 + 16 * (0:6), y = -4, label = unique(weekday_by_hour$weekday), size = 5) +\r\n  theme_bw() +\r\n  theme(text = element_text(size = 12),\r\n        plot.margin = unit(c(1, 1, 4, 1), \"lines\"),\r\n        axis.title.x = element_blank(),\r\n        axis.text.x = element_blank(),\r\n        panel.grid.major.x = element_blank(),\r\n        panel.grid.minor.x = element_blank(),\r\n        panel.border = element_blank()) +\r\n  geom_hline(yintercept = mean(weekday_by_hour$mean), linetype = 3) +\r\n  ylab(\"Durchschnittsbelegung in Prozent\")\r\n\r\ng2 &lt;- ggplot_gtable(ggplot_build(g1))\r\ng2$layout$clip[g2$layout$name == \"panel\"] &lt;- \"off\"\r\ngrid::grid.draw(g2)\r\ndev.off()<\/pre>\n<p>Und dann das Highlight. Ich dachte mir, ein bisschen Bewegung schadet nicht. Deswegen wollte ich ein GIF erstellen, dass f\u00fcr jede Stunde des Tages f\u00fcr jede Bibliothek die Durchschnittsbelegung angibt. Das Skript sollte mir die einzelnen Stunden automatisch ausgeben, damit ich daraus nur noch ein GIF bauen muss. (Das w\u00fcrde auch direkt in R gehen, mit <a href=\"https:\/\/www.rforge.net\/doc\/packages\/animation\/saveGIF.html\" target=\"_blank\">diesem<\/a> Package)<\/p>\n<p>Ich habe meinen w-Dataframe nochmal kopiert, weil ich die Rohdaten-NAs durch 0 ersetzt habe. Das wollte ich mir im Original-Datensatz nicht zerschie\u00dfen.<\/p>\n<pre class=\"lang:r decode:true \">##\r\n# Create PNG for each Hour of the Day\r\n###\r\n\r\n#Make copy of w-df\r\nw_nas &lt;- w\r\n\r\n#replace NAs with 0\r\nw_nas[is.na(w_nas$Belegt),]$Belegt &lt;- 0\r\n\r\n#Debugging needed for the hjust of plot.title\r\nfor (i in 8:23){\r\n  w_help = NULL\r\n\r\n  w_nas %&gt;% \r\n    filter(hour==i) %&gt;% \r\n    group_by(Bibliothek) %&gt;% \r\n    summarise(mean = mean(Belegt)) -&gt; w_help\r\n  print(head(w_help))\r\n  \r\n  png(paste0(i,\".png\"), width = 500, units = \"px\")\r\n  p &lt;- ggplot(w_help, aes(Bibliothek, mean)) +\r\n    geom_bar(stat=\"identity\", fill = \"#008659\") +\r\n    coord_flip() +\r\n    theme(text = element_text(family = \"Arial\"), axis.title = element_blank(), plot.title = element_text(face = \"bold\", size = 18)) +\r\n    labs(title = paste(\"Besetzte UB-Pl\u00e4tze um\", i, \"Uhr\")) +\r\n    scale_y_continuous(limits = c(0, 100))\r\n  print(p)\r\n  dev.off()\r\n}<\/pre>\n<p>Fertig.<\/p>\n<p>Das Ergebnis <a href=\"http:\/\/www.m945.de\/politik\/so_voll_ist_deine_bib.html\" target=\"_blank\">gibt es hier<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Studenten in M\u00fcnchen haben es nicht leicht. Die Mietpreise sind der Wahnsinn, es gab gro\u00dfen Stress um das relativ teuere Semesterticket &#8211; und dann sind die Bibliotheken noch so voll. Das war zumindest der Anlass, weshalb die Universit\u00e4tsbibliothek der LMU <a href=\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\"><\/p>\n<div class=\"read-more\">\n<p>Read more &#8250;<\/p>\n<\/div>\n<p><!-- end of .read-more --><\/a><\/p>\n","protected":false},"author":1,"featured_media":173,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[16,13,15,14],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken? &bull; Benedict Witzenberger<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken? &bull; Benedict Witzenberger\" \/>\n<meta property=\"og:description\" content=\"Studenten in M\u00fcnchen haben es nicht leicht. Die Mietpreise sind der Wahnsinn, es gab gro\u00dfen Stress um das relativ teuere Semesterticket &#8211; und dann sind die Bibliotheken noch so voll. Das war zumindest der Anlass, weshalb die Universit\u00e4tsbibliothek der LMU Read more &#8250;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\" \/>\n<meta property=\"og:site_name\" content=\"Benedict Witzenberger\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-24T10:55:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-23T09:53:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/benedict-witzenberger.de\/wordpress\/wp-content\/uploads\/2017\/02\/Platzfinder-LMU-UB.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"977\" \/>\n\t<meta property=\"og:image:height\" content=\"598\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Benedict Witzenberger\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@munichrocker\" \/>\n<meta name=\"twitter:site\" content=\"@munichrocker\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benedict Witzenberger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#website\",\"url\":\"https:\/\/benedict-witzenberger.de\/wordpress\/\",\"name\":\"Benedict Witzenberger\",\"description\":\"#ddj-Blog and personal portfolio page\",\"publisher\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/benedict-witzenberger.de\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\",\"url\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\",\"name\":\"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken? &bull; Benedict Witzenberger\",\"isPartOf\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#website\"},\"datePublished\":\"2017-02-24T10:55:00+00:00\",\"dateModified\":\"2018-04-23T09:53:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/benedict-witzenberger.de\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken?\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\"},\"author\":{\"name\":\"Benedict Witzenberger\",\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae\"},\"headline\":\"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken?\",\"datePublished\":\"2017-02-24T10:55:00+00:00\",\"dateModified\":\"2018-04-23T09:53:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/\"},\"wordCount\":472,\"publisher\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae\"},\"keywords\":[\"GGplot\",\"Python\",\"R\",\"Scraping\"],\"articleSection\":[\"Werkstatt\"],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae\",\"name\":\"Benedict Witzenberger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a0a634cefbade1a34310db77ccc3fe5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a0a634cefbade1a34310db77ccc3fe5d?s=96&d=mm&r=g\",\"caption\":\"Benedict Witzenberger\"},\"logo\":{\"@id\":\"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/benedict-witzenberger.de\/wordpress\/author\/benedict\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken? &bull; Benedict Witzenberger","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/","og_locale":"de_DE","og_type":"article","og_title":"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken? &bull; Benedict Witzenberger","og_description":"Studenten in M\u00fcnchen haben es nicht leicht. Die Mietpreise sind der Wahnsinn, es gab gro\u00dfen Stress um das relativ teuere Semesterticket &#8211; und dann sind die Bibliotheken noch so voll. Das war zumindest der Anlass, weshalb die Universit\u00e4tsbibliothek der LMU Read more &#8250;","og_url":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/","og_site_name":"Benedict Witzenberger","article_published_time":"2017-02-24T10:55:00+00:00","article_modified_time":"2018-04-23T09:53:45+00:00","og_image":[{"width":977,"height":598,"url":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-content\/uploads\/2017\/02\/Platzfinder-LMU-UB.jpg","type":"image\/jpeg"}],"author":"Benedict Witzenberger","twitter_card":"summary","twitter_creator":"@munichrocker","twitter_site":"@munichrocker","twitter_misc":{"Verfasst von":"Benedict Witzenberger","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#website","url":"https:\/\/benedict-witzenberger.de\/wordpress\/","name":"Benedict Witzenberger","description":"#ddj-Blog and personal portfolio page","publisher":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/benedict-witzenberger.de\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/","url":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/","name":"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken? &bull; Benedict Witzenberger","isPartOf":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#website"},"datePublished":"2017-02-24T10:55:00+00:00","dateModified":"2018-04-23T09:53:45+00:00","breadcrumb":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/benedict-witzenberger.de\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken?"}]},{"@type":"Article","@id":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/#article","isPartOf":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/"},"author":{"name":"Benedict Witzenberger","@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae"},"headline":"Werkstatt: Wie voll sind die M\u00fcnchner Bibliotheken?","datePublished":"2017-02-24T10:55:00+00:00","dateModified":"2018-04-23T09:53:45+00:00","mainEntityOfPage":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/2017\/02\/24\/werkstatt-wie-voll-sind-die-muenchner-bibliotheken\/"},"wordCount":472,"publisher":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae"},"keywords":["GGplot","Python","R","Scraping"],"articleSection":["Werkstatt"],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/ec6b0c6e16ce10af4a73b4dafefeceae","name":"Benedict Witzenberger","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a0a634cefbade1a34310db77ccc3fe5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a0a634cefbade1a34310db77ccc3fe5d?s=96&d=mm&r=g","caption":"Benedict Witzenberger"},"logo":{"@id":"https:\/\/benedict-witzenberger.de\/wordpress\/#\/schema\/person\/image\/"},"url":"https:\/\/benedict-witzenberger.de\/wordpress\/author\/benedict\/"}]}},"_links":{"self":[{"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/posts\/171"}],"collection":[{"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":10,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":184,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/posts\/171\/revisions\/184"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/media\/173"}],"wp:attachment":[{"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benedict-witzenberger.de\/wordpress\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}