From ca71c1112fdb70ce8851064edce82df36228c435 Mon Sep 17 00:00:00 2001 From: melaniewalsh Date: Sun, 12 Jan 2025 22:44:15 -0800 Subject: [PATCH] edit top 500 --- .../np-data/index/execute-results/html.json | 4 +- .../top-500-novels/execute-results/html.json | 4 +- .../top-500-novels/execute-results/tex.json | 4 +- website/.quarto/idx/datasets.qmd.json | 2 +- website/.quarto/idx/index.qmd.json | 2 +- website/.quarto/idx/mission.qmd.json | 2 +- .../top-500-novels/top-500-novels.qmd.json | 2 +- website/.quarto/idx/team.qmd.json | 2 +- website/.quarto/xref/e52ab95c | 2 +- website/_site/datasets.html | 8 +- website/_site/index.html | 8 +- .../np-data/images/Inductance_detectors.jpg | Bin 0 -> 193252 bytes .../posts/np-data/images/pneumatic-tube.jpg | Bin 0 -> 153386 bytes website/_site/posts/np-data/index.html | 151 +- .../exercises/Metadata_Analysis.html | 50 +- .../exercises/Metadata_Analysis.ipynb | 26 +- .../figure-html/cell-13-output-2.png | Bin 126794 -> 126823 bytes .../figure-html/cell-13-output-3.png | Bin 146404 -> 146693 bytes .../figure-html/cell-13-output-4.png | Bin 140161 -> 139898 bytes .../posts/top-500-novels/top-500-novels.html | 1745 +++++++++-------- .../posts/top-500-novels/top-500-novels.pdf | Bin 933063 -> 940722 bytes .../figure-html/cell-5-output-1.png | Bin 34405 -> 0 bytes .../figure-html/cell-6-output-2.png | Bin 140319 -> 140488 bytes .../figure-html/cell-7-output-2.png | Bin 146487 -> 146123 bytes website/_site/search.json | 23 +- website/_site/sitemap.xml | 8 +- website/posts/np-data/index.qmd | 4 +- .../figure-docx/unnamed-chunk-3-1.png | Bin 0 -> 31768 bytes .../figure-docx/unnamed-chunk-4-1.png | Bin 0 -> 31010 bytes .../figure-docx/unnamed-chunk-5-1.png | Bin 0 -> 30451 bytes .../figure-docx/unnamed-chunk-6-1.png | Bin 0 -> 37255 bytes .../figure-docx/unnamed-chunk-8-1.png | Bin 0 -> 30879 bytes .../figure-ipynb/unnamed-chunk-10-1.png | Bin 0 -> 40290 bytes .../figure-ipynb/unnamed-chunk-12-1.png | Bin 0 -> 40211 bytes .../figure-ipynb/unnamed-chunk-3-1.png | Bin 0 -> 41349 bytes .../figure-ipynb/unnamed-chunk-4-1.png | Bin 0 -> 39288 bytes .../figure-ipynb/unnamed-chunk-5-1.png | Bin 0 -> 38449 bytes .../figure-ipynb/unnamed-chunk-6-1.png | Bin 0 -> 48405 bytes .../figure-ipynb/unnamed-chunk-7-1.png | Bin 0 -> 38434 bytes .../figure-ipynb/unnamed-chunk-8-1.png | Bin 0 -> 39280 bytes .../figure-ipynb/unnamed-chunk-9-1.png | Bin 0 -> 46931 bytes .../figure-pdf/unnamed-chunk-10-1.pdf | Bin 0 -> 5658 bytes .../figure-pdf/unnamed-chunk-12-1.pdf | Bin 0 -> 5625 bytes .../figure-pdf/unnamed-chunk-3-1.pdf | Bin 0 -> 4919 bytes .../figure-pdf/unnamed-chunk-4-1.pdf | Bin 0 -> 4943 bytes .../figure-pdf/unnamed-chunk-5-1.pdf | Bin 0 -> 4874 bytes .../figure-pdf/unnamed-chunk-6-1.pdf | Bin 0 -> 4905 bytes .../figure-pdf/unnamed-chunk-7-1.pdf | Bin 0 -> 5641 bytes .../figure-pdf/unnamed-chunk-8-1.pdf | Bin 0 -> 4872 bytes .../figure-pdf/unnamed-chunk-9-1.pdf | Bin 0 -> 5640 bytes .../index_files/mediabag/ECONOMIC-2020.jpg | Bin 0 -> 1258742 bytes .../mediabag/Inductance_detectors.jpg | Bin 0 -> 193252 bytes .../mediabag/NP-economic-benefitposter.jpg | Bin 0 -> 1258742 bytes .../exercises/Metadata_Analysis.qmd | 8 +- .../figure-ipynb/cell-13-output-2.png | Bin 0 -> 57076 bytes .../figure-ipynb/cell-13-output-3.png | Bin 0 -> 62294 bytes .../figure-ipynb/cell-13-output-4.png | Bin 0 -> 61516 bytes .../figure-ipynb/cell-5-output-1.png | Bin 0 -> 14767 bytes .../posts/top-500-novels/top-500-novels.qmd | 181 +- 59 files changed, 1267 insertions(+), 969 deletions(-) create mode 100644 website/_site/posts/np-data/images/Inductance_detectors.jpg create mode 100644 website/_site/posts/np-data/images/pneumatic-tube.jpg delete mode 100644 website/_site/posts/top-500-novels/top-500-novels_files/figure-html/cell-5-output-1.png create mode 100644 website/posts/np-data/index_files/figure-docx/unnamed-chunk-3-1.png create mode 100644 website/posts/np-data/index_files/figure-docx/unnamed-chunk-4-1.png create mode 100644 website/posts/np-data/index_files/figure-docx/unnamed-chunk-5-1.png create mode 100644 website/posts/np-data/index_files/figure-docx/unnamed-chunk-6-1.png create mode 100644 website/posts/np-data/index_files/figure-docx/unnamed-chunk-8-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-10-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-12-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-3-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-4-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-5-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-6-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-7-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-8-1.png create mode 100644 website/posts/np-data/index_files/figure-ipynb/unnamed-chunk-9-1.png create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-10-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-12-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-3-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-4-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-5-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-6-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-7-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-8-1.pdf create mode 100644 website/posts/np-data/index_files/figure-pdf/unnamed-chunk-9-1.pdf create mode 100644 website/posts/np-data/index_files/mediabag/ECONOMIC-2020.jpg create mode 100644 website/posts/np-data/index_files/mediabag/Inductance_detectors.jpg create mode 100644 website/posts/np-data/index_files/mediabag/NP-economic-benefitposter.jpg create mode 100644 website/posts/top-500-novels/exercises/Metadata_Analysis_files/figure-ipynb/cell-13-output-2.png create mode 100644 website/posts/top-500-novels/exercises/Metadata_Analysis_files/figure-ipynb/cell-13-output-3.png create mode 100644 website/posts/top-500-novels/exercises/Metadata_Analysis_files/figure-ipynb/cell-13-output-4.png create mode 100644 website/posts/top-500-novels/exercises/Metadata_Analysis_files/figure-ipynb/cell-5-output-1.png diff --git a/website/.quarto/_freeze/posts/np-data/index/execute-results/html.json b/website/.quarto/_freeze/posts/np-data/index/execute-results/html.json index 94be0d2..54269e8 100644 --- a/website/.quarto/_freeze/posts/np-data/index/execute-results/html.json +++ b/website/.quarto/_freeze/posts/np-data/index/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "73b2792cd1037e384291d55399e881f0", + "hash": "93fb6002296ca2f7bece712d2f24701d", "result": { "engine": "knitr", - "markdown": "---\ntitle: \"U.S. National Park Visit Data (1979-2023)\"\nauthor: Melanie Walsh and Os Keyes\nformat: \n html:\n css: ../../styles.css\n # page-layout: full\n # ipynb: default\n pdf: default\n #docx: default\n #r: default\nlisting:\n - id: exercise-posts-r\n contents: exercises-r\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\n image-height: 200px\n - id: exercise-posts-python\n contents: exercises-python\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\ndate: \"2024-06\"\ncategories: [nature, environment, government, uncertainty, missing-data]\nimage: \"https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Logo_of_the_United_States_National_Park_Service.svg/1200px-Logo_of_the_United_States_National_Park_Service.svg.png\"\nformat-links: [ipynb, pdf, docx]\ncode-fold: true\neditor: visual\ndf-print: kable\nR.options:\n warn: false\ncode-tools: true\nbibliography: ../../references/references.bib\n---\n\n\n\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay .tab-pane}\n\n## Introduction\n\nThis dataset contains the number of visits, per year, to each of the current [63 National Parks](https://en.wikipedia.org/wiki/List_of_national_parks_of_the_United_States#National_parks) administered by the United States National Park Service (NPS), from 1979 to 2023. The NPS also collects visitation and use data about other park units, such as [national battlefields, national rivers, and national monuments]((https://www.nps.gov/aboutus/national-park-system.htm)). However, information about other park units is not included in this particular dataset.\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n
\n\n\n::: {.content-hidden when-format=\"pdf\"}\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, viewof selectedColumns, viewof dataUrl, viewof dataSet, tableContainer, table, viewof twobuttons, viewof selectedPark, viewof park_chart, viewof datasetHeader, tableStyles} from \"ac13d95a907715bf\"\n```\n\n```{ojs}\n//|echo: false\nviewof selectedPark\nviewof park_chart\n```\n\n```{ojs}\n//|echo: false\nviewof datasetHeader\ntableContainer\n```\n\n```{ojs}\n//|echo: false\nviewof twobuttons\n```\n\n```{ojs}\n//|echo: false\n//|output: false\ntable\nhtml`\ntabulator.min.css`\n```\n\n\n\n:::\n\n::: {.callout-note icon=\"false\" collapse=\"true\"}\n\n## View Summary of Columns\n\n\n\n\n```{ojs}\n//|echo: false\nviewof selectedColumns\nviewof dataSummaryView\n\n```\n\n\n\n\n:::\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n:::\n\nThe National Park datasets included here are drawn from data published by the U.S. NPS, and most (but not all) of the contextual information is drawn from material published by the NPS. \n\nWe decided to publish this version of the data, along with our own synthesized documentation and narrative, because the original data is made available in an [NPS data portal](https://irma.nps.gov/Stats/) that is relatively hard to find and to use, and the documentation is distributed across many different web pages, PDFs, and other documents. (The NPS has created an interactive [Microsoft Power BI dashboard](https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm) to help users explore the data more easily.) \n\nThe datasets were curated and published by Melanie Walsh, and the data essay was written by Melanie Walsh and Os Keyes.\n\n## History\n\nA national park is an area of land that a country's government deems important enough to officially protect, preserve, and make available to the public. There are thousands of national parks around the world (some of which are featured in the Netflix documentary, [\"Our Great National Parks,\"](https://www.netflix.com/title/81086133) narrated by former President Barack Obama). \n\nIn the United States, the very first National Park---Yellowstone National Park, in Wyoming---was signed into law in 1872 by President Ulysses S. Grant. \n\n![Old Faithful, the most famous geyser of the whopping ~500 geysers at Yellowstone National Park. Photo credit: [NPS/Neal Herbert](https://www.nps.gov/yell/planyourvisit/exploreoldfaithful.htm).](https://www.nps.gov/yell/planyourvisit/images/ndh-yell-9306.jpg){#fig-yellowstone}\n\nOver the next several decades, a handful of other parks---such as Sequoia (1890), Yosemite (1890), Mount Rainier (1899), and Crater Lake (1902)---joined the system, too. \n\n::: {.callout-tip collapse=\"true\"}\n# What is the most recent National Park?\nThe most recently added National Park is [New River Gorge National Park](https://www.nps.gov/neri/index.htm) in West Virginia. It was designated in 2020. \n:::\n\n![Mount Rainier, also known by the Indigenous name Tahoma, is an active volcano and 14,411 feet tall. Mount Rainier National Park, which is 60 miles south-east of Seattle, Washington, was founded in 1899. Photo credit: [NPS (public domain)](https://www.nps.gov/media/photo/gallery-item.htm?pg=5003191&id=ca60fce5-155d-4519-3e7c-1200750746f6&gid=CA4C9908-155D-4519-3E19303DAEADE22C).](https://www.nps.gov/npgallery/GetAsset/ca60fce5-155d-4519-3e7c-1200750746f6/proxy/hires?){#fig-rainier}\n\nWhile the National Parks were originally created to protect precious, beautiful lands and to make them accessible to everyday people---a noble goal---it is important to remember that many of these lands were taken, sometimes forcibly, from Native American people who already owned, lived, and worked on them [@spence_dispossessing_2000; @beauchamp_beyond_2020]. Today, there are still calls for the NPS to [return the lands of the National Parks to Indigenous people.](https://www.theatlantic.com/magazine/archive/2021/05/return-the-national-parks-to-the-tribes/618395/) \n\nIn a similar vein, scholars have shown that early environmental conservation movements---movements that helped to spur the development of the National Parks---were troublingly intertwined with racism and eugenics movements [@beauchamp_beyond_2020]. These prejudiced origins, combined with continuing forms of environmental racism (e.g., many parks are located far from cities, with limited public transporation options and limited community outreach), have contributed to the marginalization of people of color and other minorities in the parks. Research has shown that white people visit the parks more than other racial groups [@weber_why_2013; @alba_covid-19s_2022; @floyd_coming_2002]. So while the National Parks are technically open to everyone, they are not equally accessible to everyone in the same way. And these exclusions shape the parks' visitation data even before it's counted.\n\nSo when and why did visit counting start at the U.S. National Parks? Well, according to the NPS, the counting of park visits started [as early as 1904](https://www.nps.gov/subjects/socialscience/visitor-use-statistics.htm) (more than 10 years before the National Park Service itself was officially created). But at this time, and for the next 50 years or so, their data collection methods were mostly [informal, inconsistent, and low-tech](https://www.nps.gov/subjects/socialscience/visitor-use-statistics.htm). \n\n\n\nBut in 1965, the NPS started getting serious about counting visits. That year, the U.S. Congress passed [The Land and Water Conservation Fund Act of 1965](https://www.everycrsreport.com/reports/RL33531.html). This act created a new source of government money specifically dedicated to protecting natural resources and expanding outdoor recreation infrastructure. Because the act stipulated that the amount of money allocated to each area should be [\"proportional to visitor use,\"](https://www.nps.gov/subjects/socialscience/statistics-history.htm) the NPS buckled down on counting visitor use. They [\"developed and institutionalized a formal system for collecting, compiling and reporting visitor use data.\"](https://www.nps.gov/subjects/socialscience/statistics-history.htm) \n\nIn 1979, the NPS comprehensively changed their counting procedure, and [all parks began tracking vistor use by month]((https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm)) (as opposed to year) across 11 different statistics. This is why the datasets featured here begin in 1979.[^1] **Note: We aggregated monthly counts into yearly counts for the dataset featured in this essay. A dataset with visit counts by month is available in [\"Explore the Data.\"](?tab=explore-the-data)**\n\n[^1]: The NPS also offers [annual visitation information between 1904-1979](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Historic%20Annual%20Recreation%20Visits%20(1904%20-%201979)), but it is a separate, less consistent dataset.\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Note on installation: https://statsandr.com/blog/an-efficient-way-to-install-and-load-r-packages/\n\n# Load the dplyr package for data manipulation\n# Load the ggplot2 package for data visualization\n# Load \"ggthemes\", which let's us use colorblind-compatible palettes. When we've only got one line, this will just be black.\n# Load \"scales\" for abbreviating axis labels\nlibrary(dplyr, warn = FALSE)\nlibrary(ggplot2)\nlibrary(ggthemes)\nlibrary(\"scales\")\n\n# Load National Park Visitation data\nnp_data <- read.csv(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/main/datasets/national-parks/US-National-Parks_RecreationVisits_1979-2023.csv\", stringsAsFactors = FALSE)\n\n# Specify the colorblind palette\ncb_palette <- colorblind_pal()(8)\n\n# Turn off scientific notation\noptions(scipen = 999)\n\n# Filter down to Yellowstone National Park\nyellowstone_data <- np_data %>% filter(ParkName == \"Yellowstone NP\")\n\n# Visualise it\nggplot(data = yellowstone_data) + \n geom_line(aes(x = Year, y = RecreationVisits), color = cb_palette[1]) + \n labs(title = \"Yellowstone National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-7-1.png){width=672}\n:::\n:::\n\n\n\n\nWhile today's National Park data collection system is more formal and sophisticated than the one that the NPS used in 1904, there are still many inconsistencies, flaws, and limitations (as the NPS [openly acknowledges](https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm)). This data does *not* represent the *exact* number of people who visited the parks in the last 50 years---hardly! Think about how difficult it would be to count every single one of the millions of people who walked, hiked, backpacked, drove, shuttled, canoed, biked, or skied into each of the 63 different parks since 1979. These parks are located in dozens of different geographic areas, including mountains, volcanoes, deserts, canyons, wetlands, forests, and islands; the parks have experienced countless different weather conditions during this time, including blizzards, hurricanes, wildfires, avalanches, and extreme heat; and the parks have also been allocated varying amounts of money and staff members to do the counting. Given all this variability, it is simply not possible to count every single visit to every single National Park ever. \n\nWe believe the National Park visit data is useful to study and consider precisely for this reason: because it helps demonstrate that **data never reflects reality precisely**. It also demonstrates that collecting and analyzing data, even when it is flawed and approximate, is sometimes worthwhile---but only if you fully understand the data's flaws, limitations, and history, and only if you incorporate these considerations into all subsequent analyses, interpretations, and takeaways.\n\n## Where did the data come from? Who collected it? {#where-did-the-data-come-from-who-collected-it}\n\nThe National Park data on this website was originally organized and published by the [NPS Social Science Program](https://www.nps.gov/subjects/socialscience/visitor-use-statistics.htm), which in turn runs the NPS Visitor Use Statistics program, an initiative that coordinates visitor use statistics across the parks. Thousands of staff members across all 63 parks were also involved in the data collection process.\n\nAccording [to the NPS](https://www.nps.gov/subjects/socialscience/statistics-history.htm), the Visitor Use Statistics program aims to:\n\n> - Provide a statistically valid, reliable, and uniform method of collecting and reporting visitor use data for each independent unit administered by the NPS\n> - Support regular collection, and timely publication, analysis and interpretation of these data\n> - Enact quality control checks, verify measurements, and ensure consistency and comparability of data among areas of the NPS\n\nWe accessed the original data through the NPS's [Visitor Use Statistics data portal](https://irma.nps.gov/Stats/), which publishes visit use data in alignment with the program's stated goals. Through this portal, anyone can generate reports and download data for [different visit use categories](https://irma.nps.gov/Stats/Reports/National) and time periods---at both national and individual park levels. \n\nTo download the data included here, we first selected [\"National Reports\"](https://irma.nps.gov/Stats/Reports/National) in the data portal, and we then selected the [\"Query Builder for Public Use Statistics (1979 - Last Calendar Year)\"](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Public%20Use%20Statistics%20(1979%20-%20Last%20Calendar%20Year)) report type. Here are the selections we made:\n\n- For \"Park Types,\" we selected only \"National Parks.\"\n- For \"Years,\" we selected all possible years (1979-2023).\n- For \"Regions,\" we selected all possible regions. \n- For \"Field Type,\" we selected only \"Recreation Visits\" (excluding the other 10 possible statistics: \"NonRecreation Visits,\" \"Recreation Hours,\" \"NonRecreation Hours,\" \"Concessioner Lodging,\" \"Concessioner Camping,\" \"Tent Campers,\" \"RV Campers,\" \"Backcountry Campers,\" \"NonRecreation Overnight Stays,\" and \"Miscellaneous Overnight Stays\").\n- For \"Additional Fields,\" we selected \"State\" and \"Region.\"\n- We also selected the option of viewing the report as an annual summary of visit counts (as opposed to monthly visit counts). \n\n\n![Selections for National Park visit data generated with [\"Query Builder for Public Use Statistics (1979 - Last Calendar Year)\"](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Public%20Use%20Statistics%20(1979%20-%20Last%20Calendar%20Year)).](images/query-builder-csv-screenshot.png){#fig-query-builder fig-alt=\"Selections for National Park visit data generated with Query Builder for Public Use Statistics\" width=90%}\n\nIf you choose to download this report as a CSV file, it will unfortunately not look exactly like the report pictured in @fig-query-builder; instead, the CSV will include all visit and use types, and it will include visit and use information by month rather than by year. When I (Melanie Walsh) have compiled this data to share with my students in the past, I have sometimes downloaded the CSV file, removed the columns that I'm not interested in, and aggregated the data by year programatically. In other cases, I have simply copied and pasted the annual summary report into a CSV file. \n\nIn either case, it is usually necessary to explicitly transform the format of the \"RecreationVisits\" column into a number and to remove the commas that separate the numbers by thousands (a transformation that you can do with spreadsheet applications like Excel or Google Sheets, or with a programming language like Python or R).\nFinally, we published the data to this project's GitHub repository for easier storage and access.\n\n\n## Why was the data collected? How is the data used?\n\nThe NPS collects visit data partly because the government requires it, as we've already discussed. But the NPS also uses the visit data for other internal purposes---to help determine which parks might need more staff members and programming, which hiking trails might need more maintenance, which natural areas might need more protection, or which visitor centers might need more bathrooms.\n\nThe visit data also helps the communities and businesses surrounding the parks understand how they can best provide and share resources, like emergency vehicles, sanitation, and water. For example, if there's been a large influx of hikers to Mount Rainier National Park in recent years, that would be an important thing for the surrounding community to know. Because those hikers would probably need more ambulance trips and rescue helicopters (unfortunately but inevitably), and the surrounding towns wouldn't want visitors to the National Park booking up all the available emergency vehicles in town. \n\n![2021 report on NPS economic impact. Graphic credit: [NPS](https://www.nps.gov/orgs/1207/vse2020.htm).](https://www.nps.gov/orgs/1207/images/ECONOMIC-2020.jpg){#fig-economic-benefit fig-alt=\"2021 report on NPS economic impact. Graphic credit: [NPS](https://www.nps.gov/orgs/1207/vse2020.htm)\" fig-align=\"center\" width=90%}\n\nThe visitation data also helps the NPS estimate the beneficial impact---economic and otherwise---that the parks have on nearby communities and the nation at large (@fig-economic-benefit). For example, in 2021, an [NPS report](https://www.nps.gov/grca/learn/news/visitor-use-spending-to-grand-canyon-2021.htm) showed that \"4.5 million visitors to Grand Canyon National Park...spent an estimated $710 million in gateway regions near the park,\" which \"supported 9,390 jobs in the local area.\" These estimations are important because they help the parks advocate for more funding, support, and attention.\n\nThe data is also frequently reported on by journalists, who use it to highlight the most popular parks and noteworthy visitation records, and to point their readers to parks where they might be able to find some peace and quiet (see articles in [Thrillist](https://www.thrillist.com/news/nation/most-visited-national-parks-ranked-nps), [Smithsonian](https://www.smithsonianmag.com/smart-news/most-and-least-popular-national-parks-2023-180983850/), and [CNN](https://www.cnn.com/travel/article/most-visited-us-national-park-sites-2022/index.html)). \n\n::: {.callout-tip}\n## Discussion Question 1\n\nHow else might the National Park visit data be used? How might it be used by artists, historians, literary scholars, sociologists, or librarians?\n\nFor more, see [Discussion Q 1](?tab=discussion-%26-activities#discussion-1).\n:::\n\n## What's in the data? What \"counts\" as a visit?\n\nNow that we know how the data is used, let's dive into the data itself. What's actually in this dataset? What \"counts\" as a visit?\n\nTo get started, let's load the dataset and examine a random sample of rows.\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# https://statsandr.com/blog/an-efficient-way-to-install-and-load-r-packages/\n\n# Load the dplyr package\nlibrary(dplyr, warn = FALSE)\n\n# Load National Park Visitation data\nnp_data <- read.csv(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/main/datasets/national-parks/US-National-Parks_RecreationVisits_1979-2023.csv\", stringsAsFactors = FALSE)\n\n## Look at the structure of the dataset, randomly sample 10 rows\nnp_data %>% slice_sample(n = 10)\n```\n\n::: {.cell-output-display}\n
\n\n|ParkName |Region |State | Year| RecreationVisits|\n|:---------------------|:-------------|:-----|----:|----------------:|\n|Rocky Mountain NP |Intermountain |CO | 1998| 3035422|\n|Cuyahoga Valley NP |Midwest |OH | 1980| 563300|\n|Kings Canyon NP |Pacific West |CA | 2009| 609296|\n|Mesa Verde NP |Intermountain |CO | 1996| 617360|\n|Theodore Roosevelt NP |Midwest |ND | 1987| 424846|\n|Channel Islands NP |Pacific West |CA | 2003| 585919|\n|Grand Teton NP |Intermountain |WY | 2003| 2355693|\n|Petrified Forest NP |Intermountain |AZ | 1986| 761257|\n|Rocky Mountain NP |Intermountain |CO | 1985| 2248854|\n|Indiana Dunes NP |Midwest |IN | 2023| 2765892|\n\n
\n:::\n:::\n\n\n\n\nHere we see five columns -- \"ParkName\", \"Region\", \"State\", \"Year\", and \"RecreationVisits.\" The first four are pretty self-explanatory, but why is the fifth labelled \"RecreationVisits\" rather than \"Visits\" or \"Visitors\"? \n\nIt turns out that the NPS counts visits, not visitors (which would be more difficult to track), and they distinguish between different *kinds* of visits to their parks. First, there are *reportable* and *non-reportable* visits. When NPS employees or their families go to the parks, these visits are *non-reportable*. But pretty much everything else is *reportable*. Within *reportable* visits, there are two more types of visits: *recreation* and *non-recreation* visits. Recreation visits are when people are visiting the parks for fun, vacation, exercise, school trips, etc., and non-recreation visits are when people are visiting the parks for other reasons. For example, some people need to travel *through* the parks, either because a highway runs through the park, or because they live on \"inholdings\" (private property that is surrounded by a National Park on all sides). Other people need to visit the parks because they have business to conduct.\n\nHere's a [full list of the \"reportable non-recreation\" visits](https://www.nps.gov/subjects/socialscience/nps-visitor-use-statistics-definitions.htm), according to the NPS: \n\n> - Persons going to and from inholdings across significant parts of park land;\n> - Commuter and other traffic using NPS-administered roads or waterways through a park for their convenience;\n> - Trades-people with business in the park;\n> - Any civilian activity a part of or incidental to the pursuit of a gainful occupation (e.g., guides);\n> - Government personnel (other than NPS employees) with business in the park;\n> - Citizens using NPS buildings for civic or local government business, or attending public hearings;\n> - Outside research activities (visits and overnights) if independent of NPS legislated interests (e.g. meteorological research).\n\nCarefully reviewing this list reveals that the term \"recreation visit\" excludes a significant number of visits and individuals. It also raises important questions about how the NPS distinguishes between different types of visits, which we will explore further below.\n\n::: {.callout-tip}\n## Discussion Question 2\n\nWhat are the potential consequences of considering these visits to be *non-recreation* vs. *recreation* visits? \n\nFor more, see [Discussion Q 2](?tab=discussion-%26-activities#discussion-2).\n:::\n\n![Badlands National Park sign, gesturing to the South Unit's co-management between the Oglala Sioux Tribe and the NPS. Photo credit: [NPS](https://www.nps.gov/common/uploads/structured_data/62A55536-BD00-F301-462744BEDD8BA664.jpg?width=800&height=800&mode=crop&quality=90).](https://www.nps.gov/common/uploads/structured_data/62A55536-BD00-F301-462744BEDD8BA664.jpg?width=800&height=800&mode=crop&quality=90){#fig-badlands fig-align=\"center\" width=\"80%\"}\n\nThe list also prompts us to consider those whose presence in the parks doesn't fit neatly into the \"visit\" category at all. For instance, a portion of Badlands National Park in South Dakota overlaps with the Pine Ridge Indian Reservation, which is [\"owned by the Oglala Sioux Tribe and managed by the National Park Service under an agreement with the Tribe.\"](https://www.nps.gov/articles/000/stronghold-district.htm) According to the NPS, when traveling through this area, visitors might encounter \"signs of religious worship\" from Tribal members, such as \"prayer sticks\" or pieces of \"brightly colored fabric tied to a shrub,\" and they are advised to \"respect [the Tribal members'] beliefs and practices and leave these objects.\" These symbols woven into the landscape underscore that members of the Oglala Sioux Tribe are not visitors to the Badlands but stewards and residents with deep ancestral connections. It reveals that the National Park data's focus on \"visits\"—--whether reportable or non-reportable, recreational or non-recreational—--fails to account for those who are not visitors, those who own and live on the land, and those whose ancestors lived on the land before the NPS even existed. \n\n## How was the data collected?\n\nAt this point, we know *what* counts as visit, but *how* does the NPS actually count these visits and collect data? And how do they differentiate between the different types of visits? Take a moment and see if you come up with a few guesses.\n\nIt turns out that each park counts visits differently. At many parks, *each entrance* at each park even counts visits differently. \n\nIf you go to the [\"Park Reports\"](https://irma.nps.gov/Stats/Reports/Park) tab in the NPS Data Portal, you can look up an individual park and download a PDF file called \"Visitor Use Counting Procedures,\" which details exactly what procedures they use to count visits at this park. Most of the parks have several PDFs because their counting procedures have changed many times over the years!\n\n::: {.callout-tip}\n## Activity 2\n\nHow are the procedures for three different parks similar or different? For more, see [Activity 2](?tab=discussion-%26-activities#activity-2).\n:::\n\n\n![An example of a pneumatic tube traffic counter, installed above the road.](https://upload.wikimedia.org/wikipedia/commons/d/d3/Metrocount_vehicle_classifier_system_on_B3033_-_geograph.org.uk_-_1033728.jpg?20110223182337){#fig-pneumatic-tube width=\"300\"}\n\n\nTo count visits, most parks use a combination of automatic traffic counters and manual counting--—that is, staff members who use their eyeballs to literally count the number of people arriving by foot, bike, bus, cross-country skis, snowmobile, boat, canoe, etc. \n\nWhether automatic or manual, these counts are usually modified with specially designed mathematical formulas, which are supposed to produce the most accurate estimate for recreation visits at any given location. Staff members add, subtract, multiply, and divide the counts based on a variety of factors, such as the season or the entrance (e.g. assuming that more people would likely be arriving in a car in the summer months at the most popular gate than in the winter months at the least popular gate).\n\n![Table 1 from \"VOYAGEURS NATIONAL PARK PUBLIC USE REPORTING AND COUNTING INSTRUCTIONS.\" Find the document here: https://irma.nps.gov/Stats/Reports/Park.](images/Voyageurs-table1.png)\n \n\nFor instance, in the summer months (May through November) at Voyageurs National Park in northern Minnesota---a park dominated by lakes and waterways---they [estimate visits](https://irma.nps.gov/Stats/Reports/Park) by taking the number of visits to visitor centers, and then adding the estimated number of fishermen, houseboaters, and backcountry overnight stays. To take just one of these categories as an example, they estimate the number of fishermen by \"taking the sum of the visitor center counts and applying the regression equation in Table 1,\" which is displayed above. In August, that number would be `(-1.06) * VISITOR CENTER COUNTS + 37,021`. However, if the month is November, and if the visitor count exceeds 17,00, \"then fishermen are estimated at 0.\" These detailed instructions point to the countless decisions and methodological choices that underlie the National Park visit data. These manipulations are arguably necessary to achieve \"statistically valid, reliable, and uniform\" collection methods and data, as is the program's goal, but they also reveal the ever persistent gap between recorded data and reality. \n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Filter down to Voyageurs National Park\nvoyageurs_data <- np_data %>% filter(ParkName == \"Voyageurs NP\")\n\n# Visualizee it\nggplot(data = voyageurs_data) + \n geom_line(aes(x = Year, y = RecreationVisits), color = cb_palette[8]) + \n labs(title = \"Voyageurs National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-9-1.png){width=672}\n:::\n:::\n\n\n\n\n\nConsider, next, Everglades National Park in Florida. At the Shark Valley Entrance, there is a pneumatic tube traffic counter (@fig-pneumatic-tube) that counts the number of cars that pass over it. The Everglades NP staff members then apply different mathematical operations to this number in order to arrive at what they think is the most accurate estimate of recreation visits:\n\n\n\n\n{{< pdf other_docs/Everglades_Visitor-Use-Counting-Procedures_2023.pdf width=100% height=500 >}}\n\n\n\n\n\n\n> The traffic count is divided by 2 to account for entry and exit. The adjusted traffic count is reduced by the number of buses, the number of bicycles counted when the entrance station is open, 127 bicycles per month to account for after-hours use, and by 200 non-recreation vehicles per month October through May and 100 non-recreation vehicles per month June through September. The traffic count is further reduced by 350 non-reportable (NPS) vehicles per month. The reduced count is multiplied by 2.17 persons per vehicle. \n\nLike Voyageurs NP in Minnesota, Everglades NP modifies their raw visit data in many ways. Once again, these modifications are arguably necessary, but they are nevertheless extensive and almost certainly subject to debate. \n\nWhat's more, the devices that the NPS uses to count visits---such as pneumatic tube counters or induction loop counters (magnetized coils of wire that are installed under a road, and that \"trip\" when a vehicle passes over them)---sometimes *break*.\n\n![An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!).](https://upload.wikimedia.org/wikipedia/commons/8/8c/Inductance_detectors.jpg){#fig-induction width=\"300\"}\n\nFor example, [according to the NPS data logs](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=CRLA), the induction loop counter at one of the main entrances at Crater Lake National Park in Oregon broke in 2012 and wasn't repaired for at least a year:\n\n> 2/1/2012 | The Traffic Counter at Annie Springs Entrance Station was not functioning properly and therefore we have a count of zero.\n\n> 3/1/2012 | Broken counter at Annie Springs Entrance, unable to record numbers.\n\n> 4/1/2012 | Traffic counter was broken for the beginning of the month and may have low numbers.\n\n> 10/1/2012 | Counts estimated by Butch\n\n> 11/1/2012 | TRAFFIC COUNT AT ANNIE SPRINGS ENTRANCE NOT AVAILIBLE\n\n> 12/1/2012 | TRAFFIC COUNT AT ANNIE SPRINGS ENTRANCE NOT AVAILIBLE\n\n> 1/1/2013 | Traffic count at Annie Springs estimated.\n\n> 2/1/2013 | Traffic count at Annie Springs estimated.\n\nIn some months, the broken counter meant that the number of recorded visits at this entrace was recorded as zero. In other months, park staff---including someone named Butch---decided to estimate the counts.\n\nYou can see a similar, but more severe, example of a broken counter at Carlsbad Caverns National Park in California, where it appears that visits have had a recent decline since 2019:\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Load the \"ggplot2\" package (which we'll be using a lot more)\nlibrary(ggplot2)\n\n# Let's also load \"ggthemes\", which let's us use colorblind-compatible palettes. When we've only got one line, this will just be black.\nlibrary(ggthemes)\n\n# And specify the colorblind palette\ncb_palette <- colorblind_pal()(8)\n\n# Turn off scientific notation\noptions(scipen = 999)\n\n# Filter down to Carlsbad Caverns National Park\ncarlsbad_data <- np_data %>% filter(ParkName == \"Carlsbad Caverns NP\")\n\n# Visualise it\nggplot(data = carlsbad_data) + \n geom_line(aes(x = Year, y = RecreationVisits), color = cb_palette[2]) + \n labs(title = \"Carlsbad Caverns National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-10-1.png){width=672}\n:::\n:::\n\n\n\n\nThis decline may be due, in part, to the COVID-19 pandemic. But the NPS logs also show that the main induction loop counter at Carlsbad Caverns [broke in 2019 and has remained broken for multiple years](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=CAVE):\n\n> 9/1/2019 | Traffic counter apparently has been broken since July. Traffic counts are estimated. \n\n> 4/1/2020 | Main road traffic counter is broken, I have estimated the count. \n\n> 12/1/2020 | Corona virus closure that began in November ended on December 4th. Main road traffic counter remains broken.Possible problem with Loop Road counter.\n\n> 4/1/2022 Main road traffic counter remains broken. Rattlesnake Springs traffic counter seems to be off, I will henceforth provide estimates. \n\n> 9/1/2023 | Loop Road and backcountry closed due to flood damage. Slaughter Canyon Cave remains closed Traffic counter on main road remains broken. \n\n::: {.callout-tip}\n## Activity 1\n\nNow that we've talked about how data is collected (and the fragility of some of those methods), it's a good time to think about how even the same method, deployed at different places, might be differently unreliable. For more, see [Activity 1](?tab=discussion-%26-activities#activity-1-1).\n:::\n\n## What data is missing? How is uncertainty handled?\n\nWe already know that there is a lot missing from the National Park visit data. There are people who never make it the parks---and thus never make it into the dataset---because of environmental racism and a history of discrimination and colonialism that is intertwined with the parks. There are people who don't fit neatly into the category of a visit, such as those who live inside the parks. There are also people who are missed by the parks' various counting procedures and manipulations.\n\nWhat else might be missing or uncertain? It turns out that the data itself can point us to some answers. An important step in Exploratory Data Analysis (EDA) is to analyze key summary statistics for your data, such as maximum, minimum, or average values. This step can reveal important patterns, problems, or inconsistencies in the data, and point to parts of a dataset's backstory that need to be researched and understood further. Exploring summary statistics for the National Park data--- specifically, minimum values---reveals a few curious outliers that point us to key areas of uncertainty.\n\nIf you filter the National Park visit data for the parks with the lest (or minimum) number of visits since 1979, you will notice that there are some parks that had *zero* visits in a given year.\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Filter for minimum RecVisits\nleast_visited <- np_data %>% filter(RecreationVisits == min(RecreationVisits))\n\n# Number of rows for least visited\nnum_rows <- nrow(least_visited)\n\n# Show some of them\nleast_visited %>% slice_sample(n = min(10, num_rows))\n```\n\n::: {.cell-output-display}\n
\n\n|ParkName |Region |State | Year| RecreationVisits|\n|:-------------------------------|:------------|:-----|----:|----------------:|\n|Katmai NP & PRES |Alaska |AK | 1995| 0|\n|National Park of American Samoa |Pacific West |AS | 2003| 0|\n|Kobuk Valley NP |Alaska |AK | 2014| 0|\n|Kobuk Valley NP |Alaska |AK | 2015| 0|\n\n
\n:::\n:::\n\n\n\n\nYou might guess that there are no visits in these years because these parks are all located in remote places, like rural Alaska or American Samoa. \n\nIf we look at the visitation trends for Kobuk Valley National Park in Alaska, for example, we can see that a couple of years with zero visits isn't a huge aberration from the trend:\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Filter down to Mount Rainier National Park\nkobuk_data <- np_data %>% filter(ParkName == \"Kobuk Valley NP\")\n\n# Visualise it\nggplot(data = kobuk_data) + \n geom_line(aes(x = Year, y = RecreationVisits ), color = cb_palette[6]) +\n labs(title = \"Kobuk Valley National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-12-1.png){width=672}\n:::\n:::\n\n\n\n\nBut after a little digging, we found out that in 2014 and 2015, Kobuk Valley National Park actually didn't count visitors at all.\n\nIf we look at the [visitation reports for Kobuk Valley in 2014](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=KOVA), they say that \"the park is developing a new counting system and has made the decision not to report visitor counts until the new system is in place.\" Though they didn't count visitors at all, they still recorded a zero in those two years. This hard number makes it seem conclusive, like there were truly zero people who stepped onto the park lands in those years.\n\nIn 2015, John Quinley, the Alaska regional spokesperson for the NPS, spoke with [the Anchorage Daily News about this issue](https://www.adn.com/outdoors/article/alaskas-little-visited-parks/2015/02/18/), and he admitted that \"it might have been better if park statisticians had put something other than a zero in the visitor box for 2014 — say maybe a question mark.\"\n\n::: {.callout-tip}\n## Activity 3\n\nCan you find evidence of people visiting Kobuk Valley National Park in 2014 and 2015? For more, see [Activity 3](?tab=discussion-%26-activities#activity-3).\n:::\n\n::: {.callout-tip}\n## Discussion Question 3\n\nWhy would you or wouldn't you want to record a question mark in this dataset? For more, see [Discussion Q 3](?tab=discussion-%26-activities#discussion-3).\n:::\n\nThe decision not to record visits in certain years seems reasonable on its face, but we've also seen a *lot* of parks in more highly-frequented areas that, when faced with a similar situation, chose to provide an estimate for a certain year based on average counts from previous years, rather than simply declare that nobody visited. \n\nWhen parks get more visits, they usually get more money, resources, and staff. Once outfitted with more funding, resources, and staff, they can usually attract and support even more visitors. By contrast, a dip in visitation data can potentially lead to a cycle of stagnation or decline. The choice to record zeros for Kobuk Valley NP in 2014 and 2015 was likely made out of a sense of scientific responsibility and integrity. It's unclear how, if at all, this choice impacted the park. But this example highlights how data collection decisions can have real-world impacts, and how the people making these choices are often aware of these impacts and must weigh trade-offs---not only from a scientific or statistical perspective, but also from a social, economic, political, and even personal perspective.\n\n## Conclusion\n\nThe NPS's visitation data is a valuable resource that gives us a glimpse into the country's relationship with the National Parks---some of the world's most precious natural resources---over the last 50 years. This data is integral to the maintenance and growth of the parks, to environmental conservation, to gateway communities, and to our historical and sociological understanding. But the National Park visit data, like all data, is also approximate and imperfect. As we have seen, it is collected by imperfect devices, such as traffic counters that are vulnerable to weather or malfunctioning. But even more importantly, it is collected and shaped by people, people who not only count some of the visits manually, but who also decide what counts as a visit, how to count visits (e.g., to use this technology or that formula) and which numbers to record when things don't go as planned. There are endless interesting, important, and fun analyses that we can do with this visit data, but to really make sense of it in any meaningful way, we need to dig into and consider the people, context, and circumstances that shaped it.\n\n## References\n\n::: {#refs}\n:::\n\n\n::: {#custom-footnotes}\n:::\n\n# Explore the Data {#tabset-1-2}\n\n## Explore the Data\n\n::: {.content-hidden when-format=\"pdf\"}\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof alldataSummaryView, viewof allselectedColumns, viewof alldataSet, alltableContainer, alltable, viewof alltwobuttons, alltableStyles} from \"878f51be5dd541f5\"\n```\n\n```{ojs}\n//|echo: false\nviewof alldataSet\n```\n\n```{ojs}\n//|echo: false\nalltableContainer\n```\n\n```{ojs}\n//|echo: false\nviewof alltwobuttons\n```\n\n```{ojs}\n//|echo: false\n//|output: false\nalltable\n```\n\n```{ojs}\n//|echo: false\nviewof allselectedColumns\nviewof alldataSummaryView\n\n```\n\n\n\n:::\n\n# Exercises {#exercises}\n\n## Programming Exercises\n\nThe National Park visitation data by year and month is well-suited for teaching introductory data analysis, manipulation, and visualization methods. \n\nBased on our experience, the data is particularly useful for teaching filter and groupby functions, where students can, for example, filter by individual parks, states, or regions, or groupby and calculate summary statistics for different parks, states, regions, or years.\n\nThe data is also useful for teaching basic and advanced visualization methods, like creating line plots over time or customizing plot aesthetics (e.g., abbreviating millions and thousands, altering axis ranges).\n\nWhen working on visualization methods, we often ask students to share plots in a communal class forum, such as a shared Google Doc or Discord/Slack. This approach can be effective for building community; showcasing different ways of representing similar data; and enabling instructors to identify common strengths or problems.\n\n::: {.panel-tabset .nav-pills}\n# R\n\n::: {#exercise-posts-r}\n:::\n\n# Python\n::: {#exercise-posts-python}\n:::\n:::\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 \n### Devices Will Break\n\nIt is inevitable that the devices that the National Park Service uses to count visits to the parks — like induction loop counters installed on the road — will break. But they will also get *fixed* at different rates, in different locations, as we could see in the case of Crater Lake National Park (where a counter was fixed quickly) and Carlsbad Caverns National Park (where a broken counter from 2019 still has not been fixed).\n\nThere are many reasons for these disparities, but some of the big ones might be geography and resources. The more remote a park, the harder it is to get a repair team to it. The less-resourced a park, the lower the likelihood they have on-site repair teams, or are prioritized by the repair teams that can be dispatched.\n\nWith this in mind, look at the locations of the following parks. Suppose that each one has an outage in their induction loop counter: which ones would you expect to be fixed first, and why? Research the parks, and rank them on a scale of 1 to 5 (1 being highest, and 5 being lowest) of which would be fixed quickest.\n\n| Park | Priority (1-5) | Reason |\n|--------------------|----------------|--------|\n| Acadia NP | | |\n| Lassen Volcanic NP | | |\n| Saguaro NP | | |\n| Yosemite NP | | |\n| Mammoth Cave NP | | |\n\n## Activity 2 \n### Counting Procedures\n\nThe National Park Service sometimes fills in missing data with hard numbers or approximates data by applying special mathematical formulas. This is necessary work, but it is also under-explained work.\n\nTo see this in action, go to [the NPS page that documents park reports](https://irma.nps.gov/Stats/Reports/Park) and down the \"Visitor Use Counting Procedures\" PDF for three different parks.\n\nHow are the procedures for these three parks similar or different? What kind of effect do you think this has on the resulting data? What do you think is the best way of documenting this information and communicating it to users of the data?\n\n## Activity 3 \n### Missing Evidence\n\nIn 2014 and 2015, Kobuk Valley National Park reported that there were zero visitors to the park.\n\nUse publicly available internet data---[Flickr photos](https://www.flickr.com/), Twitter posts, etc.---to try and find evidence of people visiting the park. (Hint: There is existing evidence to find!) Consider how you might use tags and metadata categories to find what you're looking for.\n\nBased on your findings, how do you think, differently, if at all, about Kobuk Valley's decision to record zero visits and about alternative methods for counting visits?\n\n## Discussion Question 1 \n### Alternative Uses of the Data\n\nWe discussed some of the ways the National Park visit data is used. How else might the data be used? How might it be used by artists, historians, literary scholars, sociologists, or librarians?\n\n## Discussion Question 2\n### \"Non-Recreation\" Visits\n\nRead through the [full list of the \"reportable non-recreation\" visits](https://www.nps.gov/subjects/socialscience/nps-visitor-use-statistics-definitions.htm), according to the NPS: \n\n> - Persons going to and from inholdings across significant parts of park land;\n> - Commuter and other traffic using NPS-administered roads or waterways through a park for their convenience;\n> - Trades-people with business in the park;\n> - Any civilian activity a part of or incidental to the pursuit of a gainful occupation (e.g., guides);\n> - Government personnel (other than NPS employees) with business in the park;\n> - Citizens using NPS buildings for civic or local government business, or attending public hearings;\n> - Outside research activities (visits and overnights) if independent of NPS legislated interests (e.g. meteorological research).\n\nWhat are the potential consequences of considering these visits to be *non-recreation* vs. *recreation* visits? \n\n## Discussion Question 3\n### Recording Uncertainty\n\nIn 2014 and 2015, Kobuk Valley National Park recorded zero visits, even though they decided not to count visits at all. John Quinley, the Alaska regional spokesperson for the NPS, spoke with [the Anchorage Daily News about this issue](https://www.adn.com/outdoors/article/alaskas-little-visited-parks/2015/02/18/), and he admitted that \"it might have been better if park statisticians had put something other than a zero in the visitor box for 2014 — say maybe a question mark.\"\n\nWhy would you or wouldn't you want to record a question mark in this dataset? How would this impact a qualitative vs quantitative analysis of the data?\n\nWhat else could you use to record uncertainty? What would be the potential consequences of that choice?\n:::\n\n\n", + "markdown": "---\ntitle: \"U.S. National Park Visit Data (1979-2023)\"\nauthor: Melanie Walsh and Os Keyes\nformat: \n html:\n css: ../../styles.css\n # page-layout: full\n # ipynb: default\n pdf: default\n #docx: default\n #r: default\nlisting:\n - id: exercise-posts-r\n contents: exercises-r\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\n image-height: 200px\n - id: exercise-posts-python\n contents: exercises-python\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\ndate: \"2024-06\"\ncategories: [nature, environment, government, uncertainty, missing-data]\nimage: \"https://upload.wikimedia.org/wikipedia/commons/thumb/9/97/Logo_of_the_United_States_National_Park_Service.svg/1200px-Logo_of_the_United_States_National_Park_Service.svg.png\"\nformat-links: [ipynb, pdf, docx]\ncode-fold: true\neditor: visual\ndf-print: kable\nR.options:\n warn: false\ncode-tools: true\nbibliography: ../../references/references.bib\n---\n\n\n\n\n\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay .tab-pane}\n\n## Introduction\n\nThis dataset contains the number of visits, per year, to each of the current [63 National Parks](https://en.wikipedia.org/wiki/List_of_national_parks_of_the_United_States#National_parks) administered by the United States National Park Service (NPS), from 1979 to 2023. The NPS also collects visitation and use data about other park units, such as [national battlefields, national rivers, and national monuments]((https://www.nps.gov/aboutus/national-park-system.htm)). However, information about other park units is not included in this particular dataset.\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n
\n\n\n::: {.content-hidden when-format=\"pdf\"}\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, viewof selectedColumns, viewof dataUrl, viewof dataSet, tableContainer, table, viewof twobuttons, viewof selectedPark, viewof park_chart, viewof datasetHeader, tableStyles} from \"ac13d95a907715bf\"\n```\n\n```{ojs}\n//|echo: false\nviewof selectedPark\nviewof park_chart\n```\n\n```{ojs}\n//|echo: false\nviewof datasetHeader\ntableContainer\n```\n\n```{ojs}\n//|echo: false\nviewof twobuttons\n```\n\n```{ojs}\n//|echo: false\n//|output: false\ntable\nhtml`\ntabulator.min.css`\n```\n\n\n\n\n\n:::\n\n::: {.callout-note icon=\"false\" collapse=\"true\"}\n\n## View Summary of Columns\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nviewof selectedColumns\nviewof dataSummaryView\n\n```\n\n\n\n\n\n\n:::\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n:::\n\nThe National Park datasets included here are drawn from data published by the U.S. NPS, and most (but not all) of the contextual information is drawn from material published by the NPS. \n\nWe decided to publish this version of the data, along with our own synthesized documentation and narrative, because the original data is made available in an [NPS data portal](https://irma.nps.gov/Stats/) that is relatively hard to find and to use, and the documentation is distributed across many different web pages, PDFs, and other documents. (The NPS has created an interactive [Microsoft Power BI dashboard](https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm) to help users explore the data more easily.) \n\nThe datasets were curated and published by Melanie Walsh, and the data essay was written by Melanie Walsh and Os Keyes.\n\n## History\n\nA national park is an area of land that a country's government deems important enough to officially protect, preserve, and make available to the public. There are thousands of national parks around the world (some of which are featured in the Netflix documentary, [\"Our Great National Parks,\"](https://www.netflix.com/title/81086133) narrated by former President Barack Obama). \n\nIn the United States, the very first National Park---Yellowstone National Park, in Wyoming---was signed into law in 1872 by President Ulysses S. Grant. \n\n![Lone Star Geyser, one of the whopping ~500 geysers at Yellowstone National Park. Photo credit: [NPS/Neal Herbert](https://www.nps.gov/yell/planyourvisit/exploreoldfaithful.htm).](https://www.nps.gov/yell/planyourvisit/images/ndh-yell-9306.jpg){#fig-yellowstone}\n\nOver the next several decades, a handful of other parks---such as Sequoia (1890), Yosemite (1890), Mount Rainier (1899), and Crater Lake (1902)---joined the system, too. \n\n::: {.callout-tip collapse=\"true\"}\n# What is the most recent National Park?\nThe most recently added National Park is [New River Gorge National Park](https://www.nps.gov/neri/index.htm) in West Virginia. It was designated in 2020. \n:::\n\n![Mount Rainier, also known by the Indigenous name Tahoma, is an active volcano and 14,411 feet tall. Mount Rainier National Park, which is 60 miles south-east of Seattle, Washington, was founded in 1899. Photo credit: [NPS (public domain)](https://www.nps.gov/media/photo/gallery-item.htm?pg=5003191&id=ca60fce5-155d-4519-3e7c-1200750746f6&gid=CA4C9908-155D-4519-3E19303DAEADE22C).](https://www.nps.gov/npgallery/GetAsset/ca60fce5-155d-4519-3e7c-1200750746f6/proxy/hires?){#fig-rainier}\n\nWhile the National Parks were originally created to protect precious, beautiful lands and to make them accessible to everyday people---a noble goal---it is important to remember that many of these lands were taken, sometimes forcibly, from Native American people who already owned, lived, and worked on them [@spence_dispossessing_2000; @beauchamp_beyond_2020]. Today, there are still calls for the NPS to [return the lands of the National Parks to Indigenous people.](https://www.theatlantic.com/magazine/archive/2021/05/return-the-national-parks-to-the-tribes/618395/) \n\nIn a similar vein, scholars have shown that early environmental conservation movements---movements that helped to spur the development of the National Parks---were troublingly intertwined with racism and eugenics movements [@beauchamp_beyond_2020]. These prejudiced origins, combined with continuing forms of environmental racism (e.g., many parks are located far from cities, with limited public transporation options and limited community outreach), have contributed to the marginalization of people of color and other minorities in the parks. Research has shown that white people visit the parks more than other racial groups [@weber_why_2013; @alba_covid-19s_2022; @floyd_coming_2002]. So while the National Parks are technically open to everyone, they are not equally accessible to everyone in the same way. And these exclusions shape the parks' visitation data even before it's counted.\n\nSo when and why did visit counting start at the U.S. National Parks? Well, according to the NPS, the counting of park visits started [as early as 1904](https://www.nps.gov/subjects/socialscience/visitor-use-statistics.htm) (more than 10 years before the National Park Service itself was officially created). But at this time, and for the next 50 years or so, their data collection methods were mostly [informal, inconsistent, and low-tech](https://www.nps.gov/subjects/socialscience/visitor-use-statistics.htm). \n\n\n\nBut in 1965, the NPS started getting serious about counting visits. That year, the U.S. Congress passed [The Land and Water Conservation Fund Act of 1965](https://www.everycrsreport.com/reports/RL33531.html). This act created a new source of government money specifically dedicated to protecting natural resources and expanding outdoor recreation infrastructure. Because the act stipulated that the amount of money allocated to each area should be [\"proportional to visitor use,\"](https://www.nps.gov/subjects/socialscience/statistics-history.htm) the NPS buckled down on counting visitor use. They [\"developed and institutionalized a formal system for collecting, compiling and reporting visitor use data.\"](https://www.nps.gov/subjects/socialscience/statistics-history.htm) \n\nIn 1979, the NPS comprehensively changed their counting procedure, and [all parks began tracking visitor use by month]((https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm)) (as opposed to year) across 11 different statistics. This is why the datasets featured here begin in 1979.[^1] **Note: We aggregated monthly counts into yearly counts for the dataset featured in this essay. A dataset with visit counts by month is available in [\"Explore the Data.\"](?tab=explore-the-data)**\n\n[^1]: The NPS also offers [annual visitation information between 1904-1979](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Historic%20Annual%20Recreation%20Visits%20(1904%20-%201979)), but it is a separate, less consistent dataset.\n\n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Note on installation: https://statsandr.com/blog/an-efficient-way-to-install-and-load-r-packages/\n\n# Load the dplyr package for data manipulation\n# Load the ggplot2 package for data visualization\n# Load \"ggthemes\", which let's us use colorblind-compatible palettes. When we've only got one line, this will just be black.\n# Load \"scales\" for abbreviating axis labels\nlibrary(dplyr, warn = FALSE)\nlibrary(ggplot2)\nlibrary(ggthemes)\nlibrary(\"scales\")\n\n# Load National Park Visitation data\nnp_data <- read.csv(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/main/datasets/national-parks/US-National-Parks_RecreationVisits_1979-2023.csv\", stringsAsFactors = FALSE)\n\n# Specify the colorblind palette\ncb_palette <- colorblind_pal()(8)\n\n# Turn off scientific notation\noptions(scipen = 999)\n\n# Filter down to Yellowstone National Park\nyellowstone_data <- np_data %>% filter(ParkName == \"Yellowstone NP\")\n\n# Visualise it\nggplot(data = yellowstone_data) + \n geom_line(aes(x = Year, y = RecreationVisits), color = cb_palette[1]) + \n labs(title = \"Yellowstone National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-7-1.png){width=672}\n:::\n:::\n\n\n\n\n\n\nWhile today's National Park data collection system is more formal and sophisticated than the one that the NPS used in 1904, there are still many inconsistencies, flaws, and limitations (as the NPS [openly acknowledges](https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm)). This data does *not* represent the *exact* number of people who visited the parks in the last 50 years---hardly! Think about how difficult it would be to count every single one of the millions of people who walked, hiked, backpacked, drove, shuttled, canoed, biked, or skied into each of the 63 different parks since 1979. These parks are located in dozens of different geographic areas, including mountains, volcanoes, deserts, canyons, wetlands, forests, and islands; the parks have experienced countless different weather conditions during this time, including blizzards, hurricanes, wildfires, avalanches, and extreme heat; and the parks have also been allocated varying amounts of money and staff members to do the counting. Given all this variability, it is simply not possible to count every single visit to every single National Park ever. \n\nWe believe the National Park visit data is useful to study and consider precisely for this reason: because it helps demonstrate that **data never reflects reality precisely**. It also demonstrates that collecting and analyzing data, even when it is flawed and approximate, is sometimes worthwhile---but only if you fully understand the data's flaws, limitations, and history, and only if you incorporate these considerations into all subsequent analyses, interpretations, and takeaways.\n\n## Where did the data come from? Who collected it? {#where-did-the-data-come-from-who-collected-it}\n\nThe National Park data on this website was originally organized and published by the [NPS Social Science Program](https://www.nps.gov/subjects/socialscience/visitor-use-statistics.htm), which in turn runs the NPS Visitor Use Statistics program, an initiative that coordinates visitor use statistics across the parks. Thousands of staff members across all 63 parks were also involved in the data collection process.\n\nAccording [to the NPS](https://www.nps.gov/subjects/socialscience/statistics-history.htm), the Visitor Use Statistics program aims to:\n\n> - Provide a statistically valid, reliable, and uniform method of collecting and reporting visitor use data for each independent unit administered by the NPS\n> - Support regular collection, and timely publication, analysis and interpretation of these data\n> - Enact quality control checks, verify measurements, and ensure consistency and comparability of data among areas of the NPS\n\nWe accessed the original data through the NPS's [Visitor Use Statistics data portal](https://irma.nps.gov/Stats/), which publishes visit use data in alignment with the program's stated goals. Through this portal, anyone can generate reports and download data for [different visit use categories](https://irma.nps.gov/Stats/Reports/National) and time periods---at both national and individual park levels. \n\nTo download the data included here, we first selected [\"National Reports\"](https://irma.nps.gov/Stats/Reports/National) in the data portal, and we then selected the [\"Query Builder for Public Use Statistics (1979 - Last Calendar Year)\"](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Public%20Use%20Statistics%20(1979%20-%20Last%20Calendar%20Year)) report type. Here are the selections we made:\n\n- For \"Park Types,\" we selected only \"National Parks.\"\n- For \"Years,\" we selected all possible years (1979-2023).\n- For \"Regions,\" we selected all possible regions. \n- For \"Field Type,\" we selected only \"Recreation Visits\" (excluding the other 10 possible statistics: \"NonRecreation Visits,\" \"Recreation Hours,\" \"NonRecreation Hours,\" \"Concessioner Lodging,\" \"Concessioner Camping,\" \"Tent Campers,\" \"RV Campers,\" \"Backcountry Campers,\" \"NonRecreation Overnight Stays,\" and \"Miscellaneous Overnight Stays\").\n- For \"Additional Fields,\" we selected \"State\" and \"Region.\"\n- We also selected the option of viewing the report as an annual summary of visit counts (as opposed to monthly visit counts). \n\n\n![Selections for National Park visit data generated with [\"Query Builder for Public Use Statistics (1979 - Last Calendar Year)\"](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Public%20Use%20Statistics%20(1979%20-%20Last%20Calendar%20Year)).](images/query-builder-csv-screenshot.png){#fig-query-builder fig-alt=\"Selections for National Park visit data generated with Query Builder for Public Use Statistics\" width=90%}\n\nIf you choose to download this report as a CSV file, it will unfortunately not look exactly like the report pictured in @fig-query-builder; instead, the CSV will include all visit and use types, and it will include visit and use information by month rather than by year. When I (Melanie Walsh) have compiled this data to share with my students in the past, I have sometimes downloaded the CSV file, removed the columns that I'm not interested in, and aggregated the data by year programatically. In other cases, I have simply copied and pasted the annual summary report into a CSV file. \n\nIn either case, it is usually necessary to explicitly transform the format of the \"RecreationVisits\" column into a number and to remove the commas that separate the numbers by thousands (a transformation that you can do with spreadsheet applications like Excel or Google Sheets, or with a programming language like Python or R).\nFinally, we published the data to this project's GitHub repository for easier storage and access.\n\n\n## Why was the data collected? How is the data used?\n\nThe NPS collects visit data partly because the government requires it, as we've already discussed. But the NPS also uses the visit data for other internal purposes---to help determine which parks might need more staff members and programming, which hiking trails might need more maintenance, which natural areas might need more protection, or which visitor centers might need more bathrooms.\n\nThe visit data also helps the communities and businesses surrounding the parks understand how they can best provide and share resources, like emergency vehicles, sanitation, and water. For example, if there's been a large influx of hikers to Mount Rainier National Park in recent years, that would be an important thing for the surrounding community to know. Because those hikers would probably need more ambulance trips and rescue helicopters (unfortunately but inevitably), and the surrounding towns wouldn't want visitors to the National Park booking up all the available emergency vehicles in town. \n\n![2021 report on NPS economic impact. Graphic credit: [NPS](https://www.nps.gov/orgs/1207/vse2020.htm).](https://www.nps.gov/orgs/1207/images/ECONOMIC-2020.jpg){#fig-economic-benefit fig-alt=\"2021 report on NPS economic impact. Graphic credit: [NPS](https://www.nps.gov/orgs/1207/vse2020.htm)\" fig-align=\"center\" width=90%}\n\nThe visitation data also helps the NPS estimate the beneficial impact---economic and otherwise---that the parks have on nearby communities and the nation at large (@fig-economic-benefit). For example, in 2021, an [NPS report](https://www.nps.gov/grca/learn/news/visitor-use-spending-to-grand-canyon-2021.htm) showed that \"4.5 million visitors to Grand Canyon National Park...spent an estimated $710 million in gateway regions near the park,\" which \"supported 9,390 jobs in the local area.\" These estimations are important because they help the parks advocate for more funding, support, and attention.\n\nThe data is also frequently reported on by journalists, who use it to highlight the most popular parks and noteworthy visitation records, and to point their readers to parks where they might be able to find some peace and quiet (see articles in [Thrillist](https://www.thrillist.com/news/nation/most-visited-national-parks-ranked-nps), [Smithsonian](https://www.smithsonianmag.com/smart-news/most-and-least-popular-national-parks-2023-180983850/), and [CNN](https://www.cnn.com/travel/article/most-visited-us-national-park-sites-2022/index.html)). \n\n::: {.callout-tip}\n## Discussion Question 1\n\nHow else might the National Park visit data be used? How might it be used by artists, historians, literary scholars, sociologists, or librarians?\n\nFor more, see [Discussion Q 1](?tab=discussion-%26-activities#discussion-1).\n:::\n\n## What's in the data? What \"counts\" as a visit?\n\nNow that we know how the data is used, let's dive into the data itself. What's actually in this dataset? What \"counts\" as a visit?\n\nTo get started, let's load the dataset and examine a random sample of rows.\n\n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# https://statsandr.com/blog/an-efficient-way-to-install-and-load-r-packages/\n\n# Load the dplyr package\nlibrary(dplyr, warn = FALSE)\n\n# Load National Park Visitation data\nnp_data <- read.csv(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/main/datasets/national-parks/US-National-Parks_RecreationVisits_1979-2023.csv\", stringsAsFactors = FALSE)\n\n## Look at the structure of the dataset, randomly sample 10 rows\nnp_data %>% slice_sample(n = 10)\n```\n\n::: {.cell-output-display}\n
\n\n|ParkName |Region |State | Year| RecreationVisits|\n|:-------------------------------|:-------------|:-----|----:|----------------:|\n|Crater Lake NP |Pacific West |OR | 1997| 451548|\n|Shenandoah NP |Northeast |VA | 1986| 1843985|\n|Badlands NP |Midwest |SD | 1998| 1021049|\n|Black Canyon of the Gunnison NP |Intermountain |CO | 2017| 307143|\n|Capitol Reef NP |Intermountain |UT | 2017| 1150165|\n|Virgin Islands NP |Southeast |VI | 1995| 536058|\n|Katmai NP & PRES |Alaska |AK | 1981| 13115|\n|Lassen Volcanic NP |Pacific West |CA | 1992| 468011|\n|Pinnacles NP |Pacific West |CA | 1999| 164854|\n|Denali NP & PRES |Alaska |AK | 1982| 321868|\n\n
\n:::\n:::\n\n\n\n\n\n\nHere we see five columns -- \"ParkName\", \"Region\", \"State\", \"Year\", and \"RecreationVisits.\" The first four are pretty self-explanatory, but why is the fifth labelled \"RecreationVisits\" rather than \"Visits\" or \"Visitors\"? \n\nIt turns out that the NPS counts visits, not visitors (which would be more difficult to track), and they distinguish between different *kinds* of visits to their parks. First, there are *reportable* and *non-reportable* visits. When NPS employees or their families go to the parks, these visits are *non-reportable*. But pretty much everything else is *reportable*. Within *reportable* visits, there are two more types of visits: *recreation* and *non-recreation* visits. Recreation visits are when people are visiting the parks for fun, vacation, exercise, school trips, etc., and non-recreation visits are when people are visiting the parks for other reasons. For example, some people need to travel *through* the parks, either because a highway runs through the park, or because they live on \"inholdings\" (private property that is surrounded by a National Park on all sides). Other people need to visit the parks because they have business to conduct.\n\nHere's a [full list of the \"reportable non-recreation\" visits](https://www.nps.gov/subjects/socialscience/nps-visitor-use-statistics-definitions.htm), according to the NPS: \n\n> - Persons going to and from inholdings across significant parts of park land;\n> - Commuter and other traffic using NPS-administered roads or waterways through a park for their convenience;\n> - Trades-people with business in the park;\n> - Any civilian activity a part of or incidental to the pursuit of a gainful occupation (e.g., guides);\n> - Government personnel (other than NPS employees) with business in the park;\n> - Citizens using NPS buildings for civic or local government business, or attending public hearings;\n> - Outside research activities (visits and overnights) if independent of NPS legislated interests (e.g. meteorological research).\n\nCarefully reviewing this list reveals that the term \"recreation visit\" excludes a significant number of visits and individuals. It also raises important questions about how the NPS distinguishes between different types of visits, which we will explore further below.\n\n::: {.callout-tip}\n## Discussion Question 2\n\nWhat are the potential consequences of considering these visits to be *non-recreation* vs. *recreation* visits? \n\nFor more, see [Discussion Q 2](?tab=discussion-%26-activities#discussion-2).\n:::\n\n![Badlands National Park sign, gesturing to the South Unit's co-management between the Oglala Sioux Tribe and the NPS. Photo credit: [NPS](https://www.nps.gov/common/uploads/structured_data/62A55536-BD00-F301-462744BEDD8BA664.jpg?width=800&height=800&mode=crop&quality=90).](https://www.nps.gov/common/uploads/structured_data/62A55536-BD00-F301-462744BEDD8BA664.jpg?width=800&height=800&mode=crop&quality=90){#fig-badlands fig-align=\"center\" width=\"80%\"}\n\nThe list also prompts us to consider those whose presence in the parks doesn't fit neatly into the \"visit\" category at all. For instance, a portion of Badlands National Park in South Dakota overlaps with the Pine Ridge Indian Reservation, which is [\"owned by the Oglala Sioux Tribe and managed by the National Park Service under an agreement with the Tribe.\"](https://www.nps.gov/articles/000/stronghold-district.htm) According to the NPS, when traveling through this area, visitors might encounter \"signs of religious worship\" from Tribal members, such as \"prayer sticks\" or pieces of \"brightly colored fabric tied to a shrub,\" and they are advised to \"respect [the Tribal members'] beliefs and practices and leave these objects.\" These symbols woven into the landscape underscore that members of the Oglala Sioux Tribe are not visitors to the Badlands but stewards and residents with deep ancestral connections. It reveals that the National Park data's focus on \"visits\"—--whether reportable or non-reportable, recreational or non-recreational—--fails to account for those who are not visitors, those who own and live on the land, and those whose ancestors lived on the land before the NPS even existed. \n\n## How was the data collected?\n\nAt this point, we know *what* counts as visit, but *how* does the NPS actually count these visits and collect data? And how do they differentiate between the different types of visits? Take a moment and see if you come up with a few guesses.\n\nIt turns out that each park counts visits differently. At many parks, *each entrance* at each park even counts visits differently. \n\nIf you go to the [\"Park Reports\"](https://irma.nps.gov/Stats/Reports/Park) tab in the NPS Data Portal, you can look up an individual park and download a PDF file called \"Visitor Use Counting Procedures,\" which details exactly what procedures they use to count visits at this park. Most of the parks have several PDFs because their counting procedures have changed many times over the years!\n\n::: {.callout-tip}\n## Activity 2\n\nHow are the procedures for three different parks similar or different? For more, see [Activity 2](?tab=discussion-%26-activities#activity-2).\n:::\n\n\n![An example of a pneumatic tube traffic counter, installed above the road.](images/pneumatic-tube.jpg){#fig-pneumatic-tube width=\"300\"}\n\n\nTo count visits, most parks use a combination of automatic traffic counters and manual counting--—that is, staff members who use their eyeballs to literally count the number of people arriving by foot, bike, bus, cross-country skis, snowmobile, boat, canoe, etc. \n\nWhether automatic or manual, these counts are usually modified with specially designed mathematical formulas, which are supposed to produce the most accurate estimate for recreation visits at any given location. Staff members add, subtract, multiply, and divide the counts based on a variety of factors, such as the season or the entrance (e.g. assuming that more people would likely be arriving in a car in the summer months at the most popular gate than in the winter months at the least popular gate).\n\n![Table 1 from \"VOYAGEURS NATIONAL PARK PUBLIC USE REPORTING AND COUNTING INSTRUCTIONS.\" Find the document here: https://irma.nps.gov/Stats/Reports/Park.](images/Voyageurs-table1.png)\n \n\nFor instance, in the summer months (May through November) at Voyageurs National Park in northern Minnesota---a park dominated by lakes and waterways---they [estimate visits](https://irma.nps.gov/Stats/Reports/Park) by taking the number of visits to visitor centers, and then adding the estimated number of fishermen, houseboaters, and backcountry overnight stays. To take just one of these categories as an example, they estimate the number of fishermen by \"taking the sum of the visitor center counts and applying the regression equation in Table 1,\" which is displayed above. In August, that number would be `(-1.06) * VISITOR CENTER COUNTS + 37,021`. However, if the month is November, and if the visitor count exceeds 17,00, \"then fishermen are estimated at 0.\" These detailed instructions point to the countless decisions and methodological choices that underlie the National Park visit data. These manipulations are arguably necessary to achieve \"statistically valid, reliable, and uniform\" collection methods and data, as is the program's goal, but they also reveal the ever persistent gap between recorded data and reality. \n\n\n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Filter down to Voyageurs National Park\nvoyageurs_data <- np_data %>% filter(ParkName == \"Voyageurs NP\")\n\n# Visualizee it\nggplot(data = voyageurs_data) + \n geom_line(aes(x = Year, y = RecreationVisits), color = cb_palette[8]) + \n labs(title = \"Voyageurs National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-9-1.png){width=672}\n:::\n:::\n\n\n\n\n\n\n\nConsider, next, Everglades National Park in Florida. At the Shark Valley Entrance, there is a pneumatic tube traffic counter (@fig-pneumatic-tube) that counts the number of cars that pass over it. The Everglades NP staff members then apply different mathematical operations to this number in order to arrive at what they think is the most accurate estimate of recreation visits:\n\n\n\n\n\n\n{{< pdf other_docs/Everglades_Visitor-Use-Counting-Procedures_2023.pdf width=100% height=500 >}}\n\n\n\n\n\n\n\n\n\n\n> The traffic count is divided by 2 to account for entry and exit. The adjusted traffic count is reduced by the number of buses, the number of bicycles counted when the entrance station is open, 127 bicycles per month to account for after-hours use, and by 200 non-recreation vehicles per month October through May and 100 non-recreation vehicles per month June through September. The traffic count is further reduced by 350 non-reportable (NPS) vehicles per month. The reduced count is multiplied by 2.17 persons per vehicle. \n\nLike Voyageurs NP in Minnesota, Everglades NP modifies their raw visit data in many ways. Once again, these modifications are arguably necessary, but they are nevertheless extensive and almost certainly subject to debate. \n\nWhat's more, the devices that the NPS uses to count visits---such as pneumatic tube counters or induction loop counters (magnetized coils of wire that are installed under a road, and that \"trip\" when a vehicle passes over them)---sometimes *break*.\n\n![An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!).](images/Inductance_detectors.jpg){#fig-induction width=\"300\"}\n\nFor example, [according to the NPS data logs](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=CRLA), the induction loop counter at one of the main entrances at Crater Lake National Park in Oregon broke in 2012 and wasn't repaired for at least a year:\n\n> 2/1/2012 | The Traffic Counter at Annie Springs Entrance Station was not functioning properly and therefore we have a count of zero.\n\n> 3/1/2012 | Broken counter at Annie Springs Entrance, unable to record numbers.\n\n> 4/1/2012 | Traffic counter was broken for the beginning of the month and may have low numbers.\n\n> 10/1/2012 | Counts estimated by Butch\n\n> 11/1/2012 | TRAFFIC COUNT AT ANNIE SPRINGS ENTRANCE NOT AVAILIBLE\n\n> 12/1/2012 | TRAFFIC COUNT AT ANNIE SPRINGS ENTRANCE NOT AVAILIBLE\n\n> 1/1/2013 | Traffic count at Annie Springs estimated.\n\n> 2/1/2013 | Traffic count at Annie Springs estimated.\n\nIn some months, the broken counter meant that the number of recorded visits at this entrace was recorded as zero. In other months, park staff---including someone named Butch---decided to estimate the counts.\n\nYou can see a similar, but more severe, example of a broken counter at Carlsbad Caverns National Park in California, where it appears that visits have had a recent decline since 2019:\n\n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Load the \"ggplot2\" package (which we'll be using a lot more)\nlibrary(ggplot2)\n\n# Let's also load \"ggthemes\", which let's us use colorblind-compatible palettes. When we've only got one line, this will just be black.\nlibrary(ggthemes)\n\n# And specify the colorblind palette\ncb_palette <- colorblind_pal()(8)\n\n# Turn off scientific notation\noptions(scipen = 999)\n\n# Filter down to Carlsbad Caverns National Park\ncarlsbad_data <- np_data %>% filter(ParkName == \"Carlsbad Caverns NP\")\n\n# Visualise it\nggplot(data = carlsbad_data) + \n geom_line(aes(x = Year, y = RecreationVisits), color = cb_palette[2]) + \n labs(title = \"Carlsbad Caverns National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-10-1.png){width=672}\n:::\n:::\n\n\n\n\n\n\nThis decline may be due, in part, to the COVID-19 pandemic. But the NPS logs also show that the main induction loop counter at Carlsbad Caverns [broke in 2019 and has remained broken for multiple years](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=CAVE):\n\n> 9/1/2019 | Traffic counter apparently has been broken since July. Traffic counts are estimated. \n\n> 4/1/2020 | Main road traffic counter is broken, I have estimated the count. \n\n> 12/1/2020 | Corona virus closure that began in November ended on December 4th. Main road traffic counter remains broken.Possible problem with Loop Road counter.\n\n> 4/1/2022 Main road traffic counter remains broken. Rattlesnake Springs traffic counter seems to be off, I will henceforth provide estimates. \n\n> 9/1/2023 | Loop Road and backcountry closed due to flood damage. Slaughter Canyon Cave remains closed Traffic counter on main road remains broken. \n\n::: {.callout-tip}\n## Activity 1\n\nNow that we've talked about how data is collected (and the fragility of some of those methods), it's a good time to think about how even the same method, deployed at different places, might be differently unreliable. For more, see [Activity 1](?tab=discussion-%26-activities#activity-1-1).\n:::\n\n## What data is missing? How is uncertainty handled?\n\nWe already know that there is a lot missing from the National Park visit data. There are people who never make it the parks---and thus never make it into the dataset---because of environmental racism and a history of discrimination and colonialism that is intertwined with the parks. There are people who don't fit neatly into the category of a visit, such as those who live inside the parks. There are also people who are missed by the parks' various counting procedures and manipulations.\n\nWhat else might be missing or uncertain? It turns out that the data itself can point us to some answers. An important step in Exploratory Data Analysis (EDA) is to analyze key summary statistics for your data, such as maximum, minimum, or average values. This step can reveal important patterns, problems, or inconsistencies in the data, and point to parts of a dataset's backstory that need to be researched and understood further. Exploring summary statistics for the National Park data--- specifically, minimum values---reveals a few curious outliers that point us to key areas of uncertainty.\n\nIf you filter the National Park visit data for the parks with the lest (or minimum) number of visits since 1979, you will notice that there are some parks that had *zero* visits in a given year.\n\n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Filter for minimum RecVisits\nleast_visited <- np_data %>% filter(RecreationVisits == min(RecreationVisits))\n\n# Number of rows for least visited\nnum_rows <- nrow(least_visited)\n\n# Show some of them\nleast_visited %>% slice_sample(n = min(10, num_rows))\n```\n\n::: {.cell-output-display}\n
\n\n|ParkName |Region |State | Year| RecreationVisits|\n|:-------------------------------|:------------|:-----|----:|----------------:|\n|Kobuk Valley NP |Alaska |AK | 2015| 0|\n|Katmai NP & PRES |Alaska |AK | 1995| 0|\n|National Park of American Samoa |Pacific West |AS | 2003| 0|\n|Kobuk Valley NP |Alaska |AK | 2014| 0|\n\n
\n:::\n:::\n\n\n\n\n\n\nYou might guess that there are no visits in these years because these parks are all located in remote places, like rural Alaska or American Samoa. \n\nIf we look at the visitation trends for Kobuk Valley National Park in Alaska, for example, we can see that a couple of years with zero visits isn't a huge aberration from the trend:\n\n\n\n\n\n\n::: {.cell}\n\n```{.r .cell-code}\n# Filter down to Mount Rainier National Park\nkobuk_data <- np_data %>% filter(ParkName == \"Kobuk Valley NP\")\n\n# Visualise it\nggplot(data = kobuk_data) + \n geom_line(aes(x = Year, y = RecreationVisits ), color = cb_palette[6]) +\n labs(title = \"Kobuk Valley National Park Visits (1979 - Present)\") +\n # abbreviate numbers by millions and thousands\n scale_y_continuous(labels = label_number(scale_cut = cut_short_scale()))\n```\n\n::: {.cell-output-display}\n![](index_files/figure-html/unnamed-chunk-12-1.png){width=672}\n:::\n:::\n\n\n\n\n\n\nBut after a little digging, we found out that in 2014 and 2015, Kobuk Valley National Park actually didn't count visitors at all.\n\nIf we look at the [visitation reports for Kobuk Valley in 2014](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=KOVA), they say that \"the park is developing a new counting system and has made the decision not to report visitor counts until the new system is in place.\" Though they didn't count visitors at all, they still recorded a zero in those two years. This hard number makes it seem conclusive, like there were truly zero people who stepped onto the park lands in those years.\n\nIn 2015, John Quinley, the Alaska regional spokesperson for the NPS, spoke with [the Anchorage Daily News about this issue](https://www.adn.com/outdoors/article/alaskas-little-visited-parks/2015/02/18/), and he admitted that \"it might have been better if park statisticians had put something other than a zero in the visitor box for 2014 — say maybe a question mark.\"\n\n::: {.callout-tip}\n## Activity 3\n\nCan you find evidence of people visiting Kobuk Valley National Park in 2014 and 2015? For more, see [Activity 3](?tab=discussion-%26-activities#activity-3).\n:::\n\n::: {.callout-tip}\n## Discussion Question 3\n\nWhy would you or wouldn't you want to record a question mark in this dataset? For more, see [Discussion Q 3](?tab=discussion-%26-activities#discussion-3).\n:::\n\nThe decision not to record visits in certain years seems reasonable on its face, but we've also seen a *lot* of parks in more highly-frequented areas that, when faced with a similar situation, chose to provide an estimate for a certain year based on average counts from previous years, rather than simply declare that nobody visited. \n\nWhen parks get more visits, they usually get more money, resources, and staff. Once outfitted with more funding, resources, and staff, they can usually attract and support even more visitors. By contrast, a dip in visitation data can potentially lead to a cycle of stagnation or decline. The choice to record zeros for Kobuk Valley NP in 2014 and 2015 was likely made out of a sense of scientific responsibility and integrity. It's unclear how, if at all, this choice impacted the park. But this example highlights how data collection decisions can have real-world impacts, and how the people making these choices are often aware of these impacts and must weigh trade-offs---not only from a scientific or statistical perspective, but also from a social, economic, political, and even personal perspective.\n\n## Conclusion\n\nThe NPS's visitation data is a valuable resource that gives us a glimpse into the country's relationship with the National Parks---some of the world's most precious natural resources---over the last 50 years. This data is integral to the maintenance and growth of the parks, to environmental conservation, to gateway communities, and to our historical and sociological understanding. But the National Park visit data, like all data, is also approximate and imperfect. As we have seen, it is collected by imperfect devices, such as traffic counters that are vulnerable to weather or malfunctioning. But even more importantly, it is collected and shaped by people, people who not only count some of the visits manually, but who also decide what counts as a visit, how to count visits (e.g., to use this technology or that formula) and which numbers to record when things don't go as planned. There are endless interesting, important, and fun analyses that we can do with this visit data, but to really make sense of it in any meaningful way, we need to dig into and consider the people, context, and circumstances that shaped it.\n\n## References\n\n::: {#refs}\n:::\n\n\n::: {#custom-footnotes}\n:::\n\n# Explore the Data {#tabset-1-2}\n\n## Explore the Data\n\n::: {.content-hidden when-format=\"pdf\"}\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof alldataSummaryView, viewof allselectedColumns, viewof alldataSet, alltableContainer, alltable, viewof alltwobuttons, alltableStyles} from \"878f51be5dd541f5\"\n```\n\n```{ojs}\n//|echo: false\nviewof alldataSet\n```\n\n```{ojs}\n//|echo: false\nalltableContainer\n```\n\n```{ojs}\n//|echo: false\nviewof alltwobuttons\n```\n\n```{ojs}\n//|echo: false\n//|output: false\nalltable\n```\n\n```{ojs}\n//|echo: false\nviewof allselectedColumns\nviewof alldataSummaryView\n\n```\n\n\n\n\n\n:::\n\n# Exercises {#exercises}\n\n## Programming Exercises\n\nThe National Park visitation data by year and month is well-suited for teaching introductory data analysis, manipulation, and visualization methods. \n\nBased on our experience, the data is particularly useful for teaching filter and groupby functions, where students can, for example, filter by individual parks, states, or regions, or groupby and calculate summary statistics for different parks, states, regions, or years.\n\nThe data is also useful for teaching basic and advanced visualization methods, like creating line plots over time or customizing plot aesthetics (e.g., abbreviating millions and thousands, altering axis ranges).\n\nWhen working on visualization methods, we often ask students to share plots in a communal class forum, such as a shared Google Doc or Discord/Slack. This approach can be effective for building community; showcasing different ways of representing similar data; and enabling instructors to identify common strengths or problems.\n\n::: {.panel-tabset .nav-pills}\n# R\n\n::: {#exercise-posts-r}\n:::\n\n# Python\n::: {#exercise-posts-python}\n:::\n:::\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 \n### Devices Will Break\n\nIt is inevitable that the devices that the National Park Service uses to count visits to the parks — like induction loop counters installed on the road — will break. But they will also get *fixed* at different rates, in different locations, as we could see in the case of Crater Lake National Park (where a counter was fixed quickly) and Carlsbad Caverns National Park (where a broken counter from 2019 still has not been fixed).\n\nThere are many reasons for these disparities, but some of the big ones might be geography and resources. The more remote a park, the harder it is to get a repair team to it. The less-resourced a park, the lower the likelihood they have on-site repair teams, or are prioritized by the repair teams that can be dispatched.\n\nWith this in mind, look at the locations of the following parks. Suppose that each one has an outage in their induction loop counter: which ones would you expect to be fixed first, and why? Research the parks, and rank them on a scale of 1 to 5 (1 being highest, and 5 being lowest) of which would be fixed quickest.\n\n| Park | Priority (1-5) | Reason |\n|--------------------|----------------|--------|\n| Acadia NP | | |\n| Lassen Volcanic NP | | |\n| Saguaro NP | | |\n| Yosemite NP | | |\n| Mammoth Cave NP | | |\n\n## Activity 2 \n### Counting Procedures\n\nThe National Park Service sometimes fills in missing data with hard numbers or approximates data by applying special mathematical formulas. This is necessary work, but it is also under-explained work.\n\nTo see this in action, go to [the NPS page that documents park reports](https://irma.nps.gov/Stats/Reports/Park) and down the \"Visitor Use Counting Procedures\" PDF for three different parks.\n\nHow are the procedures for these three parks similar or different? What kind of effect do you think this has on the resulting data? What do you think is the best way of documenting this information and communicating it to users of the data?\n\n## Activity 3 \n### Missing Evidence\n\nIn 2014 and 2015, Kobuk Valley National Park reported that there were zero visitors to the park.\n\nUse publicly available internet data---[Flickr photos](https://www.flickr.com/), Twitter posts, etc.---to try and find evidence of people visiting the park. (Hint: There is existing evidence to find!) Consider how you might use tags and metadata categories to find what you're looking for.\n\nBased on your findings, how do you think, differently, if at all, about Kobuk Valley's decision to record zero visits and about alternative methods for counting visits?\n\n## Discussion Question 1 \n### Alternative Uses of the Data\n\nWe discussed some of the ways the National Park visit data is used. How else might the data be used? How might it be used by artists, historians, literary scholars, sociologists, or librarians?\n\n## Discussion Question 2\n### \"Non-Recreation\" Visits\n\nRead through the [full list of the \"reportable non-recreation\" visits](https://www.nps.gov/subjects/socialscience/nps-visitor-use-statistics-definitions.htm), according to the NPS: \n\n> - Persons going to and from inholdings across significant parts of park land;\n> - Commuter and other traffic using NPS-administered roads or waterways through a park for their convenience;\n> - Trades-people with business in the park;\n> - Any civilian activity a part of or incidental to the pursuit of a gainful occupation (e.g., guides);\n> - Government personnel (other than NPS employees) with business in the park;\n> - Citizens using NPS buildings for civic or local government business, or attending public hearings;\n> - Outside research activities (visits and overnights) if independent of NPS legislated interests (e.g. meteorological research).\n\nWhat are the potential consequences of considering these visits to be *non-recreation* vs. *recreation* visits? \n\n## Discussion Question 3\n### Recording Uncertainty\n\nIn 2014 and 2015, Kobuk Valley National Park recorded zero visits, even though they decided not to count visits at all. John Quinley, the Alaska regional spokesperson for the NPS, spoke with [the Anchorage Daily News about this issue](https://www.adn.com/outdoors/article/alaskas-little-visited-parks/2015/02/18/), and he admitted that \"it might have been better if park statisticians had put something other than a zero in the visitor box for 2014 — say maybe a question mark.\"\n\nWhy would you or wouldn't you want to record a question mark in this dataset? How would this impact a qualitative vs quantitative analysis of the data?\n\nWhat else could you use to record uncertainty? What would be the potential consequences of that choice?\n:::\n\n\n", "supporting": [ "index_files/figure-html" ], diff --git a/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/html.json b/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/html.json index b10142a..54f432b 100644 --- a/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/html.json +++ b/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/html.json @@ -1,8 +1,8 @@ { - "hash": "c998d7d3f34619a79f174d65bcc9a41f", + "hash": "e79a1f194c3445a6e3b2166ca6abd281", "result": { "engine": "jupyter", - "markdown": "---\ntitle: \"Top 500 \\\"Greatest\\\" Novels (1021-2015)\"\nauthor: Anna Preus and Aashna Sheth\nformat: \n html:\n css: ../../styles.css\n # include-in-header:\n # - text: \n #ipynb: default\n pdf: default\n #docx: default\n #r: default\nlisting:\n id: exercise-posts\n contents: exercises\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\n image-height: 200px\ndate: \"2024-07\"\ncategories: [libraries, literature, readers, gender, metadata, full-text, public domain ]\nimage: \"images/library-top-500-screenshot.png\"\n# toc: true\n# toc-depth: 5\n# sidebar: \n# contents: auto\nformat-links: [pdf, docx, ipynb]\ncode-fold: true\neditor: visual\ndf-print: kable\njupyter: python3\ncode-tools: true\nbibliography: ../../references/references.bib\n---\n\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay}\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n::: {#ff6c3de3 .cell execution_count=1}\n``` {.python .cell-code}\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=1}\n```\nauthor_gender\nmale 355\nfemale 145\nName: count, dtype: int64\n```\n:::\n:::\n\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n::: {#b648f695 .cell execution_count=2}\n``` {.python .cell-code}\ndf[\"author_nationality\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=2}\n```\nauthor_nationality\nUS 257\nGB 149\nFR 27\nDE 10\nRU 10\nIE 8\nCA 8\nIT 5\nSE 4\nCZ 3\nCO 3\nAU 3\nCH 2\nCL 2\nMX 1\nPL 1\nNG 1\nES 1\nCN 1\nZA 1\nBR 1\nJP 1\nIN 1\nName: count, dtype: int64\n```\n:::\n:::\n\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n::: {#74acef69 .cell execution_count=3}\n``` {.python .cell-code}\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n```\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-html/cell-4-output-1.png){width=593 height=432}\n:::\n:::\n\n\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n::: {#71d0f4a5 .cell execution_count=4}\n``` {.python .cell-code}\ndf[\"author\"].value_counts(dropna=False).head(10)\n```\n\n::: {.cell-output .cell-output-display execution_count=4}\n```\nauthor\nJohn Grisham 19\nCharles Dickens 15\nJohn Steinbeck 8\nC.S. Lewis 8\nJ.K. Rowling 7\nNicholas Sparks 7\nStephen King 7\nLaura Ingalls Wilder 7\nBeverly Cleary 5\nThomas Hardy 5\nName: count, dtype: int64\n```\n:::\n:::\n\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n::: {#4d9e2777 .cell execution_count=5}\n``` {.python .cell-code}\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.6985608812420623, pvalue=1.1165447422670404e-73)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-html/cell-6-output-2.png){width=470 height=470}\n:::\n:::\n\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n::: {#1c4d8c28 .cell execution_count=6}\n``` {.python .cell-code}\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.7642639335763278, pvalue=5.654107690952509e-96)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-html/cell-7-output-2.png){width=470 height=470}\n:::\n:::\n\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [colab notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n::: {#ae846261 .cell execution_count=7}\n``` {.python .cell-code}\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n title author top_500_rank \\\n0 Don Quixote Miguel de Cervantes 1 \n1 Alice's Adventures in Wonderland Lewis Carroll 2 \n2 The Adventures of Huckleberry Finn Mark Twain 3 \n3 The Adventures of Tom Sawyer Mark Twain 4 \n4 Treasure Island Robert Louis Stevenson 5 \n\n gr_num_ratings_rank \n0 211 \n1 133 \n2 68 \n3 88 \n4 145 \n title author top_500_rank \\\n44 Harry Potter and the Sorcerer's Stone J.K. Rowling 45 \n172 The Hunger Games Suzanne Collins 173 \n131 Twilight Stephenie Meyer 132 \n28 To Kill a Mockingbird Harper Lee 29 \n33 The Great Gatsby F. Scott Fitzgerald 34 \n\n gr_num_ratings_rank \n44 1 \n172 2 \n131 3 \n28 4 \n33 5 \n```\n:::\n:::\n\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n::: {#c975b2cb .cell execution_count=8}\n``` {.python .cell-code}\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n```\n\n::: {.cell-output .cell-output-display execution_count=8}\n```{=html}\n ▼ -210 Don Quixote
▼ -131 Alice's Adventures in Wonderland
▼ -65 The Adventures of Huckleberry Finn
▼ -84 The Adventures of Tom Sawyer
▼ -140 Treasure Island
▼ -2 Pride and Prejudice
▼ -39 Wuthering Heights
▼ -32 Jane Eyre
▼ -125 Moby Dick
▼ -85 The Scarlet Letter
▼ -197 Gulliver's Travels
▼ -266 The Pilgrim's Progress
▼ -85 A Christmas Carol
▼ -214 David Copperfield
▼ -71 A Tale of Two Cities
▼ -22 Little Women
▼ -86 Great Expectations
▲ +8 The Hobbit, or, There and Back Again
▼ -35 Frankenstein, or, the Modern Prometheus
▼ -149 Oliver Twist
▼ -209 Uncle Tom's Cabin
▼ -72 Crime and Punishment
▼ -159 Madame Bovary: Patterns of Provincial life
▼ -69 The Return of the King
▼ -42 Dracula
▼ -160 The Three Musketeers
▼ -16 Brave New World
▼ -155 War and Peace
▲ +25 To Kill a Mockingbird
▼ -122 The Wizard of Oz
▼ -73 Les Misérables
▼ -43 The Secret Garden
▲ +21 Animal Farm
▲ +29 The Great Gatsby
▼ -4 The Little Prince
▼ -124 The Call of the Wild
▼ -444 20,000 Leagues Under the Sea
▼ -59 Anna Karenina
▼ -193 The Wind in the Willows
▼ -17 The Picture of Dorian Gray
▼ -50 The Grapes of Wrath
▼ -32 Sense and Sensibility
▼ -279 The Last of the Mohicans
▼ -159 Tess of the d'Urbervilles
▲ +44 Harry Potter and the Sorcerer's Stone
▼ -193 Heidi
▼ -242 Ulysses
▼ -192 The Complete Sherlock Holmes
▼ -41 The Count of Monte Cristo
▼ -27 The Old Man and the Sea
▲ +22 The Lion, the Witch, and the Wardrobe
▼ -184 The Hunchback of Notre Dame
▼ -293 Pinocchio
▼ -28 One Hundred Years of Solitude
▼ -274 Ivanhoe
▼ -259 The Red Badge of Courage
▼ -24 Anne of Green Gables
▼ -146 Black Beauty
▼ -120 Peter Pan
▼ -127 A Farewell to Arms
▼ -349 The House of the Seven Gables
▲ +35 Lord of the Flies
▼ -233 The Prince and the Pauper
▼ -209 A Portrait of the Artist as a Young Man
▼ -367 Lord Jim
▲ +55 Harry Potter and the Chamber of Secrets
▼ -287 The Red & the Black
▼ -11 The Stranger
▼ -116 The Trial
▼ -224 Lady Chatterley's Lover
▼ -298 Kidnapped: The Adventures of David Balfour
▲ +56 The Catcher in the Rye
▲ +38 Fahrenheit 451
▼ -164 A Journey to the Center of the Earth
▼ -213 Vanity Fair
▼ -75 All Quiet on the Western Front
▲ +6 Gone with the Wind
▼ -201 My Ántonia
▲ +47 Of Mice and Men
▼ -405 The Vicar of Wakefield
▼ -235 A Connecticut Yankee in King Arthur's Court
▼ -164 White Fang
▼ -255 Fathers and Sons
▼ -242 Doctor Zhivago
▼ -324 The Decameron
▲ +79 Nineteen Eighty-Four
▼ -187 The Jungle
▲ +51 The Da Vinci Code
▼ -26 Persuasion
▼ -88 Mansfield Park
▼ -114 Candide
▼ -107 For Whom the Bell Tolls
▼ -178 Far from the Madding Crowd
▲ +66 The Fellowship of the Ring
▼ -319 The Return of the Native
▼ -294 Sons and Lovers
▲ +52 Charlotte's Web
▼ -214 The Swiss Family Robinson
▼ -210 Bleak House
▼ -278 Père Goriot
▼ -252 Utopia
▼ -327 The History of Tom Jones, a Foundling
▲ +94 Harry Potter and the Prisoner of Azkaban
▼ -314 Kim
▼ -150 The Sound and the Fury
▲ +92 Harry Potter and the Goblet of Fire
▼ -278 The Mill on the Floss
▲ +36 A Wrinkle in Time
▼ -72 The Hound of the Baskervilles
▲ +27 The Two Towers
▼ -78 The War of the Worlds
▼ -152 Middlemarch
▼ -146 The Age of Innocence
▼ -6 The Color Purple
▼ -50 Northanger Abbey
▼ -24 East of Eden
▼ -45 On the Road
▲ +19 Catch-22
▼ -105 Around the World in Eighty Days
▼ -244 Hard Times
▼ -37 Beloved
▼ -71 Mrs. Dalloway
▼ -131 To the Lighthouse
▼ -14 The Magician's Nephew
▲ +108 Harry Potter and the Order of the Phoenix
▼ -29 The Sun Also Rises
▼ -96 The Good Earth
▼ -212 Silas Marner
▼ -15 Love in the Time of Cholera
▲ +5 Rebecca
▼ -230 Jude the Obscure
▲ +129 Twilight
▼ -215 A Passage to India
▼ -84 The Plague
▼ -266 Nicholas Nickleby
▼ -93 The Pearl
▼ -155 Ethan Frome
▼ -339 The Tale of Genji
▲ +105 The Giver
▲ +116 The Alchemist
▼ -146 The Strange Case of Dr. Jekyll and Mr. Hyde
▼ -52 Robinson Crusoe
▼ -138 Tender is the Night
▼ -112 The Idiot
▼ -22 Hatchet
▲ +124 The Kite Runner
▲ +36 One Flew Over the Cuckoo's Nest
▼ -199 The Portrait of a Lady
▲ +84 The Outsiders
▼ -272 Ben-Hur
▼ -222 The Mayor of Casterbridge
▼ -204 Cry, The Beloved Country
▼ -53 The Last Battle
▼ -308 Captains Courageous
▼ -219 The Castle
▲ +76 The Metamorphosis
▼ -237 The Magic Mountain (Der Zauberberg)
▲ +10 James and the Giant Peach
▼ -18 The Horse and His Boy
▲ +140 Angels & Demons
▲ +12 The Voyage of the Dawn Treader
▲ +77 The Bell Jar
▼ -268 Women in Love
▼ -279 The Yearling
▼ -223 O Pioneers!
▲ +125 The Handmaid's Tale
▼ -165 The Moonstone
▼ -292 The Old Curiosity Shop
▼ -229 Little Dorrit
▲ +14 Prince Caspian: The Return to Narnia
▼ -237 Sister Carrie
▼ -26 The Silver Chair
▲ +171 The Hunger Games
▼ -183 This Side of Paradise
▼ -282 Eugénie Grandet
▼ -206 Of Human Bondage
▼ -320 Dream of the Red Chamber
▲ +127 Life of Pi
▲ +166 Harry Potter and the Deathly Hallows
▼ -68 Invisible Man
▼ -70 Steppenwolf
▼ -104 The Sorrows of Young Werther
▲ +46 Bridge to Terabithia
▼ -60 The Invisible Man
▲ +112 Holes
▲ +81 Siddhartha
▲ +37 A Tree Grows in Brooklyn
▼ -94 Through the Looking-Glass, and What Alice Found There
▲ +66 In Cold Blood
▼ -25 The House of the Spirits
▼ -259 Adam Bede
▼ -280 The Betrothed
▲ +162 The Book Thief
▲ +14 Their Eyes Were Watching God
▼ -106 One Day in the Life of Ivan Denisovich
▼ -239 The Sea Wolf
▲ +182 Catching Fire
▼ -97 Roll of Thunder, Hear My Cry
▼ -220 Death Comes for the Archbishop
▼ -123 The House of Mirth
▼ -174 Light in August
▼ -237 The Pickwick Papers
▼ -292 Remembrance of Things Past
▼ -295 Barchester Towers and the Warden
▼ -219 The Bridge of San Luis Rey
▲ +176 The Help
▲ +80 Murder on the Orient Express
▲ +172 The Lovely Bones
▼ -171 The Appeal
▼ -261 Dombey And Son
▲ +149 Slaughterhouse-Five
▼ -209 An American Tragedy
▼ -9 The Bluest Eye
▲ +1 Little House In the Big Woods
▼ -22 Pippi Longstocking
▼ -201 Germinal
▼ -89 The Heart Is a Lonely Hunter
▼ -52 The Woman In White
▼ -183 Absalom, Absalom!
▼ -111 A Painted House
▲ +200 The Girl With the Dragon Tattoo
▼ -31 A Room With a View
▲ +76 Watership Down
▲ +182 Memoirs of a Geisha
▼ -215 Our Mutual Friend
▼ -229 Babbitt
▼ -159 The Red Pony
▼ -143 All the King's Men
▲ +59 Things Fall Apart
▼ -240 Lorna Doone
▼ -164 Johnny Tremain
▼ -10 Anne of Avonlea
▲ +26 Tuck Everlasting
▲ +88 The BFG
▼ -45 Cannery Row
▲ +117 The Joy Luck Club
▲ +37 The Silmarillion
▼ -30 Roots
▲ +38 Little House on the Prairie
▼ -80 Native Son
▼ -52 Stuart Little
▼ -181 Cross Fire
▼ -169 The Power and the Glory
▲ +130 A Clockwork Orange
▲ +19 The Phantom of the Opera
▲ +27 The Martian Chronicles
▲ +155 The Road
▼ -239 The Way of All Flesh
▼ -251 Diary of a Wimpy Kid: The Long Haul
▼ -108 Villette
▲ +191 The Curious Incident of the Dog In the Night-Time
▼ -135 The Mysterious Island
▼ -50 Song of Solomon
▼ -198 Nana
▼ -160 Quo Vadis
▼ -192 Main Street
▲ +170 Matilda
▲ +162 Lolita
▲ +196 Paper Towns
▼ -176 Sounder
▲ +34 Are You There God? It's Me, Margaret
▲ +212 The Notebook
▲ +29 From the Mixed-Up Files of Mrs. Basil E. Frankweiler
▲ +96 Atlas Shrugged
▲ +81 The Fountainhead
▲ +134 Number the Stars
▲ +141 The Firm
▼ -108 Swann's Way
▲ +208 Ender's Game
▲ +98 The Name of the Rose
▲ +169 A Time to Kill
▲ +220 Water for Elephants
▲ +131 The Time Machine
▲ +226 Eragon
▲ +231 The Hitchhiker's Guide to the Galaxy
▼ -161 Buddenbrooks
▲ +221 A Thousand Splendid Suns
▲ +6 The Witch of Blackbird Pond
▲ +215 And Then There Were None
▲ +49 A Separate Peace
▲ +232 Breaking Dawn
▲ +20 As I Lay Dying
▲ +194 The Girl Who Played With Fire
▲ +121 Where the Red Fern Grows
▼ -131 Le Morte D'Arthur
▲ +267 Mockingjay
▲ +181 The Pillars of the Earth
▼ -202 Persian Letters
▲ +136 The Client
▼ -34 Sula
▲ +15 Tales of a Fourth Grade Nothing
▼ -78 The Merry Adventures of Robin Hood of Great Renown In Nottinghamshire
▼ -91 Tortilla Flat
▼ -179 Look Homeward, Angel
▼ -185 The Mystery of Edwin Drood
▼ -6 Brideshead Revisited
▲ +138 The Pelican Brief
▲ +157 Atonement
▼ -157 Washington Square
▲ +129 Like Water for Chocolate
▲ +246 The Golden Compass
▲ +236 The Secret Life of Bees
▲ +297 The Fault In Our Stars
▼ -164 Nostromo
▼ -173 Finnegans Wake
▼ -22 The Brethren
▲ +189 Coraline
▲ +165 Heart of Darkness
▼ -8 On the Banks of Plum Creek
▼ -115 Rebecca of Sunnybrook Farm
▼ -168 The Ambassadors
▼ -146 The Secret Agent
▲ +66 The House on Mango Street
▼ -51 Go Tell It on the Mountain
▲ +18 The Testament
▲ +102 The Clan of the Cave Bear
▼ -87 Cranford
▲ +98 Because of Winn-Dixie
▼ -33 My Side of the Mountain
▲ +125 The Runaway Jury
▼ -23 The Mouse and the Motorcycle
▲ +193 The Lost Symbol
▼ -141 The Forsyte Saga
▲ +301 Gone Girl
▲ +300 The Lightning Thief
▼ -170 The Last Days of Pompeii
▲ +92 The Reader
▼ -63 Caddie Woodlawn
▲ +88 The Tale of Despereaux
▲ +220 The Girl Who Kicked the Hornet's Nest
▼ -76 Dear Mr. Henshaw
▼ -10 The Killer Angels
▲ +88 Chronicle of a Death Foretold
▲ +222 The Five People You Meet In Heaven
▲ +160 The Master and Margarita
▼ -90 Winesburg, Ohio
▼ -107 P Is for Peril
▲ +268 My Sister's Keeper
▼ -143 Barnaby Rudge
▲ +4 Howards End
▲ +14 The Broker
▲ +8 The Camel Club
▼ -120 The Rainbow
▼ -23 The Man In the Iron Mask
▲ +62 Mary Poppins
▲ +210 Artemis Fowl
▲ +216 Dear John
▲ +123 Cold Mountain
▲ +228 Flowers for Algernon
▼ -31 The Dark Is Rising
▼ -102 Resurrection
▲ +22 Fearless Fourteen
▼ -139 A Sentimental Journey Through France and Italy
▲ +11 The King of Torts
▲ +216 The Graveyard Book
▼ -16 The Quiet American
▲ +82 The Chamber
▲ +74 The English Patient
▲ +110 Snow Falling on Cedars
▲ +21 The Long Winter
▲ +20 Sarah, Plain and Tall
▼ -44 Cross Country
▲ +56 The Spy Who Came In from the Cold
▲ +331 A Game of Thrones
▲ +189 The Thorn Birds
▲ +45 Old Yeller
▲ +7 Ramona Quimby, Age 8
▼ -15 Death In Venice
▲ +19 By the Shores of Silver Lake
▲ +235 Inferno
▲ +104 Schindler's List
▲ +151 Jonathan Livingston Seagull
▲ +266 The Stand
▲ +55 The Last Juror
▲ +30 Shiloh
▲ +267 Girl With a Pearl Earring
▲ +167 The Murder of Roger Ackroyd
▲ +300 It
▲ +136 The Rainmaker
▲ +272 The Poisonwood Bible
▲ +68 The Indian in the Cupboard
▲ +71 The Maltese Falcon
▼ -84 The Warden
▲ +35 The Summons
▼ -26 Encyclopedia Brown: Boy Detective
▲ +339 The Time Traveler's Wife
▼ -5 The Incredible Journey
▲ +103 Daughter of Fortune
▼ -38 Shirley
▲ +85 Bud, Not Buddy
▲ +12 The Horse Whisperer
▲ +93 The Street Lawyer
▲ +95 Nausea
▼ -36 To Have and Have Not
▲ +70 The Bridges of Madison County
▲ +136 Anne of the Island
● The Winter of Our Discontent
▲ +339 The Shining
▲ +99 The Tenant of Wildfell Hall
▼ -3 First Family
▲ +111 The Partner
▲ +376 The Girl on the Train
▼ -62 The Black Arrow: A Tale of the Two Roses
▼ -90 The Rise of Silas Lapham
▲ +153 The Choice
▼ -82 The Virginian: A Horseman of the Plains
▲ +307 A Walk to Remember
▲ +350 The Maze Runner
▲ +176 The Westing Game
▲ +11 Misty of Chincoteague
▲ +142 Diary of a Wimpy Kid: The Last Straw
▲ +19 King Solomon's Mines
▼ -56 The Princess of Cleves
▼ -14 Jacob Have I Loved
▲ +158 Mrs. Frisby and the Rats of NIMH
▲ +300 Misery
▲ +167 The Cider House Rules
▼ -28 King of the Wind
▲ +109 The Once and Future King
▲ +254 The Witches
▲ +264 The Subtle Knife
▲ +118 When You Reach Me
▲ +310 Carrie
▼ -30 The Moon and Sixpence
▼ -51 The Higher Power of Lucky
▼ -65 Looking Backward, 2000-1887
▼ -39 The Wings of the Dove
▼ -55 The Summer of the Swans
▲ +40 Dangerous Liaisons
▲ +346 Jurassic Park
▲ +219 The Absolutely True Diary of a Part-time Indian
▲ +19 The Grey King
▲ +13 The Leopard
▲ +75 The Mammoth Hunters
▲ +84 The Trumpet of the Swan
▲ +263 The Lucky One
▲ +82 These Happy Golden Years
▼ -51 Arrowsmith
▲ +62 Julie of the Wolves
▲ +286 The Screwtape Letters
▲ +127 The Fall
▲ +226 The No. 1 Ladies' Detective Agency
▲ +5 Worst Case
▼ -15 Lost Horizon
▲ +317 The Gunslinger
▼ -38 The Slave Dancer
▲ +429 Harry Potter and the Half-Blood Prince
▲ +287 Inkheart
▲ +16 Ramona and her Father
▲ +159 Inkspell
▲ +85 Ramona the Pest
▲ +189 Walk Two Moons
▲ +384 Miss Peregrine's Home for Peculiar Children
▲ +54 The Chocolate War
▲ +120 Sophie's Choice
▲ +403 Looking for Alaska
▲ +240 Breakfast at Tiffany's
▲ +62 The Razor's Edge
▲ +201 Dreamcatcher
▲ +127 Orlando
▲ +270 The Things they Carried
▲ +125 Little Town on the Prairie
▲ +202 Nights in Rodanthe
▲ +290 The Amber Spyglass
▲ +157 The Miraculous Journey of Edward Tulane
▲ +103 Flatland
▲ +350 Diary of a Wimpy Kid
▲ +338 The Memory Keeper's Daughter
▲ +203 The Wedding
▲ +278 Fried Green Tomatoes at the Whistle-Stop Cafe
▲ +103 The Cricket in Times Square
▲ +270 The Phantom Tollbooth
▼ -13 Rob Roy
▲ +209 The Death of Ivan Ilych
▲ +34 Alex Cross's Trial
▼ -22 Kenilworth
▲ +16 The Life and Opinions of Tristram Shandy
▲ +282 The Remains of the Day
▼ -14 M.C. Higgins, The Great
▲ +5 Call It Courage
▲ +272 Go Set a Watchman
▲ +77 Bleachers
▲ +9 Elijah of Buxton
▲ +37 Swimsuit
▲ +321 Cat's Cradle
▲ +35 The Caine Mutiny
▲ +45 The Heart of the Matter
▲ +170 Harriet, the Spy
▲ +55 Darkness at Noon
▲ +302 A Prayer for Owen Meany
▲ +294 The God of Small Things
▲ +130 The Associate
▲ +369 The Shack
▲ +45 The Naked and the Dead
▲ +419 The Sea of Monsters
▲ +306 Stranger in a Strange Land
▲ +220 Vision in White
▲ +53 The Whipping Boy
▲ +398 Room
▲ +378 Deception Point\n```\n:::\n:::\n\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis in this [Colab notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis here [LINK_TO_ACTIVITIES_TAB]. \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof alldataSummaryView, viewof allcopyUrlButton, viewof allselectedColumns, viewof alldataUrl, viewof alltableOptions, viewof alldataSet, alltableContainer, alltable} from \"d5aded95854ada9d\"\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//viewof dataUrl\n//|error: false\n//|warning: false\nalltableContainer\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//tableContainer\n//|error: false\n//|warning: false\nviewof alltableOptions\nviewof allcopyUrlButton\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n//|error: false\n//|warning: false\nalltable\n```\n\n```{ojs}\n//|echo: false\n//|error: false\n//|warning: false\n\nviewof allselectedColumns\nviewof alldataSummaryView\n```\n\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis colab notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. In our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. What other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n\n\n", + "markdown": "---\ntitle: \"Top 500 \\\"Greatest\\\" Novels (1021-2015)\"\nauthor: Anna Preus and Aashna Sheth\nformat: \n html:\n css: ../../styles.css\n # include-in-header:\n # - text: \n #ipynb: default\n pdf: default\n #docx: default\n #r: default\nlisting:\n id: exercise-posts\n contents: exercises\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\n image-height: 200px\ndate: \"2024-07\"\ncategories: [libraries, literature, readers, gender, metadata, full-text, public domain ]\nimage: \"images/library-top-500-screenshot.png\"\n# toc: true\n# toc-depth: 5\n# sidebar: \n# contents: auto\nformat-links: [pdf, docx, ipynb]\ncode-fold: true\neditor: visual\ndf-print: kable\njupyter: python3\ncode-tools: true\nbibliography: ../../references/references.bib\n---\n\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay}\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n::: {#9c84294f .cell execution_count=1}\n``` {.python .cell-code}\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=56}\n```\nauthor_gender\nmale 355\nfemale 145\nName: count, dtype: int64\n```\n:::\n:::\n\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n::: {#79e17dac .cell execution_count=2}\n``` {.python .cell-code}\ndf[\"author_nationality\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=57}\n```\nauthor_nationality\nUS 257\nGB 149\nFR 27\nDE 10\nRU 10\nIE 8\nCA 8\nIT 5\nSE 4\nCZ 3\nCO 3\nAU 3\nCH 2\nCL 2\nMX 1\nPL 1\nNG 1\nES 1\nCN 1\nZA 1\nBR 1\nJP 1\nIN 1\nName: count, dtype: int64\n```\n:::\n:::\n\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n::: {#52323704 .cell execution_count=3}\n``` {.python .cell-code}\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n```\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-html/cell-4-output-1.png){width=593 height=432}\n:::\n:::\n\n\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n::: {#21d75bcd .cell execution_count=4}\n``` {.python .cell-code}\ndf[\"author\"].value_counts(dropna=False).head(10)\n```\n\n::: {.cell-output .cell-output-display execution_count=59}\n```\nauthor\nJohn Grisham 19\nCharles Dickens 15\nJohn Steinbeck 8\nC.S. Lewis 8\nJ.K. Rowling 7\nNicholas Sparks 7\nStephen King 7\nLaura Ingalls Wilder 7\nBeverly Cleary 5\nThomas Hardy 5\nName: count, dtype: int64\n```\n:::\n:::\n\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n::: {#9d2b3b96 .cell execution_count=5}\n``` {.python .cell-code}\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.6985608812420623, pvalue=1.1165447422670404e-73)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-html/cell-6-output-2.png){width=470 height=470}\n:::\n:::\n\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n::: {#fb375264 .cell execution_count=6}\n``` {.python .cell-code}\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.7642639335763278, pvalue=5.654107690952509e-96)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-html/cell-7-output-2.png){width=470 height=470}\n:::\n:::\n\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [notebook](exercises/Metadata_Analysis.html).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n::: {#bb98a10e .cell execution_count=7}\n``` {.python .cell-code}\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n title author top_500_rank \\\n0 Don Quixote Miguel de Cervantes 1 \n1 Alice's Adventures in Wonderland Lewis Carroll 2 \n2 The Adventures of Huckleberry Finn Mark Twain 3 \n3 The Adventures of Tom Sawyer Mark Twain 4 \n4 Treasure Island Robert Louis Stevenson 5 \n\n gr_num_ratings_rank \n0 211 \n1 133 \n2 68 \n3 88 \n4 145 \n title author top_500_rank \\\n44 Harry Potter and the Sorcerer's Stone J.K. Rowling 45 \n172 The Hunger Games Suzanne Collins 173 \n131 Twilight Stephenie Meyer 132 \n28 To Kill a Mockingbird Harper Lee 29 \n33 The Great Gatsby F. Scott Fitzgerald 34 \n\n gr_num_ratings_rank \n44 1 \n172 2 \n131 3 \n28 4 \n33 5 \n```\n:::\n:::\n\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n::: {#12910089 .cell execution_count=8}\n``` {.python .cell-code}\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n```\n\n::: {.cell-output .cell-output-display execution_count=63}\n```{=html}\n ▼ -210 Don Quixote
▼ -131 Alice's Adventures in Wonderland
▼ -65 The Adventures of Huckleberry Finn
▼ -84 The Adventures of Tom Sawyer
▼ -140 Treasure Island
▼ -2 Pride and Prejudice
▼ -39 Wuthering Heights
▼ -32 Jane Eyre
▼ -125 Moby Dick
▼ -85 The Scarlet Letter
▼ -197 Gulliver's Travels
▼ -266 The Pilgrim's Progress
▼ -85 A Christmas Carol
▼ -214 David Copperfield
▼ -71 A Tale of Two Cities
▼ -22 Little Women
▼ -86 Great Expectations
▲ +8 The Hobbit, or, There and Back Again
▼ -35 Frankenstein, or, the Modern Prometheus
▼ -149 Oliver Twist
▼ -209 Uncle Tom's Cabin
▼ -72 Crime and Punishment
▼ -159 Madame Bovary: Patterns of Provincial life
▼ -69 The Return of the King
▼ -42 Dracula
▼ -160 The Three Musketeers
▼ -16 Brave New World
▼ -155 War and Peace
▲ +25 To Kill a Mockingbird
▼ -122 The Wizard of Oz
▼ -73 Les Misérables
▼ -43 The Secret Garden
▲ +21 Animal Farm
▲ +29 The Great Gatsby
▼ -4 The Little Prince
▼ -124 The Call of the Wild
▼ -444 20,000 Leagues Under the Sea
▼ -59 Anna Karenina
▼ -193 The Wind in the Willows
▼ -17 The Picture of Dorian Gray
▼ -50 The Grapes of Wrath
▼ -32 Sense and Sensibility
▼ -279 The Last of the Mohicans
▼ -159 Tess of the d'Urbervilles
▲ +44 Harry Potter and the Sorcerer's Stone
▼ -193 Heidi
▼ -242 Ulysses
▼ -192 The Complete Sherlock Holmes
▼ -41 The Count of Monte Cristo
▼ -27 The Old Man and the Sea
▲ +22 The Lion, the Witch, and the Wardrobe
▼ -184 The Hunchback of Notre Dame
▼ -293 Pinocchio
▼ -28 One Hundred Years of Solitude
▼ -274 Ivanhoe
▼ -259 The Red Badge of Courage
▼ -24 Anne of Green Gables
▼ -146 Black Beauty
▼ -120 Peter Pan
▼ -127 A Farewell to Arms
▼ -349 The House of the Seven Gables
▲ +35 Lord of the Flies
▼ -233 The Prince and the Pauper
▼ -209 A Portrait of the Artist as a Young Man
▼ -367 Lord Jim
▲ +55 Harry Potter and the Chamber of Secrets
▼ -287 The Red & the Black
▼ -11 The Stranger
▼ -116 The Trial
▼ -224 Lady Chatterley's Lover
▼ -298 Kidnapped: The Adventures of David Balfour
▲ +56 The Catcher in the Rye
▲ +38 Fahrenheit 451
▼ -164 A Journey to the Center of the Earth
▼ -213 Vanity Fair
▼ -75 All Quiet on the Western Front
▲ +6 Gone with the Wind
▼ -201 My Ántonia
▲ +47 Of Mice and Men
▼ -405 The Vicar of Wakefield
▼ -235 A Connecticut Yankee in King Arthur's Court
▼ -164 White Fang
▼ -255 Fathers and Sons
▼ -242 Doctor Zhivago
▼ -324 The Decameron
▲ +79 Nineteen Eighty-Four
▼ -187 The Jungle
▲ +51 The Da Vinci Code
▼ -26 Persuasion
▼ -88 Mansfield Park
▼ -114 Candide
▼ -107 For Whom the Bell Tolls
▼ -178 Far from the Madding Crowd
▲ +66 The Fellowship of the Ring
▼ -319 The Return of the Native
▼ -294 Sons and Lovers
▲ +52 Charlotte's Web
▼ -214 The Swiss Family Robinson
▼ -210 Bleak House
▼ -278 Père Goriot
▼ -252 Utopia
▼ -327 The History of Tom Jones, a Foundling
▲ +94 Harry Potter and the Prisoner of Azkaban
▼ -314 Kim
▼ -150 The Sound and the Fury
▲ +92 Harry Potter and the Goblet of Fire
▼ -278 The Mill on the Floss
▲ +36 A Wrinkle in Time
▼ -72 The Hound of the Baskervilles
▲ +27 The Two Towers
▼ -78 The War of the Worlds
▼ -152 Middlemarch
▼ -146 The Age of Innocence
▼ -6 The Color Purple
▼ -50 Northanger Abbey
▼ -24 East of Eden
▼ -45 On the Road
▲ +19 Catch-22
▼ -105 Around the World in Eighty Days
▼ -244 Hard Times
▼ -37 Beloved
▼ -71 Mrs. Dalloway
▼ -131 To the Lighthouse
▼ -14 The Magician's Nephew
▲ +108 Harry Potter and the Order of the Phoenix
▼ -29 The Sun Also Rises
▼ -96 The Good Earth
▼ -212 Silas Marner
▼ -15 Love in the Time of Cholera
▲ +5 Rebecca
▼ -230 Jude the Obscure
▲ +129 Twilight
▼ -215 A Passage to India
▼ -84 The Plague
▼ -266 Nicholas Nickleby
▼ -93 The Pearl
▼ -155 Ethan Frome
▼ -339 The Tale of Genji
▲ +105 The Giver
▲ +116 The Alchemist
▼ -146 The Strange Case of Dr. Jekyll and Mr. Hyde
▼ -52 Robinson Crusoe
▼ -138 Tender is the Night
▼ -112 The Idiot
▼ -22 Hatchet
▲ +124 The Kite Runner
▲ +36 One Flew Over the Cuckoo's Nest
▼ -199 The Portrait of a Lady
▲ +84 The Outsiders
▼ -272 Ben-Hur
▼ -222 The Mayor of Casterbridge
▼ -204 Cry, The Beloved Country
▼ -53 The Last Battle
▼ -308 Captains Courageous
▼ -219 The Castle
▲ +76 The Metamorphosis
▼ -237 The Magic Mountain (Der Zauberberg)
▲ +10 James and the Giant Peach
▼ -18 The Horse and His Boy
▲ +140 Angels & Demons
▲ +12 The Voyage of the Dawn Treader
▲ +77 The Bell Jar
▼ -268 Women in Love
▼ -279 The Yearling
▼ -223 O Pioneers!
▲ +125 The Handmaid's Tale
▼ -165 The Moonstone
▼ -292 The Old Curiosity Shop
▼ -229 Little Dorrit
▲ +14 Prince Caspian: The Return to Narnia
▼ -237 Sister Carrie
▼ -26 The Silver Chair
▲ +171 The Hunger Games
▼ -183 This Side of Paradise
▼ -282 Eugénie Grandet
▼ -206 Of Human Bondage
▼ -320 Dream of the Red Chamber
▲ +127 Life of Pi
▲ +166 Harry Potter and the Deathly Hallows
▼ -68 Invisible Man
▼ -70 Steppenwolf
▼ -104 The Sorrows of Young Werther
▲ +46 Bridge to Terabithia
▼ -60 The Invisible Man
▲ +112 Holes
▲ +81 Siddhartha
▲ +37 A Tree Grows in Brooklyn
▼ -94 Through the Looking-Glass, and What Alice Found There
▲ +66 In Cold Blood
▼ -25 The House of the Spirits
▼ -259 Adam Bede
▼ -280 The Betrothed
▲ +162 The Book Thief
▲ +14 Their Eyes Were Watching God
▼ -106 One Day in the Life of Ivan Denisovich
▼ -239 The Sea Wolf
▲ +182 Catching Fire
▼ -97 Roll of Thunder, Hear My Cry
▼ -220 Death Comes for the Archbishop
▼ -123 The House of Mirth
▼ -174 Light in August
▼ -237 The Pickwick Papers
▼ -292 Remembrance of Things Past
▼ -295 Barchester Towers and the Warden
▼ -219 The Bridge of San Luis Rey
▲ +176 The Help
▲ +80 Murder on the Orient Express
▲ +172 The Lovely Bones
▼ -171 The Appeal
▼ -261 Dombey And Son
▲ +149 Slaughterhouse-Five
▼ -209 An American Tragedy
▼ -9 The Bluest Eye
▲ +1 Little House In the Big Woods
▼ -22 Pippi Longstocking
▼ -201 Germinal
▼ -89 The Heart Is a Lonely Hunter
▼ -52 The Woman In White
▼ -183 Absalom, Absalom!
▼ -111 A Painted House
▲ +200 The Girl With the Dragon Tattoo
▼ -31 A Room With a View
▲ +76 Watership Down
▲ +182 Memoirs of a Geisha
▼ -215 Our Mutual Friend
▼ -229 Babbitt
▼ -159 The Red Pony
▼ -143 All the King's Men
▲ +59 Things Fall Apart
▼ -240 Lorna Doone
▼ -164 Johnny Tremain
▼ -10 Anne of Avonlea
▲ +26 Tuck Everlasting
▲ +88 The BFG
▼ -45 Cannery Row
▲ +117 The Joy Luck Club
▲ +37 The Silmarillion
▼ -30 Roots
▲ +38 Little House on the Prairie
▼ -80 Native Son
▼ -52 Stuart Little
▼ -181 Cross Fire
▼ -169 The Power and the Glory
▲ +130 A Clockwork Orange
▲ +19 The Phantom of the Opera
▲ +27 The Martian Chronicles
▲ +155 The Road
▼ -239 The Way of All Flesh
▼ -251 Diary of a Wimpy Kid: The Long Haul
▼ -108 Villette
▲ +191 The Curious Incident of the Dog In the Night-Time
▼ -135 The Mysterious Island
▼ -50 Song of Solomon
▼ -198 Nana
▼ -160 Quo Vadis
▼ -192 Main Street
▲ +170 Matilda
▲ +162 Lolita
▲ +196 Paper Towns
▼ -176 Sounder
▲ +34 Are You There God? It's Me, Margaret
▲ +212 The Notebook
▲ +29 From the Mixed-Up Files of Mrs. Basil E. Frankweiler
▲ +96 Atlas Shrugged
▲ +81 The Fountainhead
▲ +134 Number the Stars
▲ +141 The Firm
▼ -108 Swann's Way
▲ +208 Ender's Game
▲ +98 The Name of the Rose
▲ +169 A Time to Kill
▲ +220 Water for Elephants
▲ +131 The Time Machine
▲ +226 Eragon
▲ +231 The Hitchhiker's Guide to the Galaxy
▼ -161 Buddenbrooks
▲ +221 A Thousand Splendid Suns
▲ +6 The Witch of Blackbird Pond
▲ +215 And Then There Were None
▲ +49 A Separate Peace
▲ +232 Breaking Dawn
▲ +20 As I Lay Dying
▲ +194 The Girl Who Played With Fire
▲ +121 Where the Red Fern Grows
▼ -131 Le Morte D'Arthur
▲ +267 Mockingjay
▲ +181 The Pillars of the Earth
▼ -202 Persian Letters
▲ +136 The Client
▼ -34 Sula
▲ +15 Tales of a Fourth Grade Nothing
▼ -78 The Merry Adventures of Robin Hood of Great Renown In Nottinghamshire
▼ -91 Tortilla Flat
▼ -179 Look Homeward, Angel
▼ -185 The Mystery of Edwin Drood
▼ -6 Brideshead Revisited
▲ +138 The Pelican Brief
▲ +157 Atonement
▼ -157 Washington Square
▲ +129 Like Water for Chocolate
▲ +246 The Golden Compass
▲ +236 The Secret Life of Bees
▲ +297 The Fault In Our Stars
▼ -164 Nostromo
▼ -173 Finnegans Wake
▼ -22 The Brethren
▲ +189 Coraline
▲ +165 Heart of Darkness
▼ -8 On the Banks of Plum Creek
▼ -115 Rebecca of Sunnybrook Farm
▼ -168 The Ambassadors
▼ -146 The Secret Agent
▲ +66 The House on Mango Street
▼ -51 Go Tell It on the Mountain
▲ +18 The Testament
▲ +102 The Clan of the Cave Bear
▼ -87 Cranford
▲ +98 Because of Winn-Dixie
▼ -33 My Side of the Mountain
▲ +125 The Runaway Jury
▼ -23 The Mouse and the Motorcycle
▲ +193 The Lost Symbol
▼ -141 The Forsyte Saga
▲ +301 Gone Girl
▲ +300 The Lightning Thief
▼ -170 The Last Days of Pompeii
▲ +92 The Reader
▼ -63 Caddie Woodlawn
▲ +88 The Tale of Despereaux
▲ +220 The Girl Who Kicked the Hornet's Nest
▼ -76 Dear Mr. Henshaw
▼ -10 The Killer Angels
▲ +88 Chronicle of a Death Foretold
▲ +222 The Five People You Meet In Heaven
▲ +160 The Master and Margarita
▼ -90 Winesburg, Ohio
▼ -107 P Is for Peril
▲ +268 My Sister's Keeper
▼ -143 Barnaby Rudge
▲ +4 Howards End
▲ +14 The Broker
▲ +8 The Camel Club
▼ -120 The Rainbow
▼ -23 The Man In the Iron Mask
▲ +62 Mary Poppins
▲ +210 Artemis Fowl
▲ +216 Dear John
▲ +123 Cold Mountain
▲ +228 Flowers for Algernon
▼ -31 The Dark Is Rising
▼ -102 Resurrection
▲ +22 Fearless Fourteen
▼ -139 A Sentimental Journey Through France and Italy
▲ +11 The King of Torts
▲ +216 The Graveyard Book
▼ -16 The Quiet American
▲ +82 The Chamber
▲ +74 The English Patient
▲ +110 Snow Falling on Cedars
▲ +21 The Long Winter
▲ +20 Sarah, Plain and Tall
▼ -44 Cross Country
▲ +56 The Spy Who Came In from the Cold
▲ +331 A Game of Thrones
▲ +189 The Thorn Birds
▲ +45 Old Yeller
▲ +7 Ramona Quimby, Age 8
▼ -15 Death In Venice
▲ +19 By the Shores of Silver Lake
▲ +235 Inferno
▲ +104 Schindler's List
▲ +151 Jonathan Livingston Seagull
▲ +266 The Stand
▲ +55 The Last Juror
▲ +30 Shiloh
▲ +267 Girl With a Pearl Earring
▲ +167 The Murder of Roger Ackroyd
▲ +300 It
▲ +136 The Rainmaker
▲ +272 The Poisonwood Bible
▲ +68 The Indian in the Cupboard
▲ +71 The Maltese Falcon
▼ -84 The Warden
▲ +35 The Summons
▼ -26 Encyclopedia Brown: Boy Detective
▲ +339 The Time Traveler's Wife
▼ -5 The Incredible Journey
▲ +103 Daughter of Fortune
▼ -38 Shirley
▲ +85 Bud, Not Buddy
▲ +12 The Horse Whisperer
▲ +93 The Street Lawyer
▲ +95 Nausea
▼ -36 To Have and Have Not
▲ +70 The Bridges of Madison County
▲ +136 Anne of the Island
● The Winter of Our Discontent
▲ +339 The Shining
▲ +99 The Tenant of Wildfell Hall
▼ -3 First Family
▲ +111 The Partner
▲ +376 The Girl on the Train
▼ -62 The Black Arrow: A Tale of the Two Roses
▼ -90 The Rise of Silas Lapham
▲ +153 The Choice
▼ -82 The Virginian: A Horseman of the Plains
▲ +307 A Walk to Remember
▲ +350 The Maze Runner
▲ +176 The Westing Game
▲ +11 Misty of Chincoteague
▲ +142 Diary of a Wimpy Kid: The Last Straw
▲ +19 King Solomon's Mines
▼ -56 The Princess of Cleves
▼ -14 Jacob Have I Loved
▲ +158 Mrs. Frisby and the Rats of NIMH
▲ +300 Misery
▲ +167 The Cider House Rules
▼ -28 King of the Wind
▲ +109 The Once and Future King
▲ +254 The Witches
▲ +264 The Subtle Knife
▲ +118 When You Reach Me
▲ +310 Carrie
▼ -30 The Moon and Sixpence
▼ -51 The Higher Power of Lucky
▼ -65 Looking Backward, 2000-1887
▼ -39 The Wings of the Dove
▼ -55 The Summer of the Swans
▲ +40 Dangerous Liaisons
▲ +346 Jurassic Park
▲ +219 The Absolutely True Diary of a Part-time Indian
▲ +19 The Grey King
▲ +13 The Leopard
▲ +75 The Mammoth Hunters
▲ +84 The Trumpet of the Swan
▲ +263 The Lucky One
▲ +82 These Happy Golden Years
▼ -51 Arrowsmith
▲ +62 Julie of the Wolves
▲ +286 The Screwtape Letters
▲ +127 The Fall
▲ +226 The No. 1 Ladies' Detective Agency
▲ +5 Worst Case
▼ -15 Lost Horizon
▲ +317 The Gunslinger
▼ -38 The Slave Dancer
▲ +429 Harry Potter and the Half-Blood Prince
▲ +287 Inkheart
▲ +16 Ramona and her Father
▲ +159 Inkspell
▲ +85 Ramona the Pest
▲ +189 Walk Two Moons
▲ +384 Miss Peregrine's Home for Peculiar Children
▲ +54 The Chocolate War
▲ +120 Sophie's Choice
▲ +403 Looking for Alaska
▲ +240 Breakfast at Tiffany's
▲ +62 The Razor's Edge
▲ +201 Dreamcatcher
▲ +127 Orlando
▲ +270 The Things they Carried
▲ +125 Little Town on the Prairie
▲ +202 Nights in Rodanthe
▲ +290 The Amber Spyglass
▲ +157 The Miraculous Journey of Edward Tulane
▲ +103 Flatland
▲ +350 Diary of a Wimpy Kid
▲ +338 The Memory Keeper's Daughter
▲ +203 The Wedding
▲ +278 Fried Green Tomatoes at the Whistle-Stop Cafe
▲ +103 The Cricket in Times Square
▲ +270 The Phantom Tollbooth
▼ -13 Rob Roy
▲ +209 The Death of Ivan Ilych
▲ +34 Alex Cross's Trial
▼ -22 Kenilworth
▲ +16 The Life and Opinions of Tristram Shandy
▲ +282 The Remains of the Day
▼ -14 M.C. Higgins, The Great
▲ +5 Call It Courage
▲ +272 Go Set a Watchman
▲ +77 Bleachers
▲ +9 Elijah of Buxton
▲ +37 Swimsuit
▲ +321 Cat's Cradle
▲ +35 The Caine Mutiny
▲ +45 The Heart of the Matter
▲ +170 Harriet, the Spy
▲ +55 Darkness at Noon
▲ +302 A Prayer for Owen Meany
▲ +294 The God of Small Things
▲ +130 The Associate
▲ +369 The Shack
▲ +45 The Naked and the Dead
▲ +419 The Sea of Monsters
▲ +306 Stranger in a Strange Land
▲ +220 Vision in White
▲ +53 The Whipping Boy
▲ +398 Room
▲ +378 Deception Point\n```\n:::\n:::\n\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis here, but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: [https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv](https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv)\n\n::: {#7a4674e9 .cell execution_count=9}\n``` {.python .cell-code}\nimport pandas as pd\nimport requests\nimport re\nfrom bs4 import BeautifulSoup\nimport random\n```\n:::\n\n\nLet's start by analyzing the type-token ratio of our texts by genre. The type-token ratio will tell us which genres contain the most unique words.\n\nThe type-token ratio is a simple expression that calculates `# of unique words / total words in a selection`. As you may be able to surmise, sometimes this ratio is naturally higher for shorter books. To avoid this bias, we randomly select a contiguous 1000 word sample from each book and average the scores across genres.\n\nIt's helpful to be able to store all of our data in a dataframe, but sometimes we want to work with just one column of the data and converting it into a different datatype can be helpful. Here we're converting all the information in the column \"text\" into a list.\n\n::: {#7a30c44f .cell execution_count=10}\n``` {.python .cell-code}\nimport string\n\ndef get_ttr(text):\n if (pd.isnull(text)):\n return 1.1 # a ratio greater than 1 is impossible, so we won't count these when doing our averages\n else:\n text = text.lower()\n punctuations = \"-,.?!;#: \\n\\t\"\n no_punct = text.strip(punctuations)\n tokens = text.split()\n\n trial = 0\n avg_ttr = 0\n while (trial < 10):\n random_token_num = random.randrange(0, len(tokens)-1000)\n #sample = tokens[random_token_num:(random_token_num+1000)]\n sample = [word.translate(str.maketrans('', '', string.punctuation))\n for word in tokens[random_token_num:(random_token_num + 1000)]]\n #print(sample)\n trial += 1\n avg_ttr += float(len(set(sample)))/1000\n\n return avg_ttr/10\n\nimport csv\n\ndf = pd.read_csv(\"https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\", sep='\\t', header=0, low_memory=False)\ndf[\"ttr\"] = df[\"full_text\"].apply(get_ttr)\n\ncleaned = df[df[\"ttr\"] <= 1] # drop all rows where ttr is not applicable\ngrouped = cleaned.groupby('genre')\navg_ttr = grouped[\"ttr\"].mean().sort_values(ascending=False)\nprint(avg_ttr)\n```\n\n::: {.cell-output .cell-output-stdout}\n```\ngenre\nscifi 0.457678\npolitical 0.456683\nhistory 0.454863\nwar 0.453950\nfantasy 0.450815\nna 0.443776\nthrillers 0.443244\nbildung 0.441073\nautobio 0.437933\naction 0.437250\nromance 0.431682\nmystery 0.427729\nallegories 0.419250\nhorror 0.392200\nName: ttr, dtype: float64\n```\n:::\n:::\n\n\n::: {#ba8e273c .cell execution_count=11}\n``` {.python .cell-code}\nsorted = cleaned.sort_values(by=['ttr'], ascending=False)\nprint(sorted[[\"title\", \"author\", \"ttr\", \"genre\"]].head(10).to_string(index=False))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n title author ttr genre\n Dombey And Son Charles Dickens 0.5275 na\n King of the Wind Marguerite Henry 0.5014 history\n A Passage to India E.M. Forster 0.4988 political\n Mrs. Dalloway Virginia Woolf 0.4962 na\nA Sentimental Journey Through France and Italy Laurence Sterne 0.4935 na\n The Once and Future King T. H. White 0.4935 fantasy\n The King of Torts John Grisham 0.4926 thrillers\n The Lovely Bones Alice Sebold 0.4916 na\n The Cider House Rules John Irving 0.4914 bildung\n Vanity Fair William Makepeace Thackeray 0.4909 na\n```\n:::\n:::\n\n\nAs we've seen in this quick example, some authors or genres seem to use a wider variety of words. However, this is just a first step in exploring text analysis with ttr. We've made some simplifications, like assuming our 1000-word sample perfectly represents a whole novel, and we haven't delved into advanced techniques for parsing and cleaning text.\n\nFrom here, you dive deeper into the world of lexical diversity! You can continue using statistical methods or even feed this text into more sophisticated langauge models.\n\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis [here](?tab=discussion-%26-activities). \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container2\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n displayedColumns: [\n \"top_500_rank\",\n \"title\",\n \"author\",\n \"pub_year\",\n \"orig_lang\",\n \"genre\",\n \"author_birth\",\n \"author_death\",\n \"author_gender\",\n \"author_primary_lang\",\n \"author_nationality\",\n \"author_field_of_activity\",\n \"author_occupation\",\n \"oclc_holdings\",\n \"oclc_eholdings\",\n \"oclc_total_editions\",\n \"oclc_holdings_rank\",\n \"oclc_editions_rank\",\n \"gr_avg_rating\",\n \"gr_num_ratings\",\n \"gr_num_reviews\",\n \"gr_avg_rating_rank\",\n \"gr_num_ratings_rank\",\n \"oclc_owi\",\n \"author_viaf\",\n \"gr_url\",\n \"wiki_url\",\n \"pg_eng_url\",\n \"pg_orig_url\"\n ],\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. \n\nIn our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. \n\nWhat other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n\n\n", "supporting": [ "top-500-novels_files/figure-html" ], diff --git a/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/tex.json b/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/tex.json index 2f6907f..23b33d2 100644 --- a/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/tex.json +++ b/website/.quarto/_freeze/posts/top-500-novels/top-500-novels/execute-results/tex.json @@ -1,8 +1,8 @@ { - "hash": "c998d7d3f34619a79f174d65bcc9a41f", + "hash": "46b41810bed040ac2831eca1450ee528", "result": { "engine": "jupyter", - "markdown": "---\ntitle: \"Top 500 \\\"Greatest\\\" Novels (1021-2015)\"\nauthor: Anna Preus and Aashna Sheth\nformat: \n html:\n css: ../../styles.css\n # include-in-header:\n # - text: \n #ipynb: default\n pdf: default\n #docx: default\n #r: default\nlisting:\n id: exercise-posts\n contents: exercises\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\n image-height: 200px\ndate: \"2024-07\"\ncategories: [libraries, literature, readers, gender, metadata, full-text, public domain ]\nimage: \"images/library-top-500-screenshot.png\"\n# toc: true\n# toc-depth: 5\n# sidebar: \n# contents: auto\nformat-links: [pdf, docx, ipynb]\ncode-fold: true\neditor: visual\ndf-print: kable\njupyter: python3\ncode-tools: true\nbibliography: ../../references/references.bib\n---\n\n\n\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay}\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n::: {.cell execution_count=1}\n``` {.python .cell-code}\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=1}\n```\nauthor_gender\nmale 355\nfemale 145\nName: count, dtype: int64\n```\n:::\n:::\n\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n::: {.cell execution_count=2}\n``` {.python .cell-code}\ndf[\"author_nationality\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=2}\n```\nauthor_nationality\nUS 257\nGB 149\nFR 27\nDE 10\nRU 10\nIE 8\nCA 8\nIT 5\nSE 4\nCZ 3\nCO 3\nAU 3\nCH 2\nCL 2\nMX 1\nPL 1\nNG 1\nES 1\nCN 1\nZA 1\nBR 1\nJP 1\nIN 1\nName: count, dtype: int64\n```\n:::\n:::\n\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n::: {.cell execution_count=3}\n``` {.python .cell-code}\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n```\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-pdf/cell-4-output-1.pdf){fig-pos='H'}\n:::\n:::\n\n\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n::: {.cell execution_count=4}\n``` {.python .cell-code}\ndf[\"author\"].value_counts(dropna=False).head(10)\n```\n\n::: {.cell-output .cell-output-display execution_count=4}\n```\nauthor\nJohn Grisham 19\nCharles Dickens 15\nJohn Steinbeck 8\nC.S. Lewis 8\nJ.K. Rowling 7\nNicholas Sparks 7\nStephen King 7\nLaura Ingalls Wilder 7\nBeverly Cleary 5\nThomas Hardy 5\nName: count, dtype: int64\n```\n:::\n:::\n\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n::: {.cell execution_count=5}\n``` {.python .cell-code}\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.6985608812420623, pvalue=1.1165447422670404e-73)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-pdf/cell-6-output-2.pdf){fig-pos='H'}\n:::\n:::\n\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n::: {.cell execution_count=6}\n``` {.python .cell-code}\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.7642639335763278, pvalue=5.654107690952509e-96)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-pdf/cell-7-output-2.pdf){fig-pos='H'}\n:::\n:::\n\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [colab notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n::: {.cell execution_count=7}\n``` {.python .cell-code}\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n title author top_500_rank \\\n0 Don Quixote Miguel de Cervantes 1 \n1 Alice's Adventures in Wonderland Lewis Carroll 2 \n2 The Adventures of Huckleberry Finn Mark Twain 3 \n3 The Adventures of Tom Sawyer Mark Twain 4 \n4 Treasure Island Robert Louis Stevenson 5 \n\n gr_num_ratings_rank \n0 211 \n1 133 \n2 68 \n3 88 \n4 145 \n title author top_500_rank \\\n44 Harry Potter and the Sorcerer's Stone J.K. Rowling 45 \n172 The Hunger Games Suzanne Collins 173 \n131 Twilight Stephenie Meyer 132 \n28 To Kill a Mockingbird Harper Lee 29 \n33 The Great Gatsby F. Scott Fitzgerald 34 \n\n gr_num_ratings_rank \n44 1 \n172 2 \n131 3 \n28 4 \n33 5 \n```\n:::\n:::\n\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n::: {.cell execution_count=8}\n``` {.python .cell-code}\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n```\n\n::: {.cell-output .cell-output-display execution_count=8}\n```\n\n```\n:::\n:::\n\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis in this [Colab notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis here [LINK_TO_ACTIVITIES_TAB]. \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof alldataSummaryView, viewof allcopyUrlButton, viewof allselectedColumns, viewof alldataUrl, viewof alltableOptions, viewof alldataSet, alltableContainer, alltable} from \"d5aded95854ada9d\"\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//viewof dataUrl\n//|error: false\n//|warning: false\nalltableContainer\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//tableContainer\n//|error: false\n//|warning: false\nviewof alltableOptions\nviewof allcopyUrlButton\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n//|error: false\n//|warning: false\nalltable\n```\n\n```{ojs}\n//|echo: false\n//|error: false\n//|warning: false\n\nviewof allselectedColumns\nviewof alldataSummaryView\n```\n\n\n\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis colab notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. In our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. What other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n\n\n", + "markdown": "---\ntitle: \"Top 500 \\\"Greatest\\\" Novels (1021-2015)\"\nauthor: Anna Preus and Aashna Sheth\nformat: \n html:\n css: ../../styles.css\n # include-in-header:\n # - text: \n #ipynb: default\n pdf: default\n #docx: default\n #r: default\nlisting:\n id: exercise-posts\n contents: exercises\n exclude:\n categories: \"dataset\"\n sort: \"date desc\"\n type: table\n fields: [date, title, categories]\n categories: false\n sort-ui: false\n filter-ui: true\n image-height: 200px\ndate: \"2024-07\"\ncategories: [libraries, literature, readers, gender, metadata, full-text, public domain ]\nimage: \"images/library-top-500-screenshot.png\"\n# toc: true\n# toc-depth: 5\n# sidebar: \n# contents: auto\nformat-links: [pdf, docx, ipynb]\ncode-fold: true\neditor: visual\ndf-print: kable\njupyter: python3\ncode-tools: true\nbibliography: ../../references/references.bib\n---\n\n\n\n\n\n\n\n\n\n\n\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay}\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n displayedColumns: [\"top_500_rank\",\n \"title\",\n \"author\",\n \"pub_year\",\n \"orig_lang\",\n \"genre\",\n \"author_birth\",\n \"author_death\",\n \"author_gender\",\n \"author_primary_lang\",\n \"author_nationality\",\n \"author_field_of_activity\",\n \"author_occupation\",\n \"oclc_holdings\",\n \"oclc_eholdings\",\n \"oclc_total_editions\",\n \"oclc_holdings_rank\",\n \"oclc_editions_rank\",\n \"gr_avg_rating\",\n \"gr_num_ratings\",\n \"gr_num_reviews\",\n \"gr_avg_rating_rank\",\n \"gr_num_ratings_rank\",\n \"oclc_owi\",\n \"author_viaf\",\n \"gr_url\",\n \"wiki_url\",\n \"pg_eng_url\",\n \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n::: {.cell execution_count=1}\n``` {.python .cell-code}\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=12}\n```\nauthor_gender\nmale 355\nfemale 145\nName: count, dtype: int64\n```\n:::\n:::\n\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n::: {.cell execution_count=2}\n``` {.python .cell-code}\ndf[\"author_nationality\"].value_counts(dropna=False)\n```\n\n::: {.cell-output .cell-output-display execution_count=13}\n```\nauthor_nationality\nUS 257\nGB 149\nFR 27\nDE 10\nRU 10\nIE 8\nCA 8\nIT 5\nSE 4\nCZ 3\nCO 3\nAU 3\nCH 2\nCL 2\nMX 1\nPL 1\nNG 1\nES 1\nCN 1\nZA 1\nBR 1\nJP 1\nIN 1\nName: count, dtype: int64\n```\n:::\n:::\n\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n::: {.cell execution_count=3}\n``` {.python .cell-code}\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n```\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-pdf/cell-4-output-1.pdf){fig-pos='H'}\n:::\n:::\n\n\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n::: {.cell execution_count=4}\n``` {.python .cell-code}\ndf[\"author\"].value_counts(dropna=False).head(10)\n```\n\n::: {.cell-output .cell-output-display execution_count=15}\n```\nauthor\nJohn Grisham 19\nCharles Dickens 15\nJohn Steinbeck 8\nC.S. Lewis 8\nJ.K. Rowling 7\nNicholas Sparks 7\nStephen King 7\nLaura Ingalls Wilder 7\nBeverly Cleary 5\nThomas Hardy 5\nName: count, dtype: int64\n```\n:::\n:::\n\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n::: {.cell execution_count=5}\n``` {.python .cell-code}\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.6985608812420623, pvalue=1.1165447422670404e-73)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-pdf/cell-6-output-2.pdf){fig-pos='H'}\n:::\n:::\n\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n::: {.cell execution_count=6}\n``` {.python .cell-code}\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\nPearsonRResult(statistic=0.7642639335763278, pvalue=5.654107690952509e-96)\n```\n:::\n\n::: {.cell-output .cell-output-display}\n![](top-500-novels_files/figure-pdf/cell-7-output-2.pdf){fig-pos='H'}\n:::\n:::\n\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [notebook](exercises/Metadata_Analysis.html).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n::: {.cell execution_count=7}\n``` {.python .cell-code}\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n title author top_500_rank \\\n0 Don Quixote Miguel de Cervantes 1 \n1 Alice's Adventures in Wonderland Lewis Carroll 2 \n2 The Adventures of Huckleberry Finn Mark Twain 3 \n3 The Adventures of Tom Sawyer Mark Twain 4 \n4 Treasure Island Robert Louis Stevenson 5 \n\n gr_num_ratings_rank \n0 211 \n1 133 \n2 68 \n3 88 \n4 145 \n title author top_500_rank \\\n44 Harry Potter and the Sorcerer's Stone J.K. Rowling 45 \n172 The Hunger Games Suzanne Collins 173 \n131 Twilight Stephenie Meyer 132 \n28 To Kill a Mockingbird Harper Lee 29 \n33 The Great Gatsby F. Scott Fitzgerald 34 \n\n gr_num_ratings_rank \n44 1 \n172 2 \n131 3 \n28 4 \n33 5 \n```\n:::\n:::\n\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n::: {.cell execution_count=8}\n``` {.python .cell-code}\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n```\n\n::: {.cell-output .cell-output-display execution_count=19}\n```\n\n```\n:::\n:::\n\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis here, but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: [https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv](https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv)\n\n::: {.cell execution_count=9}\n``` {.python .cell-code}\nimport pandas as pd\nimport requests\nimport re\nfrom bs4 import BeautifulSoup\nimport random\n```\n:::\n\n\nLet's start by analyzing the type-token ratio of our texts by genre. The type-token ratio will tell us which genres contain the most unique words.\n\nThe type-token ratio is a simple expression that calculates `# of unique words / total words in a selection`. As you may be able to surmise, sometimes this ratio is naturally higher for shorter books. To avoid this bias, we randomly select a contiguous 1000 word sample from each book and average the scores across genres.\n\nIt's helpful to be able to store all of our data in a dataframe, but sometimes we want to work with just one column of the data and converting it into a different datatype can be helpful. Here we're converting all the information in the column \"text\" into a list.\n\n::: {.cell execution_count=10}\n``` {.python .cell-code}\nimport string\n\ndef get_ttr(text):\n if (pd.isnull(text)):\n return 1.1 # a ratio greater than 1 is impossible, so we won't count these when doing our averages\n else:\n text = text.lower()\n punctuations = \"-,.?!;#: \\n\\t\"\n no_punct = text.strip(punctuations)\n tokens = text.split()\n\n trial = 0\n avg_ttr = 0\n while (trial < 10):\n random_token_num = random.randrange(0, len(tokens)-1000)\n #sample = tokens[random_token_num:(random_token_num+1000)]\n sample = [word.translate(str.maketrans('', '', string.punctuation))\n for word in tokens[random_token_num:(random_token_num + 1000)]]\n #print(sample)\n trial += 1\n avg_ttr += float(len(set(sample)))/1000\n\n return avg_ttr/10\n\nimport csv\n\ndf = pd.read_csv(\"https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\", sep='\\t', header=0, low_memory=False)\ndf[\"ttr\"] = df[\"full_text\"].apply(get_ttr)\n\ncleaned = df[df[\"ttr\"] <= 1] # drop all rows where ttr is not applicable\ngrouped = cleaned.groupby('genre')\navg_ttr = grouped[\"ttr\"].mean().sort_values(ascending=False)\nprint(avg_ttr)\n```\n\n::: {.cell-output .cell-output-stdout}\n```\ngenre\npolitical 0.457617\nscifi 0.457122\nwar 0.454650\nhistory 0.451300\nfantasy 0.451065\nthrillers 0.446122\nbildung 0.444400\naction 0.443750\nna 0.443185\nautobio 0.442133\nallegories 0.433350\nromance 0.429827\nmystery 0.429700\nhorror 0.385900\nName: ttr, dtype: float64\n```\n:::\n:::\n\n\n::: {.cell execution_count=11}\n``` {.python .cell-code}\nsorted = cleaned.sort_values(by=['ttr'], ascending=False)\nprint(sorted[[\"title\", \"author\", \"ttr\", \"genre\"]].head(10).to_string(index=False))\n```\n\n::: {.cell-output .cell-output-stdout}\n```\n title author ttr genre\n Mrs. Dalloway Virginia Woolf 0.5098 na\n King of the Wind Marguerite Henry 0.5097 history\n Sophie's Choice William Styron 0.5041 bildung\n Dombey And Son Charles Dickens 0.5029 na\n The Cider House Rules John Irving 0.4981 bildung\n The King of Torts John Grisham 0.4957 thrillers\n The Lovely Bones Alice Sebold 0.4923 na\n A Wrinkle in Time Madeleine L'Engle 0.4914 scifi\n The Fault In Our Stars John Green 0.4912 romance\nThe Virginian: A Horseman of the Plains Owen Wister 0.4886 na\n```\n:::\n:::\n\n\nAs we've seen in this quick example, some authors or genres seem to use a wider variety of words. However, this is just a first step in exploring text analysis with ttr. We've made some simplifications, like assuming our 1000-word sample perfectly represents a whole novel, and we haven't delved into advanced techniques for parsing and cleaning text.\n\nFrom here, you dive deeper into the world of lexical diversity! You can continue using statistical methods or even feed this text into more sophisticated langauge models.\n\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis [here](?tab=discussion-%26-activities). \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\")\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container2\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n displayedColumns: [\n \"top_500_rank\",\n \"title\",\n \"author\",\n \"pub_year\",\n \"orig_lang\",\n \"genre\",\n \"author_birth\",\n \"author_death\",\n \"author_gender\",\n \"author_primary_lang\",\n \"author_nationality\",\n \"author_field_of_activity\",\n \"author_occupation\",\n \"oclc_holdings\",\n \"oclc_eholdings\",\n \"oclc_total_editions\",\n \"oclc_holdings_rank\",\n \"oclc_editions_rank\",\n \"gr_avg_rating\",\n \"gr_num_ratings\",\n \"gr_num_reviews\",\n \"gr_avg_rating_rank\",\n \"gr_num_ratings_rank\",\n \"oclc_owi\",\n \"author_viaf\",\n \"gr_url\",\n \"wiki_url\",\n \"pg_eng_url\",\n \"pg_orig_url\"\n ],\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n\n\n\n\n\n\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. \n\nIn our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. \n\nWhat other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n\n\n", "supporting": [ "top-500-novels_files/figure-pdf" ], diff --git a/website/.quarto/idx/datasets.qmd.json b/website/.quarto/idx/datasets.qmd.json index 1c98f02..183ed9f 100644 --- a/website/.quarto/idx/datasets.qmd.json +++ b/website/.quarto/idx/datasets.qmd.json @@ -1 +1 @@ -{"title":"Datasets","markdown":{"yaml":{"title":"Datasets","listing":{"contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"page-layout":"full","title-block-banner":true},"containsRefs":false,"markdown":"\n\n\n","srcMarkdownNoYaml":"\n\n\n"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"output-file":"datasets.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title":"Datasets","listing":{"contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"page-layout":"full","title-block-banner":true},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file +{"title":"Datasets","markdown":{"yaml":{"title":"Datasets","listing":{"contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"page-layout":"full","title-block-banner":true},"containsRefs":false,"markdown":"\n\n\n","srcMarkdownNoYaml":"\n\n\n"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":"auto","echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"output-file":"datasets.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title":"Datasets","listing":{"contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"page-layout":"full","title-block-banner":true},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file diff --git a/website/.quarto/idx/index.qmd.json b/website/.quarto/idx/index.qmd.json index b2e504b..9d4efe6 100644 --- a/website/.quarto/idx/index.qmd.json +++ b/website/.quarto/idx/index.qmd.json @@ -1 +1 @@ -{"title":"Responsible Datasets in Context","markdown":{"yaml":{"pagetitle":"Home","section-divs":false,"editor":"source","sidebar":false,"search":false,"listing":{"id":"datasets","contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities","audit"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"repo-actions":false,"description":"Responsible Datasets in Context\n","toc":false},"headingText":"Responsible Datasets in Context","containsRefs":false,"markdown":"\n\n\n::: {#hero-banner .column-screen}\n\n:::: grid\n:::: {.g-col-lg-8 .column-page}\n\n\n::::: { .overlay .content }\n\n\n\n```{=html}\nStar this project on Github\n```\nUnderstanding the social and historical context of data is essential for all responsible data work. \n\nWe host datasets that are paired with rich documentation, data essays, and teaching resources, all of which draw on context and humanities perspectives and methods.\n\nWe provide models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nLearn more about our [Datasets](datasets.qmd), [Team](team.qmd), [Mission](mission.qmd), and [Sponsors](sponsors.qmd). Find us on [GitHub](https://github.com/melaniewalsh/responsible-datasets-in-context) \n, or [get in touch](get-in-touch.qmd).\n\nThis website is in development and open to user feedback and discussion. To leave a comment, highlight any text, click \"Annotate,\" and log into/sign up for Hypothesis.\n:::::\n\n\n\n
Kobuk Valley National Park by U.S. NPS
\n\n::::\n\n\n::::\n\n\n\n:::\n\n\n\n\n\n---\n\n# Datasets\n\n::: {#datasets}\n:::","srcMarkdownNoYaml":"\n\n\n::: {#hero-banner .column-screen}\n\n:::: grid\n:::: {.g-col-lg-8 .column-page}\n\n\n::::: { .overlay .content }\n\n# Responsible Datasets in Context\n\n\n```{=html}\nStar this project on Github\n```\nUnderstanding the social and historical context of data is essential for all responsible data work. \n\nWe host datasets that are paired with rich documentation, data essays, and teaching resources, all of which draw on context and humanities perspectives and methods.\n\nWe provide models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nLearn more about our [Datasets](datasets.qmd), [Team](team.qmd), [Mission](mission.qmd), and [Sponsors](sponsors.qmd). Find us on [GitHub](https://github.com/melaniewalsh/responsible-datasets-in-context) \n, or [get in touch](get-in-touch.qmd).\n\nThis website is in development and open to user feedback and discussion. To leave a comment, highlight any text, click \"Annotate,\" and log into/sign up for Hypothesis.\n:::::\n\n\n\n
Kobuk Valley National Park by U.S. NPS
\n\n::::\n\n\n::::\n\n\n\n:::\n\n\n\n\n\n---\n\n# Datasets\n\n::: {#datasets}\n:::"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"section-divs":false,"toc":false,"output-file":"index.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"pagetitle":"Home","editor":"source","sidebar":false,"search":false,"listing":{"id":"datasets","contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities","audit"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"repo-actions":false,"description":"Responsible Datasets in Context\n"},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file +{"title":"Responsible Datasets in Context","markdown":{"yaml":{"pagetitle":"Home","section-divs":false,"editor":"source","sidebar":false,"search":false,"listing":{"id":"datasets","contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities","audit"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"repo-actions":false,"description":"Responsible Datasets in Context\n","toc":false},"headingText":"Responsible Datasets in Context","containsRefs":false,"markdown":"\n\n\n::: {#hero-banner .column-screen}\n\n:::: grid\n:::: {.g-col-lg-8 .column-page}\n\n\n::::: { .overlay .content }\n\n\n\n```{=html}\nStar this project on Github\n```\nUnderstanding the social and historical context of data is essential for all responsible data work. \n\nWe host datasets that are paired with rich documentation, data essays, and teaching resources, all of which draw on context and humanities perspectives and methods.\n\nWe provide models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nLearn more about our [Datasets](datasets.qmd), [Team](team.qmd), [Mission](mission.qmd), and [Sponsors](sponsors.qmd). Find us on [GitHub](https://github.com/melaniewalsh/responsible-datasets-in-context) \n, or [get in touch](get-in-touch.qmd).\n\nThis website is in development and open to user feedback and discussion. To leave a comment, highlight any text, click \"Annotate,\" and log into/sign up for Hypothesis.\n:::::\n\n\n\n
Kobuk Valley National Park by U.S. NPS
\n\n::::\n\n\n::::\n\n\n\n:::\n\n\n\n\n\n---\n\n# Datasets\n\n::: {#datasets}\n:::","srcMarkdownNoYaml":"\n\n\n::: {#hero-banner .column-screen}\n\n:::: grid\n:::: {.g-col-lg-8 .column-page}\n\n\n::::: { .overlay .content }\n\n# Responsible Datasets in Context\n\n\n```{=html}\nStar this project on Github\n```\nUnderstanding the social and historical context of data is essential for all responsible data work. \n\nWe host datasets that are paired with rich documentation, data essays, and teaching resources, all of which draw on context and humanities perspectives and methods.\n\nWe provide models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nLearn more about our [Datasets](datasets.qmd), [Team](team.qmd), [Mission](mission.qmd), and [Sponsors](sponsors.qmd). Find us on [GitHub](https://github.com/melaniewalsh/responsible-datasets-in-context) \n, or [get in touch](get-in-touch.qmd).\n\nThis website is in development and open to user feedback and discussion. To leave a comment, highlight any text, click \"Annotate,\" and log into/sign up for Hypothesis.\n:::::\n\n\n\n
Kobuk Valley National Park by U.S. NPS
\n\n::::\n\n\n::::\n\n\n\n:::\n\n\n\n\n\n---\n\n# Datasets\n\n::: {#datasets}\n:::"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":"auto","echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"section-divs":false,"toc":false,"output-file":"index.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"pagetitle":"Home","editor":"source","sidebar":false,"search":false,"listing":{"id":"datasets","contents":"posts","exclude":{"categories":["exercise","solution","included-content","discussion","activities","audit"],"title":"National Park Visitation Data"},"sort":"date asc","type":"default","categories":"unnumbered","sort-ui":false,"filter-ui":true,"image-height":"200px"},"repo-actions":false,"description":"Responsible Datasets in Context\n"},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file diff --git a/website/.quarto/idx/mission.qmd.json b/website/.quarto/idx/mission.qmd.json index 8e6341f..486b61e 100644 --- a/website/.quarto/idx/mission.qmd.json +++ b/website/.quarto/idx/mission.qmd.json @@ -1 +1 @@ -{"title":"Mission","markdown":{"yaml":{"title":"Mission","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","toc":true,"title-block-banner":true,"bibliography":"references/references.bib"},"headingText":"Our Goals","containsRefs":false,"markdown":"\n\nData cannot be analyzed responsibly without deep knowledge of its social and historical context, provenance, and limitations. Anyone who works with data---from academic researchers to industry professionals---will know this claim to be true. \n\nBut despite its significance, social and historical knowledge and methodologies are one of the most ***neglected*** areas in undergraduate computing education. In classes, it is very common for students to use datasets that they find on websites like Kaggle, datasets that are poorly documented and that students thus don’t fully understand. This is a recipe for irresponsible data work and a bad habit that can become a dangerous habit as the stakes get higher.\n\nOur project, **“Responsible Datasets in Context: Collaboratively Designing for Ethical Humanities Data Education,”** seeks to strengthen students’ capacity to work with data responsibly. We provide curated datasets that are carefully documented and paired with long-form essays, which both explore and interrogate each dataset’s construction, history, quirks, flaws, and strengths from different humanistic perspectives. We thus provide useable datasets and models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nAdditionally, we offer lesson plans, programming exercises, discussion questions, and activities that can help instructors integrate our datasets into their teaching. Beyond our specific educational goals, we also hope these datasets, essays, and accompanying materials will be useful and informative for the broader public.\n\n## Related Work\n\nOur project builds on foundational papers and projects that have addressed the urgency of dataset documentation and documentation broadly.\n\n- Datasheets for Datasets: @gebru_datasheets_2021\n- Data Statements for NLP: @bender_data_2018\n- Model Cards for Model Reporting: @mitchell_model_2019\n- [HuggingFace Dataset Cards](https://huggingface.co/docs/hub/en/datasets-cards) \n- FAIR Guiding Principles: @wilkinson_fair_2016\n- Cultural Data Collectives: [Post45 Data Collective](https://data.post45.org/), [C19 Data Collective](https://c19datacollective.com/)\n\n## Our Data Essays\n\nThe general structure of our data essays are inspired by Heather Krause's concept of [a data biography.](https://gijn.org/stories/data-biographies-getting-to-know-your-data/) \n\nA data essay will and should differ depending on the data it describes, but most of our data essays try to address the following questions:\n\n- What is the historical context of the data?\n- Where did the data come from? Who collected it?\n- Why was the data collected?\n- How was the data collected?\n- How is the data used?\n- What’s in the data?\n- What “counts” as a data point?\n- What data is missing?\n- How is uncertainty handled?\n\n## Our Data Principles\n\nBased on our work and conversations, we also offer the following principles to help guide ethically responsible dataset curation, consumption, and analysis:\n\n#### Tell the Data’s Story / Know the Data’s Story\n\nAs scholars like Johanna Drucker and others have been arguing for more than a decade, data is not simply objectively “there” in the world. Datasets have human-oriented stories behind them and implicit within them, and the stories of how and why data was created ought to be integrally connected to the datasets themselves. \n\nWhat are the constraints of the source material? What material might be simply absent from the historical record, and how do those absences shape what data we can effectively construct? Also, where are there elements of uncertainty or fuzziness in the data? If choices had to be made regarding, for instance, the dating of a creative work, how were those choices made, and why?\n\n#### Provide Metadata / Understand Metadata\n\nMetadata is often overlooked. But understanding what each data point and feature represents is fundamental to ethically responsible data work, so it is important to gives users a way to access and understand that metadata. Which categories were deemed important to catalog and measure, and which were excluded? If gender is an aspect of metadata, is gender only available under binarized categories? Is race included or discussed – and why?\n\n#### Touch Every Data Point\n\nFor creators and users of datasets, it is important to actually explore and try out datasets to make sure they’re accurate and glitch-free, and that they represent what we think they represent---in other words, it is important to actually open a dataset in Excel, Google Sheets, etc., and examine individual cells. When data is too large for these kinds of applications, it is important to examine individual data points in other ways. This is a basic yet surprisingly radical concept! It is especially important when we use automated processes to create datasets, like web scraping, which are also more likely to distance us from individual data points.\n\n#### Consider When Data Should Remain Off-Limits or Private\n\nThere is a growing movement in data science to think carefully about who can ethically access certain kinds of data. Representations of tribal rituals among indigenous communities are often only meant for members of those communities, so accessing photographs or other sorts of quantitative data about that traditional knowledge should probably be restricted. Projects like [Mukurtu](https://mukurtu.org/) have specifically addressed this issue and developed platforms where communities can choose who they share their data with.\n\nSimilarly, the editors of sites like the [Colored Conventions Project](https://coloredconventions.org/) have argued that data about enslaved people and their descendents has historically “served in the processes and recording of the destruction and devaluation of Black lives and communities.” They maintain that there is an urgent need to affirm “the Black humanity inherent in Black data/curation.” In other words, when data is about real people who may have been marginalized or oppressed, it is important that those people be named and recognized.","srcMarkdownNoYaml":"\n\n## Our Goals\nData cannot be analyzed responsibly without deep knowledge of its social and historical context, provenance, and limitations. Anyone who works with data---from academic researchers to industry professionals---will know this claim to be true. \n\nBut despite its significance, social and historical knowledge and methodologies are one of the most ***neglected*** areas in undergraduate computing education. In classes, it is very common for students to use datasets that they find on websites like Kaggle, datasets that are poorly documented and that students thus don’t fully understand. This is a recipe for irresponsible data work and a bad habit that can become a dangerous habit as the stakes get higher.\n\nOur project, **“Responsible Datasets in Context: Collaboratively Designing for Ethical Humanities Data Education,”** seeks to strengthen students’ capacity to work with data responsibly. We provide curated datasets that are carefully documented and paired with long-form essays, which both explore and interrogate each dataset’s construction, history, quirks, flaws, and strengths from different humanistic perspectives. We thus provide useable datasets and models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nAdditionally, we offer lesson plans, programming exercises, discussion questions, and activities that can help instructors integrate our datasets into their teaching. Beyond our specific educational goals, we also hope these datasets, essays, and accompanying materials will be useful and informative for the broader public.\n\n## Related Work\n\nOur project builds on foundational papers and projects that have addressed the urgency of dataset documentation and documentation broadly.\n\n- Datasheets for Datasets: @gebru_datasheets_2021\n- Data Statements for NLP: @bender_data_2018\n- Model Cards for Model Reporting: @mitchell_model_2019\n- [HuggingFace Dataset Cards](https://huggingface.co/docs/hub/en/datasets-cards) \n- FAIR Guiding Principles: @wilkinson_fair_2016\n- Cultural Data Collectives: [Post45 Data Collective](https://data.post45.org/), [C19 Data Collective](https://c19datacollective.com/)\n\n## Our Data Essays\n\nThe general structure of our data essays are inspired by Heather Krause's concept of [a data biography.](https://gijn.org/stories/data-biographies-getting-to-know-your-data/) \n\nA data essay will and should differ depending on the data it describes, but most of our data essays try to address the following questions:\n\n- What is the historical context of the data?\n- Where did the data come from? Who collected it?\n- Why was the data collected?\n- How was the data collected?\n- How is the data used?\n- What’s in the data?\n- What “counts” as a data point?\n- What data is missing?\n- How is uncertainty handled?\n\n## Our Data Principles\n\nBased on our work and conversations, we also offer the following principles to help guide ethically responsible dataset curation, consumption, and analysis:\n\n#### Tell the Data’s Story / Know the Data’s Story\n\nAs scholars like Johanna Drucker and others have been arguing for more than a decade, data is not simply objectively “there” in the world. Datasets have human-oriented stories behind them and implicit within them, and the stories of how and why data was created ought to be integrally connected to the datasets themselves. \n\nWhat are the constraints of the source material? What material might be simply absent from the historical record, and how do those absences shape what data we can effectively construct? Also, where are there elements of uncertainty or fuzziness in the data? If choices had to be made regarding, for instance, the dating of a creative work, how were those choices made, and why?\n\n#### Provide Metadata / Understand Metadata\n\nMetadata is often overlooked. But understanding what each data point and feature represents is fundamental to ethically responsible data work, so it is important to gives users a way to access and understand that metadata. Which categories were deemed important to catalog and measure, and which were excluded? If gender is an aspect of metadata, is gender only available under binarized categories? Is race included or discussed – and why?\n\n#### Touch Every Data Point\n\nFor creators and users of datasets, it is important to actually explore and try out datasets to make sure they’re accurate and glitch-free, and that they represent what we think they represent---in other words, it is important to actually open a dataset in Excel, Google Sheets, etc., and examine individual cells. When data is too large for these kinds of applications, it is important to examine individual data points in other ways. This is a basic yet surprisingly radical concept! It is especially important when we use automated processes to create datasets, like web scraping, which are also more likely to distance us from individual data points.\n\n#### Consider When Data Should Remain Off-Limits or Private\n\nThere is a growing movement in data science to think carefully about who can ethically access certain kinds of data. Representations of tribal rituals among indigenous communities are often only meant for members of those communities, so accessing photographs or other sorts of quantitative data about that traditional knowledge should probably be restricted. Projects like [Mukurtu](https://mukurtu.org/) have specifically addressed this issue and developed platforms where communities can choose who they share their data with.\n\nSimilarly, the editors of sites like the [Colored Conventions Project](https://coloredconventions.org/) have argued that data about enslaved people and their descendents has historically “served in the processes and recording of the destruction and devaluation of Black lives and communities.” They maintain that there is an urgent need to affirm “the Black humanity inherent in Black data/curation.” In other words, when data is about real people who may have been marginalized or oppressed, it is important that those people be named and recognized."},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"toc":true,"output-file":"mission.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title":"Mission","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","title-block-banner":true,"bibliography":["references/references.bib"]},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file +{"title":"Mission","markdown":{"yaml":{"title":"Mission","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","toc":true,"title-block-banner":true,"bibliography":"references/references.bib"},"headingText":"Our Goals","containsRefs":false,"markdown":"\n\nData cannot be analyzed responsibly without deep knowledge of its social and historical context, provenance, and limitations. Anyone who works with data---from academic researchers to industry professionals---will know this claim to be true. \n\nBut despite its significance, social and historical knowledge and methodologies are one of the most ***neglected*** areas in undergraduate computing education. In classes, it is very common for students to use datasets that they find on websites like Kaggle, datasets that are poorly documented and that students thus don’t fully understand. This is a recipe for irresponsible data work and a bad habit that can become a dangerous habit as the stakes get higher.\n\nOur project, **“Responsible Datasets in Context: Collaboratively Designing for Ethical Humanities Data Education,”** seeks to strengthen students’ capacity to work with data responsibly. We provide curated datasets that are carefully documented and paired with long-form essays, which both explore and interrogate each dataset’s construction, history, quirks, flaws, and strengths from different humanistic perspectives. We thus provide useable datasets and models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nAdditionally, we offer lesson plans, programming exercises, discussion questions, and activities that can help instructors integrate our datasets into their teaching. Beyond our specific educational goals, we also hope these datasets, essays, and accompanying materials will be useful and informative for the broader public.\n\n## Related Work\n\nOur project builds on foundational papers and projects that have addressed the urgency of dataset documentation and documentation broadly.\n\n- Datasheets for Datasets: @gebru_datasheets_2021\n- Data Statements for NLP: @bender_data_2018\n- Model Cards for Model Reporting: @mitchell_model_2019\n- [HuggingFace Dataset Cards](https://huggingface.co/docs/hub/en/datasets-cards) \n- FAIR Guiding Principles: @wilkinson_fair_2016\n- Cultural Data Collectives: [Post45 Data Collective](https://data.post45.org/), [C19 Data Collective](https://c19datacollective.com/)\n\n## Our Data Essays\n\nThe general structure of our data essays are inspired by Heather Krause's concept of [a data biography.](https://gijn.org/stories/data-biographies-getting-to-know-your-data/) \n\nA data essay will and should differ depending on the data it describes, but most of our data essays try to address the following questions:\n\n- What is the historical context of the data?\n- Where did the data come from? Who collected it?\n- Why was the data collected?\n- How was the data collected?\n- How is the data used?\n- What’s in the data?\n- What “counts” as a data point?\n- What data is missing?\n- How is uncertainty handled?\n\n## Our Data Principles\n\nBased on our work and conversations, we also offer the following principles to help guide ethically responsible dataset curation, consumption, and analysis:\n\n#### Tell the Data’s Story / Know the Data’s Story\n\nAs scholars like Johanna Drucker and others have been arguing for more than a decade, data is not simply objectively “there” in the world. Datasets have human-oriented stories behind them and implicit within them, and the stories of how and why data was created ought to be integrally connected to the datasets themselves. \n\nWhat are the constraints of the source material? What material might be simply absent from the historical record, and how do those absences shape what data we can effectively construct? Also, where are there elements of uncertainty or fuzziness in the data? If choices had to be made regarding, for instance, the dating of a creative work, how were those choices made, and why?\n\n#### Provide Metadata / Understand Metadata\n\nMetadata is often overlooked. But understanding what each data point and feature represents is fundamental to ethically responsible data work, so it is important to gives users a way to access and understand that metadata. Which categories were deemed important to catalog and measure, and which were excluded? If gender is an aspect of metadata, is gender only available under binarized categories? Is race included or discussed – and why?\n\n#### Touch Every Data Point\n\nFor creators and users of datasets, it is important to actually explore and try out datasets to make sure they’re accurate and glitch-free, and that they represent what we think they represent---in other words, it is important to actually open a dataset in Excel, Google Sheets, etc., and examine individual cells. When data is too large for these kinds of applications, it is important to examine individual data points in other ways. This is a basic yet surprisingly radical concept! It is especially important when we use automated processes to create datasets, like web scraping, which are also more likely to distance us from individual data points.\n\n#### Consider When Data Should Remain Off-Limits or Private\n\nThere is a growing movement in data science to think carefully about who can ethically access certain kinds of data. Representations of tribal rituals among indigenous communities are often only meant for members of those communities, so accessing photographs or other sorts of quantitative data about that traditional knowledge should probably be restricted. Projects like [Mukurtu](https://mukurtu.org/) have specifically addressed this issue and developed platforms where communities can choose who they share their data with.\n\nSimilarly, the editors of sites like the [Colored Conventions Project](https://coloredconventions.org/) have argued that data about enslaved people and their descendents has historically “served in the processes and recording of the destruction and devaluation of Black lives and communities.” They maintain that there is an urgent need to affirm “the Black humanity inherent in Black data/curation.” In other words, when data is about real people who may have been marginalized or oppressed, it is important that those people be named and recognized.","srcMarkdownNoYaml":"\n\n## Our Goals\nData cannot be analyzed responsibly without deep knowledge of its social and historical context, provenance, and limitations. Anyone who works with data---from academic researchers to industry professionals---will know this claim to be true. \n\nBut despite its significance, social and historical knowledge and methodologies are one of the most ***neglected*** areas in undergraduate computing education. In classes, it is very common for students to use datasets that they find on websites like Kaggle, datasets that are poorly documented and that students thus don’t fully understand. This is a recipe for irresponsible data work and a bad habit that can become a dangerous habit as the stakes get higher.\n\nOur project, **“Responsible Datasets in Context: Collaboratively Designing for Ethical Humanities Data Education,”** seeks to strengthen students’ capacity to work with data responsibly. We provide curated datasets that are carefully documented and paired with long-form essays, which both explore and interrogate each dataset’s construction, history, quirks, flaws, and strengths from different humanistic perspectives. We thus provide useable datasets and models for responsible data curation, documentation, story-telling, and analysis.\n\n\n\nAdditionally, we offer lesson plans, programming exercises, discussion questions, and activities that can help instructors integrate our datasets into their teaching. Beyond our specific educational goals, we also hope these datasets, essays, and accompanying materials will be useful and informative for the broader public.\n\n## Related Work\n\nOur project builds on foundational papers and projects that have addressed the urgency of dataset documentation and documentation broadly.\n\n- Datasheets for Datasets: @gebru_datasheets_2021\n- Data Statements for NLP: @bender_data_2018\n- Model Cards for Model Reporting: @mitchell_model_2019\n- [HuggingFace Dataset Cards](https://huggingface.co/docs/hub/en/datasets-cards) \n- FAIR Guiding Principles: @wilkinson_fair_2016\n- Cultural Data Collectives: [Post45 Data Collective](https://data.post45.org/), [C19 Data Collective](https://c19datacollective.com/)\n\n## Our Data Essays\n\nThe general structure of our data essays are inspired by Heather Krause's concept of [a data biography.](https://gijn.org/stories/data-biographies-getting-to-know-your-data/) \n\nA data essay will and should differ depending on the data it describes, but most of our data essays try to address the following questions:\n\n- What is the historical context of the data?\n- Where did the data come from? Who collected it?\n- Why was the data collected?\n- How was the data collected?\n- How is the data used?\n- What’s in the data?\n- What “counts” as a data point?\n- What data is missing?\n- How is uncertainty handled?\n\n## Our Data Principles\n\nBased on our work and conversations, we also offer the following principles to help guide ethically responsible dataset curation, consumption, and analysis:\n\n#### Tell the Data’s Story / Know the Data’s Story\n\nAs scholars like Johanna Drucker and others have been arguing for more than a decade, data is not simply objectively “there” in the world. Datasets have human-oriented stories behind them and implicit within them, and the stories of how and why data was created ought to be integrally connected to the datasets themselves. \n\nWhat are the constraints of the source material? What material might be simply absent from the historical record, and how do those absences shape what data we can effectively construct? Also, where are there elements of uncertainty or fuzziness in the data? If choices had to be made regarding, for instance, the dating of a creative work, how were those choices made, and why?\n\n#### Provide Metadata / Understand Metadata\n\nMetadata is often overlooked. But understanding what each data point and feature represents is fundamental to ethically responsible data work, so it is important to gives users a way to access and understand that metadata. Which categories were deemed important to catalog and measure, and which were excluded? If gender is an aspect of metadata, is gender only available under binarized categories? Is race included or discussed – and why?\n\n#### Touch Every Data Point\n\nFor creators and users of datasets, it is important to actually explore and try out datasets to make sure they’re accurate and glitch-free, and that they represent what we think they represent---in other words, it is important to actually open a dataset in Excel, Google Sheets, etc., and examine individual cells. When data is too large for these kinds of applications, it is important to examine individual data points in other ways. This is a basic yet surprisingly radical concept! It is especially important when we use automated processes to create datasets, like web scraping, which are also more likely to distance us from individual data points.\n\n#### Consider When Data Should Remain Off-Limits or Private\n\nThere is a growing movement in data science to think carefully about who can ethically access certain kinds of data. Representations of tribal rituals among indigenous communities are often only meant for members of those communities, so accessing photographs or other sorts of quantitative data about that traditional knowledge should probably be restricted. Projects like [Mukurtu](https://mukurtu.org/) have specifically addressed this issue and developed platforms where communities can choose who they share their data with.\n\nSimilarly, the editors of sites like the [Colored Conventions Project](https://coloredconventions.org/) have argued that data about enslaved people and their descendents has historically “served in the processes and recording of the destruction and devaluation of Black lives and communities.” They maintain that there is an urgent need to affirm “the Black humanity inherent in Black data/curation.” In other words, when data is about real people who may have been marginalized or oppressed, it is important that those people be named and recognized."},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":"auto","echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"toc":true,"output-file":"mission.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title":"Mission","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","title-block-banner":true,"bibliography":["references/references.bib"]},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file diff --git a/website/.quarto/idx/posts/top-500-novels/top-500-novels.qmd.json b/website/.quarto/idx/posts/top-500-novels/top-500-novels.qmd.json index 26dea4c..06d821d 100644 --- a/website/.quarto/idx/posts/top-500-novels/top-500-novels.qmd.json +++ b/website/.quarto/idx/posts/top-500-novels/top-500-novels.qmd.json @@ -1 +1 @@ -{"title":"Top 500 \"Greatest\" Novels (1021-2015)","markdown":{"yaml":{"title":"Top 500 \"Greatest\" Novels (1021-2015)","author":"Anna Preus and Aashna Sheth","format":{"html":{"css":"../../styles.css"},"pdf":"default"},"listing":{"id":"exercise-posts","contents":"exercises","exclude":{"categories":"dataset"},"sort":"date desc","type":"table","fields":["date","title","categories"],"categories":false,"sort-ui":false,"filter-ui":true,"image-height":"200px"},"date":"2024-07","categories":["libraries","literature","readers","gender","metadata","full-text","public domain"],"image":"images/library-top-500-screenshot.png","format-links":["pdf","docx","ipynb"],"code-fold":true,"editor":"visual","df-print":"kable","jupyter":"python3","code-tools":true,"bibliography":"../../references/references.bib"},"headingText":"Data Essay","headingAttr":{"id":"data-essay","classes":[],"keyvalue":[]},"containsRefs":true,"markdown":"\n\n::: {.panel-tabset .nav-pills}\n\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n```{python}\n\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n\n```\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n```{python}\n\ndf[\"author_nationality\"].value_counts(dropna=False)\n\n```\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n```{python}\n\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n\n```\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n```{python}\n\ndf[\"author\"].value_counts(dropna=False).head(10)\n\n```\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n```{python}\n\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n\n```\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n```{python}\n\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n\n```\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [colab notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n```{python}\n\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n\n```\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n```{python}\n\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n\n```\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis in this [Colab notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis here [LINK_TO_ACTIVITIES_TAB]. \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof alldataSummaryView, viewof allcopyUrlButton, viewof allselectedColumns, viewof alldataUrl, viewof alltableOptions, viewof alldataSet, alltableContainer, alltable} from \"d5aded95854ada9d\"\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//viewof dataUrl\n//|error: false\n//|warning: false\nalltableContainer\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//tableContainer\n//|error: false\n//|warning: false\nviewof alltableOptions\nviewof allcopyUrlButton\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n//|error: false\n//|warning: false\nalltable\n```\n\n\n```{ojs}\n//|echo: false\n//|error: false\n//|warning: false\n\nviewof allselectedColumns\nviewof alldataSummaryView\n```\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis colab notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. In our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. What other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n","srcMarkdownNoYaml":"\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay}\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n```{python}\n\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n\n```\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n```{python}\n\ndf[\"author_nationality\"].value_counts(dropna=False)\n\n```\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n```{python}\n\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n\n```\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n```{python}\n\ndf[\"author\"].value_counts(dropna=False).head(10)\n\n```\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n```{python}\n\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n\n```\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n```{python}\n\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n\n```\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [colab notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n```{python}\n\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n\n```\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n```{python}\n\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n\n```\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis in this [Colab notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis here [LINK_TO_ACTIVITIES_TAB]. \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof alldataSummaryView, viewof allcopyUrlButton, viewof allselectedColumns, viewof alldataUrl, viewof alltableOptions, viewof alldataSet, alltableContainer, alltable} from \"d5aded95854ada9d\"\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//viewof dataUrl\n//|error: false\n//|warning: false\nalltableContainer\n```\n\n```{ojs}\n//|echo: false\n// viewof dataSet\n//tableContainer\n//|error: false\n//|warning: false\nviewof alltableOptions\nviewof allcopyUrlButton\n```\n\n```{ojs}\n//|echo: false\n//|output: false\n//|error: false\n//|warning: false\nalltable\n```\n\n\n```{ojs}\n//|echo: false\n//|error: false\n//|warning: false\n\nviewof allselectedColumns\nviewof alldataSummaryView\n```\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis colab notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](https://colab.research.google.com/drive/1fxEae0BmUmipDQC2qvqGvG11fIAITZ_K?usp=sharing) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. In our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. What other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"kable","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"jupyter"},"render":{"0":{"team":{"output-dir":"../../../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":true,"code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":true,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true,"format-links":["pdf","docx","ipynb"]},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["../../styles.css"],"include-in-header":["../../custom-footnotes.js","../../tabs-tocs.js","../../fontawesome.js"],"include-after-body":["../../tabs-to-urls.js"],"output-file":"top-500-novels.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title-block-banner":true,"title":"Top 500 \"Greatest\" Novels (1021-2015)","author":"Anna Preus and Aashna Sheth","listing":{"id":"exercise-posts","contents":"exercises","exclude":{"categories":"dataset"},"sort":"date desc","type":"table","fields":["date","title","categories"],"categories":false,"sort-ui":false,"filter-ui":true,"image-height":"200px"},"date":"2024-07","categories":["libraries","literature","readers","gender","metadata","full-text","public domain"],"image":"images/library-top-500-screenshot.png","editor":"visual","jupyter":"python3","bibliography":["../../references/references.bib"]},"extensions":{"book":{"multiFile":true}}},"pdf":{"identifier":{"display-name":"PDF","target-format":"pdf","base-format":"pdf"},"execute":{"fig-width":5.5,"fig-height":3.5,"fig-format":"pdf","fig-dpi":300,"df-print":"kable","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"jupyter"},"render":{"0":{"team":{"output-dir":"../../../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"pdf","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":true,"code-overflow":"scroll","code-link":false,"code-line-numbers":false,"code-tools":true,"tbl-colwidths":true,"merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"format-links":["pdf","docx","ipynb"]},"pandoc":{"pdf-engine":"xelatex","standalone":true,"variables":{"graphics":true,"tables":true},"default-image-extension":"pdf","to":"pdf","output-file":"top-500-novels.pdf"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"block-headings":true,"comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"title-block-banner":true,"title":"Top 500 \"Greatest\" Novels (1021-2015)","author":"Anna Preus and Aashna Sheth","listing":{"id":"exercise-posts","contents":"exercises","exclude":{"categories":"dataset"},"sort":"date desc","type":"table","fields":["date","title","categories"],"categories":false,"sort-ui":false,"filter-ui":true,"image-height":"200px"},"date":"2024-07","categories":["libraries","literature","readers","gender","metadata","full-text","public domain"],"image":"images/library-top-500-screenshot.png","editor":"visual","jupyter":"python3","bibliography":["../../references/references.bib"]},"extensions":{"book":{"selfContainedOutput":true}}}},"projectFormats":["html"]} \ No newline at end of file +{"title":"Top 500 \"Greatest\" Novels (1021-2015)","markdown":{"yaml":{"title":"Top 500 \"Greatest\" Novels (1021-2015)","author":"Anna Preus and Aashna Sheth","format":{"html":{"css":"../../styles.css"},"pdf":"default"},"listing":{"id":"exercise-posts","contents":"exercises","exclude":{"categories":"dataset"},"sort":"date desc","type":"table","fields":["date","title","categories"],"categories":false,"sort-ui":false,"filter-ui":true,"image-height":"200px"},"date":"2024-07","categories":["libraries","literature","readers","gender","metadata","full-text","public domain"],"image":"images/library-top-500-screenshot.png","format-links":["pdf","docx","ipynb"],"code-fold":true,"editor":"visual","df-print":"kable","jupyter":"python3","code-tools":true,"bibliography":"../../references/references.bib"},"headingText":"Data Essay","headingAttr":{"id":"data-essay","classes":[],"keyvalue":[]},"containsRefs":true,"markdown":"\n\n::: {.panel-tabset .nav-pills}\n\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n\n\n\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n```{python}\n\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n\n```\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n```{python}\n\ndf[\"author_nationality\"].value_counts(dropna=False)\n\n```\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n```{python}\n\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n\n```\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n```{python}\n\ndf[\"author\"].value_counts(dropna=False).head(10)\n\n```\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n```{python}\n\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n\n```\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n```{python}\n\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n\n```\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [notebook](exercises/Metadata_Analysis.html).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n```{python}\n\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n\n```\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n```{python}\n\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n\n```\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis here, but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: [https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv](https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv)\n\n```{python}\nimport pandas as pd\nimport requests\nimport re\nfrom bs4 import BeautifulSoup\nimport random\n```\n\nLet's start by analyzing the type-token ratio of our texts by genre. The type-token ratio will tell us which genres contain the most unique words.\n\nThe type-token ratio is a simple expression that calculates `# of unique words / total words in a selection`. As you may be able to surmise, sometimes this ratio is naturally higher for shorter books. To avoid this bias, we randomly select a contiguous 1000 word sample from each book and average the scores across genres.\n\nIt's helpful to be able to store all of our data in a dataframe, but sometimes we want to work with just one column of the data and converting it into a different datatype can be helpful. Here we're converting all the information in the column \"text\" into a list.\n\n```{python}\n#|error: false\n#|warning: false\n#|echo: true\n\nimport string\n\ndef get_ttr(text):\n if (pd.isnull(text)):\n return 1.1 # a ratio greater than 1 is impossible, so we won't count these when doing our averages\n else:\n text = text.lower()\n punctuations = \"-,.?!;#: \\n\\t\"\n no_punct = text.strip(punctuations)\n tokens = text.split()\n\n trial = 0\n avg_ttr = 0\n while (trial < 10):\n random_token_num = random.randrange(0, len(tokens)-1000)\n #sample = tokens[random_token_num:(random_token_num+1000)]\n sample = [word.translate(str.maketrans('', '', string.punctuation))\n for word in tokens[random_token_num:(random_token_num + 1000)]]\n #print(sample)\n trial += 1\n avg_ttr += float(len(set(sample)))/1000\n\n return avg_ttr/10\n\nimport csv\n\ndf = pd.read_csv(\"https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\", sep='\\t', header=0, low_memory=False)\ndf[\"ttr\"] = df[\"full_text\"].apply(get_ttr)\n\ncleaned = df[df[\"ttr\"] <= 1] # drop all rows where ttr is not applicable\ngrouped = cleaned.groupby('genre')\navg_ttr = grouped[\"ttr\"].mean().sort_values(ascending=False)\nprint(avg_ttr)\n```\n\n```{python}\nsorted = cleaned.sort_values(by=['ttr'], ascending=False)\nprint(sorted[[\"title\", \"author\", \"ttr\", \"genre\"]].head(10).to_string(index=False))\n```\n\nAs we've seen in this quick example, some authors or genres seem to use a wider variety of words. However, this is just a first step in exploring text analysis with ttr. We've made some simplifications, like assuming our 1000-word sample perfectly represents a whole novel, and we haven't delved into advanced techniques for parsing and cleaning text.\n\nFrom here, you dive deeper into the world of lexical diversity! You can continue using statistical methods or even feed this text into more sophisticated langauge models.\n\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis [here](?tab=discussion-%26-activities). \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container2\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n displayedColumns: [\n \"top_500_rank\",\n \"title\",\n \"author\",\n \"pub_year\",\n \"orig_lang\",\n \"genre\",\n \"author_birth\",\n \"author_death\",\n \"author_gender\",\n \"author_primary_lang\",\n \"author_nationality\",\n \"author_field_of_activity\",\n \"author_occupation\",\n \"oclc_holdings\",\n \"oclc_eholdings\",\n \"oclc_total_editions\",\n \"oclc_holdings_rank\",\n \"oclc_editions_rank\",\n \"gr_avg_rating\",\n \"gr_num_ratings\",\n \"gr_num_reviews\",\n \"gr_avg_rating_rank\",\n \"gr_num_ratings_rank\",\n \"oclc_owi\",\n \"author_viaf\",\n \"gr_url\",\n \"wiki_url\",\n \"pg_eng_url\",\n \"pg_orig_url\"\n ],\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. \n\nIn our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. \n\nWhat other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n","srcMarkdownNoYaml":"\n\n::: {.panel-tabset .nav-pills}\n\n# Data Essay {#data-essay}\n\n## Introduction\n\nThis dataset contains information on the top 500 novels most widely held in libraries, according to [OCLC](https://www.oclc.org/en/about.html?cmpid=md_ab), a library organization with over 16,000 member libraries in over 100 countries. The dataset includes information on authors’ biographies, library holdings, and online engagement for each novel, as well as the full text for all works that are not currently under copyright (190 novels).\n\n::: {.callout-tip icon=false}\n## Brief Survey\nIf you use our materials in your class or another setting, we would love to [hear about it](https://forms.gle/yJpQscUH9k9Rn4Qy9)!\n:::\n\n-------\n\n\n\n\n\n\n\n\n```{ojs}\n//|echo: false\nimport {viewof dataSummaryView, Tabulator, viewof selectedColumns, viewof dataSet, tableContainer, fetchData, generateTabulatorTableFromCSV, progress, progressbar} from \"8bb63a6cde9addff\"\n```\n\n\n\n\n\n```{ojs}\n//|echo: false\n//|output: false\nraw_data = fetchData(\"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.tsv\")\n```\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container4\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n // displayedColumns: [\"top_500_rank\",\n // \"title\",\n // \"author\",\n // \"pub_year\",\n // \"orig_lang\",\n // \"genre\",\n // \"author_birth\",\n // \"author_death\",\n // \"author_gender\",\n // \"author_primary_lang\",\n // \"author_nationality\",\n // \"author_field_of_activity\",\n // \"author_occupation\",\n // \"oclc_holdings\",\n // \"oclc_eholdings\",\n // \"oclc_total_editions\",\n // \"oclc_holdings_rank\",\n // \"oclc_editions_rank\",\n // \"gr_avg_rating\",\n // \"gr_num_ratings\",\n // \"gr_num_reviews\",\n // \"gr_avg_rating_rank\",\n // \"gr_num_ratings_rank\",\n // \"oclc_owi\",\n // \"author_viaf\",\n // \"gr_url\",\n // \"wiki_url\",\n // \"pg_eng_url\",\n // \"pg_orig_url\"],\n\n// columnPopups: [\n// \"Shortened title of the work\", // shorttitle\n// \"Inferred date of the work\", // inferreddate\n// \"Author of the work\", // author\n// \"Unique record ID\", // recordid\n// \"Rights code from HathiTrust\", // hathi_rights\n// \"Genres associated with the work\", // genres\n// \"Unique identifier for the title in the titles dataset (may contain duplicates for reprinted works)\", // id\n// \"Unique volume ID from HathiTrust\", // docid (htid)\n// \"Probability that the work is for a juvenile audience\", // juvenileprob\n// \"Probability that the work is nonfiction\", // nonficprob\n// \"Author’s authorized Name Authority Cooperative (NACO) heading\", // author_authorized_heading\n// \"Author’s LCCN from id.loc.gov\", // author_lccn\n// \"Author’s viaf.org cluster number\", // author_viaf\n// \"Author’s Wikidata Q number\" // author_wikidata_qid\n// ],\n // columnWidths: { \"gender\": \"50px\", \"role\": \"75px\", \"mfa_degree\": \"100px\", \"prize_name\": \"100px\" },\n // currencyColumns: [\"prize_amount\"],\n // categoryColumns: [\"hathi_rights\", \"genres\",\"geographics\"],\n // sortColumns: [\"prize_year\"],\n // sortOrders: [\"desc\"]\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n::: {.callout-tip icon=false}\n## Creative Commons License\n

This work is licensed under CC BY 4.0\"\"\"\"

\n\n:::\n\n\n\n\n\n----- \n\nThis dataset is based on a list of the [Top 500 Novels](https://www.oclc.org/en/worldcat/library100/top500.html) compiled by OCLC from information in their online database [WorldCat](https://search.worldcat.org/), the largest database of library records. The first section of the list was published online with great fanfare as the [Library 100](https://www.oclc.org/en/worldcat/library100.html) in 2019, accompanied by the claim that for novels, “literary greatness can be measured by how many libraries have a copy on their shelves.” \n\nWe wondered about the implications of this claim and about what it means to base ideas of “literary greatness” on the number of libraries that hold a particular work. How do historical biases in systems of literary production and preservation figure into these kinds of claims? Which libraries’ records are included in the data? And how do we even define what counts as a novel? \n\nTo contextualize the initial list and dig into its claims about literary greatness, we collected information on each novel from a number of other databases, including [Wikipedia](https://www.wikipedia.org/), [Goodreads](https://www.goodreads.com/), [Project Gutenberg](https://www.gutenberg.org/), the [Virtual International Authority File (VIAF)](https://viaf.org/), and [Classify](https://www.oclc.org/go/en/classify-discontinuation.html) (a now-shuttered OCLC tool), which we have compiled here.\n\nThe dataset was created by Anna Preus and Aashna Sheth, who are also the authors of this data essay. \n\n\n## **HISTORY**\n\nTo start, what is a novel? “Novel” is an umbrella term for works of longform fiction in a range of genres: romance, sci-fi, historical fiction, horror, detective fiction, westerns, etc. The word “novel” was first used in English to describe a “long fictional prose narrative” in the 1600s (OED), and the form increased in popularity across the 18th and 19th centuries. Interestingly, OCLC’s list of top 500 novels extends much further back than this. The oldest work on the list is *The Tale of Genji*, a classic work of Japanese literature written over 1,000 years ago. On the other end of the timeline, the list includes many contemporary best-sellers, including all the titles in the *Harry Potter*, *Twilight*, and *Hunger Games* series. \n\nThis long time span is one of the things that makes OCLC’s data, and the list specifically, so interesting. A key issue in literary studies is which works from the past we continue to read in the present, and which works from the present we’ll continue to read in the future. The vast majority of novels fall out of circulation shortly after they’re published, quickly becoming part of what Margaret Cohen has called “the great unread” [@cohen_sentimental_2018, 61].[^1] The Top 500 list, though, represents historical works that have achieved exceptional levels of attention and have entered what is often referred to as the literary “canon.” Ankhi Mukherjee defines the canon as “a set of texts whose value and readability have borne the test of time,” noting that this “involves not merely a work’s admission into an elite club, but its induction into ongoing critical dialogue and contestations of literary value” (@mukherjee_canonicity_2017). Canonical works continue to be read, taught, and discussed, and in popular terminology they’re often considered “classics.” These are works you might read in a high school or college English class: F. Scott Fitzgerald’s *The Great Gatsby*, for example, or Jane Austen’s *Pride and Prejudice*.\n\n[^1]: Franco Moretti also uses this term, borrowing it from Cohen. We follow Cohen’s use of the term.\n\nOne of the things that defines a classic is the fact that it stays in print for a long period of time. When a book is published, it is issued in an edition with a specific number of physical copies. If the book is profitable, it may be re-issued in different editions over many years and edited repeatedly by different scholars across time. If it becomes canonical, it is likely to be issued in dozens or hundreds of editions even long after the author’s death, leading to more physical copies of the book in circulation. Importantly, though, there is not just one canon or one stable set of classics. Canons are constructed and reinforced by people; they are socially and historically defined and are bound up in power relationships and in histories of exclusion and erasure. This is what makes OCLC’s task of defining the top 500 greatest novels of all time so potentially problematic: their data reflects a history of canonization that has influenced library collections, and which has long been biased toward English-language texts, White male authors, and works produced in Europe and North America.[^2] \n\n[^2]: We capitalize \"White\" following Sonita Sarker, who writes, \"The capital letter 'W' indicates that White is a collective identity. The term has mostly indicated individuals, in the use of the lower case ‘w,’ signifying at once the unique humanity of (white) personhood and absolving them of collective responsibility in White supremacy\" [@sarker_whiteness_2023]\n\nThe newer works included on the list are books that have achieved immense popularity and widespread sales in recent years. These works, which were published during the period that Dan Sinykin has termed the “Conglomerate Era,” are usually issued by publishers that operate as part of large, multinational corporations, and which have the resources to print and distribute millions of books around the world [@sinykin_big_2023]. Many of these novels have also been adapted into major films or TV series. \n\nBy focusing on books that librarians have chosen to continue to make available to readers, OCLC was able to create a list of widely read novels that includes both classic texts and more recent, popular works by living authors. The list, though, also reflects various forms of bias rooted in literary history, in library collections, and in the data itself. We wondered, whose conception of “literary greatness” is being represented? How does OCLC’s data compare to other potential indicators of popularity or canonicity? And, for that matter, how was the list actually constructed?\n\n## What's in the data?\n\nThe columns in our expanded version of the Library Top 500 Novels dataset include information in the following categories:\n\n### Basic info on novels:\n\n- **TOP_500_RANK:** Numeric rank of text in OCLC’s original Top 500 List.\n- **TITLE:** Title of text, as recorded in OCLC’s original Top 500 List.\n- **AUTHOR:** Author of text, as recorded in OCLC’s original Top 500 List.\n- **PUB_YEAR:** Year of first publication of text, according to Wikipedia.\n- **ORIG_LANG:** Original language of text, according to Wikipedia.\n- **GENRE:** Genre of text, as recorded in OCLC’s original Top 500 List (filtered by the ‘Choose Genre’ dropdown). \n\n### Author demographic info:\n\n- **AUTHOR_BIRTH:** Author year of birth, according to VIAF. \n- **AUTHOR_DEATH:** Author year of death, according to VIAF.\n- **AUTHOR_GENDER:** Author gender, according to VIAF. Note: VIAF only includes binary gender categories, with an alternate option of “Unknown.” Although we want to resist binary categorizations of gender, we have used VIAF because it provides the most comprehensive and accurate information we could find for authors on this list, and because it can be difficult if historical authors held non-binary identities. If we find evidence that any of the authors on the list identified or identify as non-binary, we will change the gender categories to reflect their identifications. \n- **AUTHOR_PRIMARY_LANG:** Author’s primary language of publication, according to VIAF.\n- **AUTHOR_NATIONALITY:** Author’s nationality according to VIAF. VIAF includes multiple national associations for many authors, but we have only collected information on the first country associated with each author. Importantly, this does not include information on tribal citizenship or on changes in nationality across an author’s lifetime.\n- **AUTHOR_FIELD_OF_ACTIVITY:** Author’s primary fields of activity, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n- **AUTHOR_OCCUPATION:** Author’s primary occupations, according to VIAF. VIAF includes data from multiple global partner institutions, but we only collect VIAF data associated with the Library of Congress (LOC).\n\n### Library holdings info:\n\n- **OCLC_HOLDINGS:** Total physical library holdings listed in WorldCat for an individual work (OWI), according to Classify. \n- **OCLC_EHOLDINGS:** Total digital library holdings listed in WorldCat for an individual work (OWI), according to OCLC. \n- **OCLC_TOTAL_EDITIONS:** Total editions of an individual work–physical and digital–listed in WorldCat according to OCLC.\n- **OCLC_HOLDINGS_RANK:** Numeric rank of text based on total holdings recorded in WorldCat. \n- **OCLC_EDITIONS_RANK:** Numeric rank of text based on total number of editions recorded in WorldCat.\n\n### Online popularity info:\n\n- **GR_AVG_RATING:** Average star rating for a text on Goodreads.\n- **GR_NUM_RATINGS:** Total number of ratings for a text on Goodreads.\n- **GR_NUM_REVIEWS:** Total number of reviews for a text on Goodreads.\n- **GR_AVG_RATING_RANK:** Numeric rank of text based on average Goodreads rating.\n- **GR_NUM_RATINGS_RANK:** Numeric rank of text based on overall number of ratings on Goodreads.\n\n### Unique Identifiers and URLS:\n\n- **OCLC_OWI:** Work ID on OCLC. A work ID represents a cluster based on “author and title information from bibliographic and authority records.” A title can be represented by multiple clusters, and therefore multiple OWIs. More information about OCLC work clustering can be found here.\n- **AUTHOR_VIAF:** Author VIAF ID.\n- **GR_URL:** URL for text on Goodreads.\n- **WIKI_URL:** URL for text on Wikipedia.\n- **PG_ENG_URL:** URL for English-language text on Project Gutenberg.\n- **PG_ORIG_URL:** URL for original-language text (where applicable) on Project Gutenberg.\n- **FULL_TEXT:** Full text of the novel, if it is in the public domain.\n\n\n## **WHERE DID THE DATA COME FROM? WHO COLLECTED IT?**\n\n### **The Top 500 list** \nThe initial list of Top 500 novels was collected by a team at OCLC, the non-profit organization that manages WorldCat. It was compiled based on analysis of data in WorldCat, which consists of catalog records created and entered by librarians at OCLC member libraries. \n\n### **Our curated dataset** \nBuilding on this list, we compiled data from a number of other databases, including Project Gutenberg, VIAF, Wikipedia, and Goodreads–a process that is described in greater detail below. \n\n## **WHY WAS THE DATA COLLECTED? HOW IS THE DATA USED?**\n\n### **The Top 500 list**:\nOCLC’s goal in producing the Top 500 list seems to be to share information about an important set of texts based on the unprecedented amount of information in their database, as well as to encourage library patronage and reading. The website for the list includes a “[Librarians Kit](https://www.oclc.org/en/worldcat/library100/promote.html)” with a variety of publicity materials–from printable bookmarks to Instagram tiles–that can help bring attention to books in the Top 500 list within libraries’ collections. \n\n![Screenshot of promotional materials for \"The Library Top 100\"](images/top_500_kit.png \"image_tooltip\")\n\n### **Our curated dataset**:\nOur goal as researchers was to collect data from additional sources in order to understand how the list was constructed and to contextualize and question its claims about literary greatness.\n\n## **HOW WAS THE DATA COLLECTED?**\n\n### **The top 500 list**:\nThe Top 500 list represents a massive data extraction and analysis effort on the part of OCLC. While they do not provide detailed information on how the list was compiled, they do offer a brief explanation of the process that went into creating the list on their [FAQ page](https://www.oclc.org/en/worldcat/library100/faq.html) (written in the context of the top 100, but also applies to the top 500):\n\n\n > Materials in libraries are described and tracked in WorldCat in two ways. Any specific work of literature, music, art, history, etc., has an associated **catalog record**. This describes the item in a general sense. Every copy of the same book, for example, shares the same record. WorldCat also tracks library **holdings**, which indicate that a specific library has (or holds) at least one copy of that item.\n\n\n > The Library 100 is based on the total number of holdings for a specific novel across all libraries that have registered that information in WorldCat. When a library tells OCLC, “We have a copy of that book available,” that counts as a holding, and in the case of The Library 100, counts as +1 toward its ranking on the list.\n\nThis process initially sounds straightforward: to create the Top 500 list, the OCLC team presumably searched the title of a work, counted the number of libraries that held each title, and published the first 500. But when we dug into the database, we found it was actually much more complicated than that. The list is influenced by a range of factors, including which libraries’ collections are represented, what kinds of books are considered, and how holdings are totalled across different editions and translations of individual titles. \n\n#### Which libraries are represented?\n\nAccording to OCLC, “WorldCat holdings information represents the collective inventory of OCLC member libraries” [@noauthor_worldcat_2021]. But who are these member libraries? And where are they? OCLC publishes some summary data about WorldCat, revealing, for example, that it currently holds over 548 million bibliographic records representing over 3.3 billion library holdings in 490 languages. But while OCLC stresses its position as “The worldwide catalog of library resources” and emphasizes the membership of libraries in over one hundred countries, it doesn’t provide much specific information on where these libraries are located or what kinds of institutions they are [@noauthor_worldcat_2021]. \n\nIn order to get a general sense of the geographic distribution of OCLC member libraries, we dug into the organization’s [directory](https://www.oclc.org/en/contacts/libraries.html) and conducted filtered searches for libraries in each country. We found that over 70% of OCLC’s members are in the U.S., followed by 7% in Germany, 4% in Australia, 2.6% in Canada, and 1.5% in the U.K. Clearly, OCLC is most well represented in the U.S., where it is based, and the fact that three of the other top four countries in terms of membership have English as a national language helps to explain why English-language materials are disproportionately represented in the catalog and in the Top 500 List.\n\n![Number of libraries in OCLC's member database by country](images/oclc_libraries_by_country.png \"image_tooltip\")\n\nWe used a similar approach to look at what kinds of institutions are represented in WorldCat, this time filtering by “Library Type.” We found that most OCLC members are school libraries (29%), public libraries (29%), or academic libraries (25%) and that membership is fairly evenly distributed across these categories. The prominence of school libraries and academic libraries raises the issue of which patrons have access to these libraries–and thus whose conception of popularity is being represented in the holdings data. It also points to the influence of educators on this picture of the Top 500 novels. \n\n![Number of libraries in OCLC's member database by institution type](images/oclc_libraries_by_institution_type.png \"image_tooltip\")\n\n#### Which books are represented?\n\nSince the list focuses specifically on *novels* in these libraries’ collections, it is also narrowed by genre. OCLC discusses its process for identifying novels on its FAQ page, noting that they began with “everything in WorldCat that counts broadly as ‘fiction’” and then winnowed the list down through the removal of known categories like “children’s books, poetry, drama, folklore, comics,” and “short stories.” The final list was later “reviewed by an editorial team.”\n\nImportantly, the Top 500 List is also based only on holdings of physical books, and it “does not include e-books, audiobooks, children’s adaptations, film adaptations, etc.” This exclusive focus on print books puts emphasis on the choices of librarians, since libraries have limited shelf space and periodically have to cull their print collections. As OCLC puts it, “libraries offer access to trendy and popular books. But, they don’t keep them on the shelf if they’re not repeatedly requested by their communities over the years.” By contrast, they suggest that ebooks are often incorporated via “automatic links to free collections on the web,” which do not “represent a specific decision to add a particular novel to a library’s collection” [@noauthor_library_2023]. While this may be the case, given the popularity of eBooks [@zhang_ebooks_2013], a focus on print must have influenced the overall makeup of the list, and, again, whose idea of popularity or “greatness” it represents. \n\n#### How are editions and translations counted?\n\nOne further complication is that in WorldCat, records are stored by edition, meaning that each edition of a particular novel has its own catalog record. An individual title may have been released in hundreds or thousands of editions since its initial publication. Miguel de Cervantes’s *Don Quixote*, for example, has over 9,000 editions listed in WorldCat.\n\nThis means that when developing the list, the OCLC team actually had to find all the editions of a specific title and sum the number of libraries that hold that edition across all editions. **Thus the top 500 list is not only a representation of how many libraries carry the work, but a representation of how many times a book has been re-edited and re-issued; the more editions a book has, the more records are created and the more copies of a book a library may hold.** Often, there are duplicate records for individual editions, which may affect the overall count of copies tallied by OCLC. And when a work is translated into different languages, all the editions of all the translations are also recorded in WorldCat, which also figures into the count of total holdings for each novel. \n\nThe combined influence of these different factors can be seen in the representation of works in languages other than English, which make up around 14% of the list. The non-English-language texts that are at the top of the list–*Don Quixote*, *Crime and Punishment*, *Madame Bovary*, *The Three Musketeers*, and *War and Peace*–have all been widely translated into English, a trend that continues as you go down the list. \n\n\n### **Our curated dataset**:\n\nWe chose to contextualize the Library Top 500 List by compiling additional information on each novel from a range of other sources. We focused on gathering three main categories of information: information that could help us understand what types of works–and whose works–were included on the list, data that could potentially provide alternate measures of popularity or canonicity, and the full text of each novel that was in the public domain. We collected information from the following sources:\n\n**WorldCat**: we used the now-shuttered OCLC tool Classify to gather data from WorldCat based on an OWI (OCLC Work ID) for each of the 500 novels on the list.[^3] We recorded total physical and eholdings for this work. The Top 500 list only considers physical holdings. The number of holdings in our curated dataset is not perfectly descending as the top 500 rank decreases, as one would expect. This is likely due to complications with the OWI number and with the inclusion of translations; the top 500 list uses multiple OWIs to calculate total holdings, while we only use one. Which OWIs the top 500 curators use for each work is unclear. \n\n[^3]: For more on how editions of works are clustered in WorldCat see \"Clustering WorldCat Discovery.\"\n\n**VIAF**: The Virtual International Authority File is an OCLC-run database that contains structured records–called “name authority files”–for individual authors and creators. We used VIAF to gather information on authors whose novels were included on the list, including their birth and death dates, nationalities, genders, and occupations.\n\n![Example of Toni Morrison's authority record in VIAF](images/viaf_example.png \"image_tooltip\")\n\n**Wikipedia**: We used Wikipedia, the popular, free, volunteer-authored encyclopedia, to identify the year of first publication for each novel on the list.\n\n**Goodreads**: Goodreads, which is owned by Amazon, is the largest social networking site related to books, with over 150 million members. It allows users to rate, review, and discuss a huge range of texts. We drew on data from Goodreads as a potential alternate indicator of texts’ popularity, collecting total number of reviews, total number of ratings, and average overall rating for each novel on the list. \n\n**Project Gutenberg**: We used Project Gutenberg to access the full-text of all novels on the list that are currently in the public domain, or in other words, out of copyright. We chose Project Gutenberg because their eBooks are edited by volunteers, whereas many larger content repositories, like Internet Archive and HathiTrust, only make available machine-generated transcriptions of historical texts, which tend to be less accurate. \n\nOur work creating this dataset not only builds on the work of the OCLC team who compiled the Top 500 list, but on the labor of the thousands of librarians who created records held in WorldCat and VIAF, of the volunteers who transcribed texts for Project Gutenberg and wrote articles for Wikipedia, and of the social media users who reviewed and rated books on Goodreads. \n\n\n## **EXAMINING BIAS**\n\n### **The top 500 list**:\nThe OCLC’s definition of “literary greatness” is biased based on the libraries that OCLC represents, the list’s exclusive focus on physical books, and its emphasis on raw number of holdings, which is influenced by number of editions. OCLC acknowledges potential biases in their claims, noting that “The [top 500] list emphasizes many books that we tend to think of as ‘classics,’ because those are the novels most often translated, retold in different editions, taught and widely distributed in library collections. Because of this, the list tends to reflect more dominant cultural views.”\n\nA key reason we decided to collect additional data related to the list was to explore what kinds of works, and especially whose works, it represents. Drawing on author data gathered from VIAF, we can calculate some overall descriptive statistics for the list. \n\nLooking at the AUTHOR_GENDER column, we can count the number of authors identified as male and the number identified as female (VIAF only includes options for binary genders, which is discussed further below), and we can see that over 70% of the novels were written by men.\n\n```{python}\n\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv(\"../../../datasets/top-500-novels/final_merged_dataset_no_full_text.tsv\", sep='\\t', header=0, low_memory=False)\n\ndf[\"author_gender\"].value_counts(dropna=False)\n\n```\n\nWe can use a similar approach to look at the nationalities of authors whose works are represented on the list. Focusing on the AUTHOR_NATIONALITY column, we can count how many times each country code appears, and see that over 80% of the novels were written by authors from the U.S. or the U.K.\n\n```{python}\n\ndf[\"author_nationality\"].value_counts(dropna=False)\n\n```\n\n![Choropleth map representing the number of works by authors of particular nationalities represented on the Top 500 List](images/library_top_500_by_nationality_of_author.jpg \"image_tooltip\")\n\nTo find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.\n\n```{python}\n\nimport numpy as np\n\nbins = np.arange(1000, 2060, 50)\nbars = df['pub_year'].plot.hist(bins=bins, edgecolor='w')\nplt.xticks(rotation='vertical');\nplt.xticks(bins);\n\n```\nWe can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).\n\n```{python}\n\ndf[\"author\"].value_counts(dropna=False).head(10)\n\n```\n\nDrawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).[^4]\n\n[^4]: Laura Mandell argues that “women writers are being recovered and forgotten in cycles, both in print and potentially in digital media,” pointing out that historically “works by men have been published and republished” while “women writers only appear in the materiality of the single print run” (@mandell_gendering_2015). In his work on “What Makes a ‘Classic’ African American Text,” Henry Louis Gates Jr. discusses the historical exclusion of Black authors from the Penguin Classics series, as well as his work editing a new series of African American Classics for the imprint. He notes that “texts by people of color, and texts by women” are “still struggling, despite enormous gains over the last twenty years, to gain a solid foothold in anthologies and syllabi.” These kinds of biases in turn affect which works appear on library shelves.\n\n```{python}\n\nimport pandas as pd\nimport seaborn as sns\nfrom scipy import stats\n# inspired by: https://www.sfu.ca/~mjbrydon/tutorials/BAinPy/08_correlation.html\n\nsns.lmplot(x=\"oclc_editions_rank\", y=\"top_500_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_editions_rank'], dropped_df['top_500_rank']))\n\n```\n\nSimilarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.\n\n```{python}\n\nsns.lmplot(x=\"oclc_holdings_rank\", y=\"oclc_editions_rank\", data=df)\ndropped_df = df[df.oclc_editions_rank.notna() & df.oclc_holdings_rank.notna()]\nprint(stats.pearsonr(dropped_df['oclc_holdings_rank'], dropped_df['oclc_editions_rank']))\n\n```\n\n### **Our curated dataset**:\nAlthough the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels. \n\nThe sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (@drabinski_queering_2013). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.[^5] For example, the nationality for Sherman Alexie, author of *The Absolutely True Diary of a Part-time Indian*, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of *The Kite Runner*, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S. \n\n[^5]: Safiya Umoja Noble argues that “information organization is a matter of sociopolitical and historical processes that serve particular interests,” tying library cataloging and classification systems to “the development of racial classification” in the 19th century (136-137). And Roopika Risam also highlights the role of public-sector knowledge institutions in perpetuating these structural biases, emphasizing “the failure to take into account the complicity of universities, libraries, and the cultural heritage sector in devaluing black and indigenous lives and perpetuating the legacies of colonialism in the cultural and digital cultural records alike” (14).\n\nWe urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.\n\nYou can find more metadata analysis in this [notebook](exercises/Metadata_Analysis.html).\n\n## **POPULARITY VS CANONICITY**\n\nBecause we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources. \n\nTo unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?\n\nFor our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.\n\n```{python}\n\ndef top_5_comparison(col_name):\n print(df[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\n sorted = df.sort_values(by=[col_name])\n print(sorted[[\"title\", \"author\", \"top_500_rank\", col_name]].head(5))\n\ntop_5_comparison(\"gr_num_ratings_rank\")\n\n```\n\nAbove you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! What factors might affect popularity on Goodreads compared to OCLC?\n\n```{python}\n\nimport math\nfrom IPython.core.display import HTML\n\ndef print_rankings(d, col_name):\n rank_B = d[col_name]\n rank_A = d[\"top_500_rank\"]\n title = d[\"title\"]\n points_moved = 0\n if (math.isnan(rank_B)):\n points_moved = 501\n d[\"html_output\"] = f' ● {title}'\n else:\n if rank_B > int(rank_A):\n points_moved = rank_B - rank_A\n d[\"html_output\"] = f' ▼ -{int(points_moved)} {title}'\n elif rank_B < rank_A:\n points_moved = rank_A - rank_B\n d[\"html_output\"] = f' ▲ +{int(points_moved)} {title}'\n else:\n d[\"html_output\"] = f' ● {title}'\n d[\"points_moved\"] = int(points_moved)\n return d\n\ndf = df.apply(lambda d: print_rankings(d, \"gr_num_ratings_rank\"), axis=1)\n\nhtml_output = \"
\".join(df[\"html_output\"].tolist())\nHTML(html_output)\n\n```\n\n::: {.callout-tip}\n## Metadata Activities\n\nYou can find more metadata analysis in [Activities](?tab=discussion-%26-activities).\n:::\n\n## **FULL TEXT DATA**\n\nIn addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis here, but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways. \n\nYou can find the full-text data here: [https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv](https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv)\n\n```{python}\nimport pandas as pd\nimport requests\nimport re\nfrom bs4 import BeautifulSoup\nimport random\n```\n\nLet's start by analyzing the type-token ratio of our texts by genre. The type-token ratio will tell us which genres contain the most unique words.\n\nThe type-token ratio is a simple expression that calculates `# of unique words / total words in a selection`. As you may be able to surmise, sometimes this ratio is naturally higher for shorter books. To avoid this bias, we randomly select a contiguous 1000 word sample from each book and average the scores across genres.\n\nIt's helpful to be able to store all of our data in a dataframe, but sometimes we want to work with just one column of the data and converting it into a different datatype can be helpful. Here we're converting all the information in the column \"text\" into a list.\n\n```{python}\n#|error: false\n#|warning: false\n#|echo: true\n\nimport string\n\ndef get_ttr(text):\n if (pd.isnull(text)):\n return 1.1 # a ratio greater than 1 is impossible, so we won't count these when doing our averages\n else:\n text = text.lower()\n punctuations = \"-,.?!;#: \\n\\t\"\n no_punct = text.strip(punctuations)\n tokens = text.split()\n\n trial = 0\n avg_ttr = 0\n while (trial < 10):\n random_token_num = random.randrange(0, len(tokens)-1000)\n #sample = tokens[random_token_num:(random_token_num+1000)]\n sample = [word.translate(str.maketrans('', '', string.punctuation))\n for word in tokens[random_token_num:(random_token_num + 1000)]]\n #print(sample)\n trial += 1\n avg_ttr += float(len(set(sample)))/1000\n\n return avg_ttr/10\n\nimport csv\n\ndf = pd.read_csv(\"https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv\", sep='\\t', header=0, low_memory=False)\ndf[\"ttr\"] = df[\"full_text\"].apply(get_ttr)\n\ncleaned = df[df[\"ttr\"] <= 1] # drop all rows where ttr is not applicable\ngrouped = cleaned.groupby('genre')\navg_ttr = grouped[\"ttr\"].mean().sort_values(ascending=False)\nprint(avg_ttr)\n```\n\n```{python}\nsorted = cleaned.sort_values(by=['ttr'], ascending=False)\nprint(sorted[[\"title\", \"author\", \"ttr\", \"genre\"]].head(10).to_string(index=False))\n```\n\nAs we've seen in this quick example, some authors or genres seem to use a wider variety of words. However, this is just a first step in exploring text analysis with ttr. We've made some simplifications, like assuming our 1000-word sample perfectly represents a whole novel, and we haven't delved into advanced techniques for parsing and cleaning text.\n\nFrom here, you dive deeper into the world of lexical diversity! You can continue using statistical methods or even feed this text into more sophisticated langauge models.\n\n\n## **Conclusion**\n\nThe Top 500 List is presented in a straightforward manner. It is just a list of 500 novels that are widely held in library collections along with their authors. But when you start to dig into the data underlying the list, it gets much, much more complicated. \n\nThe list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation. \n\nThe list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.\n\nIn pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time? \n\nWhile each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis [here](?tab=discussion-%26-activities). \n\n## References\n\n::: {#refs}\n:::\n\n::: {#custom-footnotes}\n:::\n\n\n# Explore the Data {#tabset-1-2}\n\n\n\n\n```{ojs}\n//|echo: false\n//|output: false\n\n// Example usage\ngenerateTabulatorTableFromCSV(\n \"#table-container2\",\n\n \"https://raw.githubusercontent.com/melaniewalsh/responsible-datasets-in-context/refs/heads/main/datasets/top-500-novels/top-500-novels-metadata_2025-01-11.csv\",\n {\n displayedColumns: [\n \"top_500_rank\",\n \"title\",\n \"author\",\n \"pub_year\",\n \"orig_lang\",\n \"genre\",\n \"author_birth\",\n \"author_death\",\n \"author_gender\",\n \"author_primary_lang\",\n \"author_nationality\",\n \"author_field_of_activity\",\n \"author_occupation\",\n \"oclc_holdings\",\n \"oclc_eholdings\",\n \"oclc_total_editions\",\n \"oclc_holdings_rank\",\n \"oclc_editions_rank\",\n \"gr_avg_rating\",\n \"gr_num_ratings\",\n \"gr_num_reviews\",\n \"gr_avg_rating_rank\",\n \"gr_num_ratings_rank\",\n \"oclc_owi\",\n \"author_viaf\",\n \"gr_url\",\n \"wiki_url\",\n \"pg_eng_url\",\n \"pg_orig_url\"\n ],\n numericColumns: [\"gr_num_ratings\", \"gr_num_reviews\"]\n }\n);\n```\n\n
\n \n
\n
\n\n\n
\n
\n\nDownload Full Data (including hidden columns)\n
\n \n \n
\n\nDownload Table Data (including filtered options)\n\n
\n \n \n \n
\n\n\n\n# Discussion & Activities {#discussion-and-activities}\n\n## Activity 1 {#exercise-1}\n\nThe Top 500 List represents a history of literary reception that favors works by White, European and American men who wrote in English or were widely translated into English. We share the code we used to analyze these forms of bias in our Metadata Analysis notebook. What other forms of bias would you want to consider in relation to this dataset? What categories of information (or columns) can we look at within the dataset to help us understand different forms of bias represented in the Top 500 List? What kinds of information are missing from the dataset? \n\nTry adapting the code in this [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to consider other forms of bias in the Top 500 List. \n\n\n## Activity 2 {#exercise-2}\n\nIn our data essay, we compared two different ways of ranking the Top 500 List: first by OCLC’s original order (based on number of library holdings for particular titles), and second by number of ratings on the social media site Goodreads. Which works rose or fell the most according to Goodreads rankings? Do you notice any commonalities among the books that rose or fell the most? The dataset also includes multiple other options for ranking the list. How do these other rankings compare to OCLC’s ranking of the titles? \n\nTry adapting the code in the “Rank Analysis” section of the [Metadata Analysis notebook](exercises/Metadata_Analysis.html) to compare OCLC’s initial ranking of the list to another ranking metric (for example, OCLC_EDITIONS_RANK or GR_AVG_RATING_RANK). \n\n## Activity 3\n\nIn addition to the dataset of metadata, we have also created a dataset that includes the full text of all the novels that are not currently under copyright (190 texts). With this dataset, it’s possible to connect full-text and metadata analysis. \n\nIn our [Full Text Analysis notebook](https://colab.research.google.com/drive/14dg05yBklQq0BeXjd-vElgO7AfCBwUzP?usp=sharing), we’ve included suggestions for analyzing texts according to type-token ratio, a basic measure of lexical complexity that compares the ratio of unique words to total words in a text. \n\nWhat other quantitative measures could you apply to the full-text of these novels? How can we connect these measures to our metadata analysis? For example, what is the average length of novels on the list written by authors labeled as male, vs. those labeled as female?\n\n# Exercises {#exercises}\n\n::: {.panel-tabset .nav-pills}\n\n## Python {#exercise-posts-python}\n\n\n::: {#exercise-posts}\n:::\n## R {#exercise-posts-r}\n:::\n\n:::\n"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"kable","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"jupyter"},"render":{"0":{"team":{"output-dir":"../../../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":true,"code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":true,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true,"format-links":["pdf","docx","ipynb"]},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["../../styles.css"],"include-in-header":["../../custom-footnotes.js","../../tabs-tocs.js","../../fontawesome.js"],"include-after-body":["../../tabs-to-urls.js"],"output-file":"top-500-novels.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title-block-banner":true,"title":"Top 500 \"Greatest\" Novels (1021-2015)","author":"Anna Preus and Aashna Sheth","listing":{"id":"exercise-posts","contents":"exercises","exclude":{"categories":"dataset"},"sort":"date desc","type":"table","fields":["date","title","categories"],"categories":false,"sort-ui":false,"filter-ui":true,"image-height":"200px"},"date":"2024-07","categories":["libraries","literature","readers","gender","metadata","full-text","public domain"],"image":"images/library-top-500-screenshot.png","editor":"visual","jupyter":"python3","bibliography":["../../references/references.bib"]},"extensions":{"book":{"multiFile":true}}},"pdf":{"identifier":{"display-name":"PDF","target-format":"pdf","base-format":"pdf"},"execute":{"fig-width":5.5,"fig-height":3.5,"fig-format":"pdf","fig-dpi":300,"df-print":"kable","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"jupyter"},"render":{"0":{"team":{"output-dir":"../../../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"pdf","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":true,"code-overflow":"scroll","code-link":false,"code-line-numbers":false,"code-tools":true,"tbl-colwidths":true,"merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"format-links":["pdf","docx","ipynb"]},"pandoc":{"pdf-engine":"xelatex","standalone":true,"variables":{"graphics":true,"tables":true},"default-image-extension":"pdf","to":"pdf","output-file":"top-500-novels.pdf"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"block-headings":true,"comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"title-block-banner":true,"title":"Top 500 \"Greatest\" Novels (1021-2015)","author":"Anna Preus and Aashna Sheth","listing":{"id":"exercise-posts","contents":"exercises","exclude":{"categories":"dataset"},"sort":"date desc","type":"table","fields":["date","title","categories"],"categories":false,"sort-ui":false,"filter-ui":true,"image-height":"200px"},"date":"2024-07","categories":["libraries","literature","readers","gender","metadata","full-text","public domain"],"image":"images/library-top-500-screenshot.png","editor":"visual","jupyter":"python3","bibliography":["../../references/references.bib"]},"extensions":{"book":{"selfContainedOutput":true}}}},"projectFormats":["html"]} \ No newline at end of file diff --git a/website/.quarto/idx/team.qmd.json b/website/.quarto/idx/team.qmd.json index 94df793..507bcf5 100644 --- a/website/.quarto/idx/team.qmd.json +++ b/website/.quarto/idx/team.qmd.json @@ -1 +1 @@ -{"title":"Team","markdown":{"yaml":{"title":"Team","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","toc":false,"title-block-banner":true,"body-classes":"team","css":"styles.css","listing":[{"id":"pi","include":{"people_group":"pi"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]},{"id":"member","include":{"people_group":"member"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]}]},"headingText":"Project Directors","containsRefs":false,"markdown":"\n\n\n::: {#pi}\n:::\n\n\n# Team Members\n\n:::{#member}\n:::\n\n\n\n\n\n","srcMarkdownNoYaml":"\n\n# Project Directors\n\n::: {#pi}\n:::\n\n\n# Team Members\n\n:::{#member}\n:::\n\n\n\n\n\n"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":false,"echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true,"body-classes":"team"},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"toc":false,"output-file":"team.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title":"Team","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","title-block-banner":true,"listing":[{"id":"pi","include":{"people_group":"pi"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]},{"id":"member","include":{"people_group":"member"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]}]},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file +{"title":"Team","markdown":{"yaml":{"title":"Team","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","toc":false,"title-block-banner":true,"body-classes":"team","css":"styles.css","listing":[{"id":"pi","include":{"people_group":"pi"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]},{"id":"member","include":{"people_group":"member"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]}]},"headingText":"Project Directors","containsRefs":false,"markdown":"\n\n\n::: {#pi}\n:::\n\n\n# Team Members\n\n:::{#member}\n:::\n\n\n\n\n\n","srcMarkdownNoYaml":"\n\n# Project Directors\n\n::: {#pi}\n:::\n\n\n# Team Members\n\n:::{#member}\n:::\n\n\n\n\n\n"},"formats":{"html":{"identifier":{"display-name":"HTML","target-format":"html","base-format":"html"},"execute":{"fig-width":7,"fig-height":5,"fig-format":"retina","fig-dpi":96,"df-print":"default","error":false,"eval":true,"cache":null,"freeze":"auto","echo":true,"output":true,"warning":true,"include":true,"keep-md":false,"keep-ipynb":false,"ipynb":null,"enabled":null,"daemon":null,"daemon-restart":false,"debug":false,"ipynb-filters":[],"ipynb-shell-interactivity":null,"plotly-connected":true,"engine":"markdown"},"render":{"0":{"team":{"output-dir":"../docs/team"}},"keep-tex":false,"keep-typ":false,"keep-source":false,"keep-hidden":false,"prefer-html":false,"output-divs":true,"output-ext":"html","fig-align":"default","fig-pos":null,"fig-env":null,"code-fold":"none","code-overflow":"wrap","code-link":false,"code-line-numbers":false,"code-tools":false,"tbl-colwidths":"auto","merge-includes":true,"inline-includes":false,"preserve-yaml":false,"latex-auto-mk":true,"latex-auto-install":true,"latex-clean":true,"latex-min-runs":1,"latex-max-runs":10,"latex-makeindex":"makeindex","latex-makeindex-opts":[],"latex-tlmgr-opts":[],"latex-input-paths":[],"latex-output-dir":null,"link-external-icon":false,"link-external-newwindow":false,"self-contained-math":false,"format-resources":[],"notebook-links":true,"body-classes":"team"},"pandoc":{"standalone":true,"wrap":"none","default-image-extension":"png","to":"html","css":["styles.css"],"include-in-header":["custom-footnotes.js","tabs-tocs.js","fontawesome.js"],"include-after-body":["tabs-to-urls.js"],"toc":false,"output-file":"team.html"},"language":{"toc-title-document":"Table of contents","toc-title-website":"On this page","related-formats-title":"Other Formats","related-notebooks-title":"Notebooks","source-notebooks-prefix":"Source","other-links-title":"Other Links","code-links-title":"Code Links","launch-dev-container-title":"Launch Dev Container","launch-binder-title":"Launch Binder","article-notebook-label":"Article Notebook","notebook-preview-download":"Download Notebook","notebook-preview-download-src":"Download Source","notebook-preview-back":"Back to Article","manuscript-meca-bundle":"MECA Bundle","section-title-abstract":"Abstract","section-title-appendices":"Appendices","section-title-footnotes":"Footnotes","section-title-references":"References","section-title-reuse":"Reuse","section-title-copyright":"Copyright","section-title-citation":"Citation","appendix-attribution-cite-as":"For attribution, please cite this work as:","appendix-attribution-bibtex":"BibTeX citation:","appendix-view-license":"View License","title-block-author-single":"Author","title-block-author-plural":"Authors","title-block-affiliation-single":"Affiliation","title-block-affiliation-plural":"Affiliations","title-block-published":"Published","title-block-modified":"Modified","title-block-keywords":"Keywords","callout-tip-title":"Tip","callout-note-title":"Note","callout-warning-title":"Warning","callout-important-title":"Important","callout-caution-title":"Caution","code-summary":"Code","code-tools-menu-caption":"Code","code-tools-show-all-code":"Show All Code","code-tools-hide-all-code":"Hide All Code","code-tools-view-source":"View Source","code-tools-source-code":"Source Code","tools-share":"Share","tools-download":"Download","code-line":"Line","code-lines":"Lines","copy-button-tooltip":"Copy to Clipboard","copy-button-tooltip-success":"Copied!","repo-action-links-edit":"Edit this page","repo-action-links-source":"View source","repo-action-links-issue":"Report an issue","back-to-top":"Back to top","search-no-results-text":"No results","search-matching-documents-text":"matching documents","search-copy-link-title":"Copy link to search","search-hide-matches-text":"Hide additional matches","search-more-match-text":"more match in this document","search-more-matches-text":"more matches in this document","search-clear-button-title":"Clear","search-text-placeholder":"","search-detached-cancel-button-title":"Cancel","search-submit-button-title":"Submit","search-label":"Search","toggle-section":"Toggle section","toggle-sidebar":"Toggle sidebar navigation","toggle-dark-mode":"Toggle dark mode","toggle-reader-mode":"Toggle reader mode","toggle-navigation":"Toggle navigation","crossref-fig-title":"Figure","crossref-tbl-title":"Table","crossref-lst-title":"Listing","crossref-thm-title":"Theorem","crossref-lem-title":"Lemma","crossref-cor-title":"Corollary","crossref-prp-title":"Proposition","crossref-cnj-title":"Conjecture","crossref-def-title":"Definition","crossref-exm-title":"Example","crossref-exr-title":"Exercise","crossref-ch-prefix":"Chapter","crossref-apx-prefix":"Appendix","crossref-sec-prefix":"Section","crossref-eq-prefix":"Equation","crossref-lof-title":"List of Figures","crossref-lot-title":"List of Tables","crossref-lol-title":"List of Listings","environment-proof-title":"Proof","environment-remark-title":"Remark","environment-solution-title":"Solution","listing-page-order-by":"Order By","listing-page-order-by-default":"Default","listing-page-order-by-date-asc":"Oldest","listing-page-order-by-date-desc":"Newest","listing-page-order-by-number-desc":"High to Low","listing-page-order-by-number-asc":"Low to High","listing-page-field-date":"Date","listing-page-field-title":"Title","listing-page-field-description":"Description","listing-page-field-author":"Author","listing-page-field-filename":"File Name","listing-page-field-filemodified":"Modified","listing-page-field-subtitle":"Subtitle","listing-page-field-readingtime":"Reading Time","listing-page-field-wordcount":"Word Count","listing-page-field-categories":"Categories","listing-page-minutes-compact":"{0} min","listing-page-category-all":"All","listing-page-no-matches":"No matching items","listing-page-words":"{0} words","listing-page-filter":"Filter","draft":"Draft"},"metadata":{"lang":"en","fig-responsive":true,"quarto-version":"1.6.39","comments":{"hypothesis":{"theme":"clean","openSidebar":false,"showHighlights":"whenSidebarOpen"}},"theme":{"light":["lux","theme.scss"]},"code-copy":true,"title":"Team","image":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Mozilla_logo.svg/2560px-Mozilla_logo.svg.png","sidebar":false,"page-layout":"article","title-block-banner":true,"listing":[{"id":"pi","include":{"people_group":"pi"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]},{"id":"member","include":{"people_group":"member"},"exclude":{"external":true},"template":"embedded_js/people-card.ejs","sort":"last","type":"grid","fields":["title","subtitle","image","education"]}]},"extensions":{"book":{"multiFile":true}}}},"projectFormats":["html"]} \ No newline at end of file diff --git a/website/.quarto/xref/e52ab95c b/website/.quarto/xref/e52ab95c index 022a0af..3055831 100644 --- a/website/.quarto/xref/e52ab95c +++ b/website/.quarto/xref/e52ab95c @@ -1 +1 @@ -{"entries":[{"caption":"Old Faithful, the most famous geyser of the whopping ~500 geysers at Yellowstone National Park. Photo credit: NPS/Neal Herbert.","key":"fig-yellowstone","order":{"number":1,"section":[0,2,0,0,0,0,0]}},{"caption":"Mount Rainier, also known by the Indigenous name Tahoma, is an active volcano and 14,411 feet tall. Mount Rainier National Park, which is 60 miles south-east of Seattle, Washington, was founded in 1899. Photo credit: NPS (public domain).","key":"fig-rainier","order":{"number":2,"section":[0,2,0,0,0,0,0]}},{"caption":"Selections for National Park visit data generated with “Query Builder for Public Use Statistics (1979 - Last Calendar Year)”.","key":"fig-query-builder","order":{"number":3,"section":[0,3,0,0,0,0,0]}},{"caption":"An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!).","key":"fig-induction","order":{"number":7,"section":[0,6,0,0,0,0,0]}},{"caption":"An example of a pneumatic tube traffic counter, installed above the road.","key":"fig-pneumatic-tube","order":{"number":6,"section":[0,6,0,0,0,0,0]}},{"caption":"2021 report on NPS economic impact. Graphic credit: NPS.","key":"fig-economic-benefit","order":{"number":4,"section":[0,4,0,0,0,0,0]}},{"caption":"Badlands National Park sign, gesturing to the South Unit’s co-management between the Oglala Sioux Tribe and the NPS. Photo credit: NPS.","key":"fig-badlands","order":{"number":5,"section":[0,5,0,0,0,0,0]}}],"headings":["introduction","history","where-did-the-data-come-from-who-collected-it","why-was-the-data-collected-how-is-the-data-used","whats-in-the-data-what-counts-as-a-visit","how-was-the-data-collected","what-data-is-missing-how-is-uncertainty-handled","conclusion","references","explore-the-data","programming-exercises","activity-1-1","devices-will-break","activity-2-1","counting-procedures","activity-3-1","missing-evidence","discussion-question-1-1","alternative-uses-of-the-data","discussion-question-2-1","non-recreation-visits","discussion-question-3-1","recording-uncertainty"]} \ No newline at end of file +{"entries":[{"caption":"2021 report on NPS economic impact. Graphic credit: NPS.","key":"fig-economic-benefit","order":{"number":4,"section":[0,4,0,0,0,0,0]}},{"caption":"An example of a pneumatic tube traffic counter, installed above the road.","key":"fig-pneumatic-tube","order":{"number":6,"section":[0,6,0,0,0,0,0]}},{"caption":"Selections for National Park visit data generated with “Query Builder for Public Use Statistics (1979 - Last Calendar Year)”.","key":"fig-query-builder","order":{"number":3,"section":[0,3,0,0,0,0,0]}},{"caption":"Lone Star Geyser, one of the whopping ~500 geysers at Yellowstone National Park. Photo credit: NPS/Neal Herbert.","key":"fig-yellowstone","order":{"number":1,"section":[0,2,0,0,0,0,0]}},{"caption":"Badlands National Park sign, gesturing to the South Unit’s co-management between the Oglala Sioux Tribe and the NPS. Photo credit: NPS.","key":"fig-badlands","order":{"number":5,"section":[0,5,0,0,0,0,0]}},{"caption":"An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!).","key":"fig-induction","order":{"number":7,"section":[0,6,0,0,0,0,0]}},{"caption":"Mount Rainier, also known by the Indigenous name Tahoma, is an active volcano and 14,411 feet tall. Mount Rainier National Park, which is 60 miles south-east of Seattle, Washington, was founded in 1899. Photo credit: NPS (public domain).","key":"fig-rainier","order":{"number":2,"section":[0,2,0,0,0,0,0]}}],"headings":["introduction","history","where-did-the-data-come-from-who-collected-it","why-was-the-data-collected-how-is-the-data-used","whats-in-the-data-what-counts-as-a-visit","how-was-the-data-collected","what-data-is-missing-how-is-uncertainty-handled","conclusion","references","explore-the-data","programming-exercises","activity-1-1","devices-will-break","activity-2-1","counting-procedures","activity-3-1","missing-evidence","discussion-question-1-1","alternative-uses-of-the-data","discussion-question-2-1","non-recreation-visits","discussion-question-3-1","recording-uncertainty"]} \ No newline at end of file diff --git a/website/_site/datasets.html b/website/_site/datasets.html index 453194d..12e8b62 100644 --- a/website/_site/datasets.html +++ b/website/_site/datasets.html @@ -376,7 +376,7 @@
Categories
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+

diff --git a/website/_site/posts/np-data/images/Inductance_detectors.jpg b/website/_site/posts/np-data/images/Inductance_detectors.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ba65560cd3479ba7c4de7d4cf9ffc44c91e21bdb GIT binary patch literal 193252 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%0DB5KbN&^ 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 Sp4RBQ8P>)(YrAjTx&PTTo}!Nc literal 0 HcmV?d00001 diff --git a/website/_site/posts/np-data/images/pneumatic-tube.jpg b/website/_site/posts/np-data/images/pneumatic-tube.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af93f596f0252ddd2a5baf333428382ce47397f9 GIT binary patch literal 153386 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%0Dr{3y4^vHXirl8li;iHt8`dZ@I%g>ImlMNt58 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 gJZpciS2qV)qsHGzKSiP0Eu~406History
-Figure 1: Old Faithful, the most famous geyser of the whopping ~500 geysers at Yellowstone National Park. Photo credit: NPS/Neal Herbert. +Figure 1: Lone Star Geyser, one of the whopping ~500 geysers at Yellowstone National Park. Photo credit: NPS/Neal Herbert.
@@ -687,7 +687,7 @@

History

So when and why did visit counting start at the U.S. National Parks? Well, according to the NPS, the counting of park visits started as early as 1904 (more than 10 years before the National Park Service itself was officially created). But at this time, and for the next 50 years or so, their data collection methods were mostly informal, inconsistent, and low-tech.

But in 1965, the NPS started getting serious about counting visits. That year, the U.S. Congress passed The Land and Water Conservation Fund Act of 1965. This act created a new source of government money specifically dedicated to protecting natural resources and expanding outdoor recreation infrastructure. Because the act stipulated that the amount of money allocated to each area should be “proportional to visitor use,” the NPS buckled down on counting visitor use. They “developed and institutionalized a formal system for collecting, compiling and reporting visitor use data.”

-

In 1979, the NPS comprehensively changed their counting procedure, and all parks began tracking vistor use by month (as opposed to year) across 11 different statistics. This is why the datasets featured here begin in 1979.1 Note: We aggregated monthly counts into yearly counts for the dataset featured in this essay. A dataset with visit counts by month is available in “Explore the Data.”

+

In 1979, the NPS comprehensively changed their counting procedure, and all parks began tracking visitor use by month (as opposed to year) across 11 different statistics. This is why the datasets featured here begin in 1979.1 Note: We aggregated monthly counts into yearly counts for the dataset featured in this essay. A dataset with visit counts by month is available in “Explore the Data.”

Code @@ -818,6 +818,13 @@

W
+++++++ @@ -829,74 +836,74 @@

W

- - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - + - - + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + +
ParkName
Rocky Mountain NPIntermountainCO19983035422Crater Lake NPPacific WestOR1997451548
Cuyahoga Valley NPMidwestOH1980563300Shenandoah NPNortheastVA19861843985
Kings Canyon NPPacific WestCA2009609296Badlands NPMidwestSD19981021049
Mesa Verde NPBlack Canyon of the Gunnison NP Intermountain CO19966173602017307143
Theodore Roosevelt NPMidwestND1987424846Capitol Reef NPIntermountainUT20171150165
Channel Islands NPPacific WestCA2003585919Virgin Islands NPSoutheastVI1995536058
Grand Teton NPIntermountainWY20032355693Katmai NP & PRESAlaskaAK198113115
Petrified Forest NPIntermountainAZ1986761257Lassen Volcanic NPPacific WestCA1992468011
Rocky Mountain NPIntermountainCO19852248854Pinnacles NPPacific WestCA1999164854
Indiana Dunes NPMidwestIN20232765892Denali NP & PRESAlaskaAK1982321868
@@ -965,7 +972,7 @@

How was the dat
- +
Figure 6: An example of a pneumatic tube traffic counter, installed above the road. @@ -1012,7 +1019,7 @@

How was the dat
- +
Figure 7: An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!). @@ -1147,31 +1154,31 @@

+Kobuk Valley NP +Alaska +AK +2015 +0 + + Katmai NP & PRES Alaska AK 1995 0 - + National Park of American Samoa Pacific West AS 2003 0 - -Kobuk Valley NP -Alaska -AK -2014 -0 - Kobuk Valley NP Alaska AK -2015 +2014 0 @@ -1379,7 +1386,7 @@

Programming Exercise - + Aug 1, 2024 @@ -1390,7 +1397,7 @@

Programming Exercise dplyr, exercise, solution - + Aug 1, 2024 @@ -1401,7 +1408,7 @@

Programming Exercise dplyr, exercise - + Feb 26, 2024 @@ -1412,7 +1419,7 @@

Programming Exercise dplyr, exercise, solution - + Feb 26, 2024 @@ -1423,7 +1430,7 @@

Programming Exercise ggplot, advanced, solution - + Feb 26, 2024 @@ -1464,7 +1471,7 @@

Programming Exercise - + Aug 1, 2024 @@ -1475,7 +1482,7 @@

Programming Exercise pandas, exercise - + Aug 1, 2024 @@ -2302,7 +2309,7 @@

Recording Uncertaint In the United States, the very first National Park---Yellowstone National Park, in Wyoming---was signed into law in 1872 by President Ulysses S. Grant. -![Old Faithful, the most famous geyser of the whopping ~500 geysers at Yellowstone National Park. Photo credit: [NPS/Neal Herbert](https://www.nps.gov/yell/planyourvisit/exploreoldfaithful.htm).](https://www.nps.gov/yell/planyourvisit/images/ndh-yell-9306.jpg){#fig-yellowstone} +![Lone Star Geyser, one of the whopping ~500 geysers at Yellowstone National Park. Photo credit: [NPS/Neal Herbert](https://www.nps.gov/yell/planyourvisit/exploreoldfaithful.htm).](https://www.nps.gov/yell/planyourvisit/images/ndh-yell-9306.jpg){#fig-yellowstone} Over the next several decades, a handful of other parks---such as Sequoia (1890), Yosemite (1890), Mount Rainier (1899), and Crater Lake (1902)---joined the system, too. @@ -2323,7 +2330,7 @@

Recording Uncertaint But in 1965, the NPS started getting serious about counting visits. That year, the U.S. Congress passed [The Land and Water Conservation Fund Act of 1965](https://www.everycrsreport.com/reports/RL33531.html). This act created a new source of government money specifically dedicated to protecting natural resources and expanding outdoor recreation infrastructure. Because the act stipulated that the amount of money allocated to each area should be ["proportional to visitor use,"](https://www.nps.gov/subjects/socialscience/statistics-history.htm) the NPS buckled down on counting visitor use. They ["developed and institutionalized a formal system for collecting, compiling and reporting visitor use data."](https://www.nps.gov/subjects/socialscience/statistics-history.htm) -In 1979, the NPS comprehensively changed their counting procedure, and [all parks began tracking vistor use by month]((https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm)) (as opposed to year) across 11 different statistics. This is why the datasets featured here begin in 1979.[^1] **Note: We aggregated monthly counts into yearly counts for the dataset featured in this essay. A dataset with visit counts by month is available in ["Explore the Data."](?tab=explore-the-data)** +In 1979, the NPS comprehensively changed their counting procedure, and [all parks began tracking visitor use by month]((https://www.nps.gov/subjects/socialscience/visitor-use-statistics-dashboard.htm)) (as opposed to year) across 11 different statistics. This is why the datasets featured here begin in 1979.[^1] **Note: We aggregated monthly counts into yearly counts for the dataset featured in this essay. A dataset with visit counts by month is available in ["Explore the Data."](?tab=explore-the-data)** [^1]: The NPS also offers [annual visitation information between 1904-1979](https://irma.nps.gov/Stats/SSRSReports/National%20Reports/Query%20Builder%20for%20Historic%20Annual%20Recreation%20Visits%20(1904%20-%201979)), but it is a separate, less consistent dataset. @@ -2476,7 +2483,7 @@

Recording Uncertaint ::: -![An example of a pneumatic tube traffic counter, installed above the road.](https://upload.wikimedia.org/wikipedia/commons/d/d3/Metrocount_vehicle_classifier_system_on_B3033_-_geograph.org.uk_-_1033728.jpg?20110223182337){#fig-pneumatic-tube width="300"} +![An example of a pneumatic tube traffic counter, installed above the road.](images/pneumatic-tube.jpg){#fig-pneumatic-tube width="300"} To count visits, most parks use a combination of automatic traffic counters and manual counting--—that is, staff members who use their eyeballs to literally count the number of people arriving by foot, bike, bus, cross-country skis, snowmobile, boat, canoe, etc. @@ -2514,7 +2521,7 @@

Recording Uncertaint What's more, the devices that the NPS uses to count visits---such as pneumatic tube counters or induction loop counters (magnetized coils of wire that are installed under a road, and that "trip" when a vehicle passes over them)---sometimes *break*. -![An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!).](https://upload.wikimedia.org/wikipedia/commons/8/8c/Inductance_detectors.jpg){#fig-induction width="300"} +![An example of an induction loop, installed beneath a road (making it harder to detect when it breaks!).](images/Inductance_detectors.jpg){#fig-induction width="300"} For example, [according to the NPS data logs](https://irma.nps.gov/Stats/SSRSReports/Park%20Specific%20Reports/Monthly%20Visitation%20Comments%20By%20Park?Park=CRLA), the induction loop counter at one of the main entrances at Crater Lake National Park in Oregon broke in 2012 and wasn't repaired for at least a year: diff --git a/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.html b/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.html index c3b3997..b3f306a 100644 --- a/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.html +++ b/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.html @@ -353,7 +353,7 @@

Metadata Analysis

By Aashna Sheth

Let’s start by reading our data into a pandas dataframe. A pandas dataframe is a structure used to hold file data. This structure has efficient methods used for manipulating and visualizing data.

-
+
Code
import matplotlib.pyplot as plt
@@ -364,7 +364,7 @@ 

By Aashna Sheth

Now, we can answer various questions using this structure, which we’ve named df.

For example, let’s look at counts related to author gender and name.

-
+
Code
df["author_gender"].value_counts(dropna=False)
@@ -378,7 +378,7 @@

By Aashna Sheth

We see that about 70% of authors on the list are male and 30% are female.

Some authors appear multiple times on the list. Let’s see which authors are most represented in the list.

-
+
Code
df["author"].value_counts(dropna=False).head(10)
@@ -399,7 +399,7 @@

By Aashna Sheth

Next, we can delve into some visualization work to understand where authors are from and what timeframe of publication is most represented in the top 500 list.

-
+
Code
import numpy as np
@@ -418,7 +418,7 @@ 

By Aashna Sheth

We can see that most books on the list were published between 1950 and 2000. Let’s take a look at information about the oldest and newest books on the list.

-
+
Code
from IPython.display import display
@@ -584,7 +584,7 @@ 

By Aashna Sheth

Let’s take a look at where the authors are from!

-
+
Code
df["author_nationality"].value_counts().head(5)
@@ -600,9 +600,9 @@

By Aashna Sheth


-

Finally, let’s unpack the differences between the GoodReads ratings and the top 500 ratings. First, we should think about how we want to compare the two lists. Given that we have listed rankings by average rating and number of ratings, which metric would be better to use? Would we want to create another metric?

+

Finally, let’s unpack the differences between the Goodreads ratings and the top 500 ratings. First, we should think about how we want to compare the two lists. Given that we have listed rankings by average rating and number of ratings, which metric would be better to use? Would we want to create another metric?

For our purposes, we decided to use number of ratings, instead of average rating, as OCLC measures popularity by number of holdings, not how much patrons say they enjoy reading the books.

-
+
Code
def top_5_comparison(col_name):
@@ -642,8 +642,8 @@ 

By Aashna Sheth

33 5
-

Above you can see that the GoodReads rankings and the top 500 rankings aren’t very aligned! What factors affect popularity on GoodReads compared to OCLC?

-
+

Above you can see that the Goodreads rankings and the top 500 rankings aren’t very aligned! What factors affect popularity on Goodreads compared to OCLC?

+
Code
import math
@@ -1173,7 +1173,7 @@ 

By Aashna Sheth

Let’s see which novels had the most movement up or down!

-
+
Code
sorted = df.sort_values(by=['points_moved'])
@@ -1193,7 +1193,7 @@ 

By Aashna Sheth

Worst Case James Patterson 5 443 438
-
+
Code
sorted = df.sort_values(by=['points_moved'], ascending=False)
@@ -1215,7 +1215,7 @@ 

By Aashna Sheth

Above we see that Steinbeck’s “The Winter of Our Discontent”, stayed at the same ranking of 397. Pride and Prejudice remained quite high as well.

20k Leagues under the sea dropped the most, from rank 37 in the top 500 list, to rank 481 in the goodreads list! Harry Potter and The Sea of Monsters rose up the most.

-
+
Code
df['points_moved'].mean()
@@ -1226,7 +1226,7 @@

By Aashna Sheth


Let’s take a look at some of these metrics for rankings based on number of editions and total holdings.

-
+
Code
import pandas as pd
@@ -1272,7 +1272,7 @@ 

By Aashna Sheth

-
+
Code
df = df.apply(lambda d: print_rankings(d, "oclc_editions_rank"), axis=1)
@@ -1775,7 +1775,7 @@

By Aashna Sheth

▲ +127 Deception Point
-
+
Code
df = df[df["points_moved"] <= 500]
@@ -1810,7 +1810,7 @@ 

By Aashna Sheth

7 5.0
-
+
Code
df['points_moved'].mean()
@@ -1822,7 +1822,7 @@ 

By Aashna Sheth


-
+
Code
df = df.apply(lambda d: print_rankings(d, "oclc_holdings_rank"), axis=1)
@@ -2325,7 +2325,7 @@

By Aashna Sheth

▲ +26 Deception Point
-
+
Code
top_5_comparison("oclc_holdings_rank")
@@ -2359,7 +2359,7 @@

By Aashna Sheth

6 5.0
-
+
Code
df['points_moved'].mean()
@@ -2370,7 +2370,7 @@ 

By Aashna Sheth

4.9
-

Comparing the average points of movement between the top 500 and 3 other ranking lists, we can see that the novels moved the least when compared to the number of holdings ranking (45 pts). Novels were 2x more likely to move positions when compared to the number of editions ranking (82 pts) and 3x more likely to move when compared to GoodReads rankings (137 pts).

+

Comparing the average points of movement between the top 500 and 3 other ranking lists, we can see that the novels moved the least when compared to the number of holdings ranking (45 pts). Novels were 2x more likely to move positions when compared to the number of editions ranking (82 pts) and 3x more likely to move when compared to Goodreads rankings (137 pts).

@@ -3019,7 +3019,7 @@

By Aashna Sheth

--- -Finally, let's unpack the differences between the GoodReads ratings and the top 500 ratings. First, we should think about how we want to compare the two lists. Given that we have listed rankings by average rating and number of ratings, which metric would be better to use? Would we want to create another metric? +Finally, let's unpack the differences between the Goodreads ratings and the top 500 ratings. First, we should think about how we want to compare the two lists. Given that we have listed rankings by average rating and number of ratings, which metric would be better to use? Would we want to create another metric? For our purposes, we decided to use number of ratings, instead of average rating, as OCLC measures popularity by number of holdings, not how much patrons say they enjoy reading the books. @@ -3034,8 +3034,8 @@

By Aashna Sheth

top_5_comparison("gr_num_ratings_rank") ``` -Above you can see that the GoodReads rankings and the top 500 rankings aren't very aligned! -What factors affect popularity on GoodReads compared to OCLC? +Above you can see that the Goodreads rankings and the top 500 rankings aren't very aligned! +What factors affect popularity on Goodreads compared to OCLC? ```{python} #| colab: {base_uri: 'https://localhost:8080/'} @@ -3152,7 +3152,7 @@

By Aashna Sheth

smaller_df['points_moved'].mean() ``` -Comparing the average points of movement between the top 500 and 3 other ranking lists, we can see that the novels moved the least when compared to the number of holdings ranking (45 pts). Novels were 2x more likely to move positions when compared to the number of editions ranking (82 pts) and 3x more likely to move when compared to GoodReads rankings (137 pts). +Comparing the average points of movement between the top 500 and 3 other ranking lists, we can see that the novels moved the least when compared to the number of holdings ranking (45 pts). Novels were 2x more likely to move positions when compared to the number of editions ranking (82 pts) and 3x more likely to move when compared to Goodreads rankings (137 pts).
diff --git a/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.ipynb b/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.ipynb index 0b80294..40c4b9b 100644 --- a/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.ipynb +++ b/website/_site/posts/top-500-novels/exercises/Metadata_Analysis.ipynb @@ -14,7 +14,7 @@ "dataframe is a structure used to hold file data. This structure has\n", "efficient methods used for manipulating and visualizing data." ], - "id": "9be116fb-32da-4c14-8dbc-01ec80255832" + "id": "50a132c1-1d8e-4d79-a7ae-a4f5ed6fbebf" }, { "cell_type": "code", @@ -38,7 +38,7 @@ "\n", "For example, let’s look at counts related to author gender and name." ], - "id": "c83cf80b-85a1-4f7d-8e38-c08fa9b72626" + "id": "06df9ef5-88a0-4721-aa30-0b5e2e78946d" }, { "cell_type": "code", @@ -73,7 +73,7 @@ "Some authors appear multiple times on the list. Let’s see which authors\n", "are most represented in the list." ], - "id": "a4207553-77f4-4587-b461-a1df423ea5d0" + "id": "598b35c4-e976-4de4-9db9-35f07c0a8bda" }, { "cell_type": "code", @@ -114,7 +114,7 @@ "authors are from and what timeframe of publication is most represented\n", "in the top 500 list." ], - "id": "e8d0b0fb-6a8c-436f-88a0-bdcd9b6a24e7" + "id": "ca7cbc4d-2e5b-42e3-8b4d-5a086345d4bb" }, { "cell_type": "code", @@ -147,7 +147,7 @@ "2000. Let’s take a look at information about the oldest and newest books\n", "on the list." ], - "id": "84d2ebad-0f1a-4737-9874-04b6027fca25" + "id": "6469c8d1-843c-45c5-b917-dd47167f9f23" }, { "cell_type": "code", @@ -207,7 +207,7 @@ "source": [ "Let’s take a look at where the authors are from!" ], - "id": "c5a1b077-2f0a-4446-b330-821c199dc40f" + "id": "0d893f18-99a2-4a53-a0c2-836344b867be" }, { "cell_type": "code", @@ -251,7 +251,7 @@ "average rating, as OCLC measures popularity by number of holdings, not\n", "how much patrons say they enjoy reading the books." ], - "id": "09d0cb8a-5e28-430a-ac01-22413650b745" + "id": "ea2710da-7278-4623-9708-c5cf38b8e5f6" }, { "cell_type": "code", @@ -310,7 +310,7 @@ "aren’t very aligned! What factors affect popularity on GoodReads\n", "compared to OCLC?" ], - "id": "6c2738ad-51a4-407c-a83d-45b7631d53f4" + "id": "f3ac19cb-76ab-4f44-9236-d06afa84d23f" }, { "cell_type": "code", @@ -856,7 +856,7 @@ "source": [ "Let’s see which novels had the most movement up or down!" ], - "id": "ab662a1c-618e-4aa0-b666-a6b4df38371f" + "id": "719debbe-3e30-4a3f-8644-3d94596e000c" }, { "cell_type": "code", @@ -928,7 +928,7 @@ "list, to rank 481 in the goodreads list! Harry Potter and The Sea of\n", "Monsters rose up the most." ], - "id": "5f97af6a-5d05-4bc2-ad65-69a6291727c4" + "id": "9fb5c3a3-4351-420b-a327-2ffd16a89b0c" }, { "cell_type": "code", @@ -959,7 +959,7 @@ "Let’s take a look at some of these metrics for rankings based on number\n", "of editions and total holdings." ], - "id": "6103105b-d796-48f2-b5e0-8600e572db42" + "id": "02450b51-15cf-48ae-ab2d-d39b5f342997" }, { "cell_type": "code", @@ -1600,7 +1600,7 @@ "source": [ "------------------------------------------------------------------------" ], - "id": "45879267-0c8f-49e9-a243-704baa01f67f" + "id": "b59673ce-2143-4fe2-9f32-3612b1351d14" }, { "cell_type": "code", @@ -2190,7 +2190,7 @@ "pts) and 3x more likely to move when compared to GoodReads rankings (137\n", "pts)." ], - "id": "2ce52cf6-0104-4dcc-ad27-ac6842f6bcf2" + "id": "c17046bc-6c1c-4964-b221-19089e3f8e2f" } ], "nbformat": 4, diff --git a/website/_site/posts/top-500-novels/exercises/Metadata_Analysis_files/figure-html/cell-13-output-2.png b/website/_site/posts/top-500-novels/exercises/Metadata_Analysis_files/figure-html/cell-13-output-2.png index d134aa7c8b4b32235c38c72877413da6a7b7645e..425e04e8203a09ec04376f0da331d61f66993a4c 100644 GIT binary patch literal 126823 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

To find out what time period is most frequently represented on the list, we can look at the PUB_YEAR column and see that almost 50% of novels were first published between 1950 and 2000.

-
+
Code
import numpy as np
@@ -975,12 +975,12 @@ 

The top 500 lis

We can also get a sense of the immense influence of individual authors who appear on the list numerous times. The most represented authors are John Grisham (19 novels) and Charles Dickens (15 novels).

-
+
Code
df["author"].value_counts(dropna=False).head(10)
-
+
author
 John Grisham            19
 Charles Dickens         15
@@ -996,7 +996,7 @@ 

The top 500 lis

Drawing on slightly more complex techniques, we can see that there is a strong positive correlation (p=1.1165e-73, r=0.6985) between the current ranking of the Top 500 List and a ranking based on the total number of editions for each novel. This suggests that the more editions a novel has, the more likely it is to be higher on the list, which is relevant because European and American editing practices have long favored authors occupying dominant social positions. Historically, works by White authors and male authors are more likely to have been re-edited and re-issued and to be considered literary classics (Gates; Mandell).4

-
+
Code
import pandas as pd
@@ -1020,7 +1020,7 @@ 

The top 500 lis

Similarly, we confirm that there is a very strong positive correlation (p=5.6541e-96, r=0.7642) between number of editions and number of holdings of a novel; the more editions a book has, the more total holdings are reported in OCLC.

-
+
Code
sns.lmplot(x="oclc_holdings_rank", y="oclc_editions_rank", data=df)
@@ -1044,7 +1044,7 @@ 

Our curated

Although the additional data we curated helps to contextualize the Top 500 List and to reveal some of its biases, the data we added also contains its own biases. For starters, as researchers, we both primarily work in English, and we are pursuing this project at a University in the U.S. These contexts have informed our areas of inquiry and the sources we’ve chosen to use. We primarily drew on widely used online databases created in English-language contexts (VIAF, Project Gutenberg, etc.). Further, we have limited our data collection to OCLC’s list of the Top 500 novels and did not attempt to expand to other rankings of literary greatness or to additional novels.

The sources we have used, of course, have biases of their own. VIAF relies on a standardized vocabulary, which can be helpful for data analysis and organization, but erases important nuances. For example, VIAF categorizes gender with the binary labels of “male” and “female,” with the only other option being “unknown.” This, of course, reinforces binary understandings of gender and obscures the existence of non-binary people (Drabinski (2013)). Labels used in fields like “AUTHOR_NATIONALITY,” “FIELD_OF_ACTIVITY,” and “OCCUPATION” also do not paint a complete picture. The entries in the latter two columns are based on Library of Congress data and may not be equally rich for all authors. And nationality labels from VIAF can obfuscate racial, political, ethnic, and tribal affiliations, and flatten the complexity of individual authors’ experiences.5 For example, the nationality for Sherman Alexie, author of The Absolutely True Diary of a Part-time Indian, is listed as “U.S.A.”, but his identity as a member of the Spokane Tribe of Indians is not referenced. In another example, the first nationality listed for Khaled Hosseini, author of The Kite Runner, is “U.S.A.” followed by “Afghanistan.” This is not inaccurate but it is oversimplified, since Hosseini was born in Kabul, lived in Iran, France, and Afghanistan throughout his childhood, and then moved to California after his family sought political asylum in the U.S.

We urge researchers using this dataset to consider its biases when drawing conclusions, and to seek other sources to expand it, question it, and/or to fill in information that may be missing or lacking.

-

You can find more metadata analysis in this colab notebook.

+

You can find more metadata analysis in this notebook.

@@ -1052,7 +1052,7 @@

POPULARIT

Because we were interested in whose opinions are represented on the list, we wanted to bring in an alternate measure of popularity, and we decided to use information from Goodreads. Goodreads was appealing because of its prominence online (over 130 million users), which we hoped might help us consider the opinions of a somewhat different set of readers than those theoretically represented through the physical holdings of libraries. Melanie Walsh and Maria Antoniak, for example, have drawn on Goodreads reviews to analyze how social media users define the “Classics.” Drawing on this work, we compare the ranking of novels on OCLC’s original list of Top 500 novels to the rankings of those same novels based on Goodreads ratings and number of reviews. Through this comparison we aim to consider how social media users engage with “classic” and “popular” novels and to interrogate the relationship between canonicity and popularity, using information from different data sources.

To unpack the differences between the Goodreads data and the Top 500 rankings, we first need to think about how we want to compare the two lists. Given that we have recorded Goodread rankings by average star rating and total number of ratings, which metric would be better to use? Would we want to create another metric?

For our purposes, we decided to use total number of ratings instead of average rating, since it seemed most closely related to how OCLC measures popularity–by number of holdings, not how much patrons say they enjoy reading the books.

-
+
Code
def top_5_comparison(col_name):
@@ -1093,7 +1093,7 @@ 

POPULARIT

Above you can see that the Goodreads rankings and the top 500 rankings aren’t very aligned! What factors might affect popularity on Goodreads compared to OCLC?

-
+
Code
import math
@@ -1124,7 +1124,7 @@ 

POPULARIT html_output = "<br>".join(df["html_output"].tolist()) HTML(html_output)

-
+
▼ -210 Don Quixote
▼ -131 Alice's Adventures in Wonderland
▼ -65 The Adventures of Huckleberry Finn
▼ -84 The Adventures of Tom Sawyer
▼ -140 Treasure Island
▼ -2 Pride and Prejudice
▼ -39 Wuthering Heights
▼ -32 Jane Eyre
▼ -125 Moby Dick
▼ -85 The Scarlet Letter
▼ -197 Gulliver's Travels
▼ -266 The Pilgrim's Progress
▼ -85 A Christmas Carol
▼ -214 David Copperfield
▼ -71 A Tale of Two Cities
▼ -22 Little Women
▼ -86 Great Expectations
▲ +8 The Hobbit, or, There and Back Again
▼ -35 Frankenstein, or, the Modern Prometheus
▼ -149 Oliver Twist
▼ -209 Uncle Tom's Cabin
▼ -72 Crime and Punishment
▼ -159 Madame Bovary: Patterns of Provincial life
▼ -69 The Return of the King
▼ -42 Dracula
▼ -160 The Three Musketeers
▼ -16 Brave New World
▼ -155 War and Peace
▲ +25 To Kill a Mockingbird
▼ -122 The Wizard of Oz
▼ -73 Les Misérables
▼ -43 The Secret Garden
▲ +21 Animal Farm
▲ +29 The Great Gatsby
▼ -4 The Little Prince
▼ -124 The Call of the Wild
▼ -444 20,000 Leagues Under the Sea
▼ -59 Anna Karenina
▼ -193 The Wind in the Willows
▼ -17 The Picture of Dorian Gray
▼ -50 The Grapes of Wrath
▼ -32 Sense and Sensibility
▼ -279 The Last of the Mohicans
▼ -159 Tess of the d'Urbervilles
▲ +44 Harry Potter and the Sorcerer's Stone
▼ -193 Heidi
▼ -242 Ulysses
▼ -192 The Complete Sherlock Holmes
▼ -41 The Count of Monte Cristo
▼ -27 The Old Man and the Sea
▲ +22 The Lion, the Witch, and the Wardrobe
▼ -184 The Hunchback of Notre Dame
▼ -293 Pinocchio
▼ -28 One Hundred Years of Solitude
▼ -274 Ivanhoe
▼ -259 The Red Badge of Courage
▼ -24 Anne of Green Gables
▼ -146 Black Beauty
▼ -120 Peter Pan
▼ -127 A Farewell to Arms
▼ -349 The House of the Seven Gables
▲ +35 Lord of the Flies
▼ -233 The Prince and the Pauper
▼ -209 A Portrait of the Artist as a Young Man
▼ -367 Lord Jim
▲ +55 Harry Potter and the Chamber of Secrets
▼ -287 The Red & the Black
▼ -11 The Stranger
▼ -116 The Trial
▼ -224 Lady Chatterley's Lover
▼ -298 Kidnapped: The Adventures of David Balfour
▲ +56 The Catcher in the Rye
▲ +38 Fahrenheit 451
▼ -164 A Journey to the Center of the Earth
▼ -213 Vanity Fair
▼ -75 All Quiet on the Western Front
▲ +6 Gone with the Wind
▼ -201 My Ántonia
▲ +47 Of Mice and Men
▼ -405 The Vicar of Wakefield
▼ -235 A Connecticut Yankee in King Arthur's Court
▼ -164 White Fang
▼ -255 Fathers and Sons
▼ -242 Doctor Zhivago
▼ -324 The Decameron
▲ +79 Nineteen Eighty-Four
▼ -187 The Jungle
▲ +51 The Da Vinci Code
▼ -26 Persuasion
▼ -88 Mansfield Park
▼ -114 Candide
▼ -107 For Whom the Bell Tolls
▼ -178 Far from the Madding Crowd
▲ +66 The Fellowship of the Ring
▼ -319 The Return of the Native
▼ -294 Sons and Lovers
▲ +52 Charlotte's Web
▼ -214 The Swiss Family Robinson
▼ -210 Bleak House
▼ -278 Père Goriot
▼ -252 Utopia
▼ -327 The History of Tom Jones, a Foundling
▲ +94 Harry Potter and the Prisoner of Azkaban
▼ -314 Kim
▼ -150 The Sound and the Fury
▲ +92 Harry Potter and the Goblet of Fire
▼ -278 The Mill on the Floss
▲ +36 A Wrinkle in Time
▼ -72 The Hound of the Baskervilles
▲ +27 The Two Towers
▼ -78 The War of the Worlds
▼ -152 Middlemarch
▼ -146 The Age of Innocence
▼ -6 The Color Purple
▼ -50 Northanger Abbey
▼ -24 East of Eden
▼ -45 On the Road
▲ +19 Catch-22
▼ -105 Around the World in Eighty Days
▼ -244 Hard Times
▼ -37 Beloved
▼ -71 Mrs. Dalloway
▼ -131 To the Lighthouse
▼ -14 The Magician's Nephew
▲ +108 Harry Potter and the Order of the Phoenix
▼ -29 The Sun Also Rises
▼ -96 The Good Earth
▼ -212 Silas Marner
▼ -15 Love in the Time of Cholera
▲ +5 Rebecca
▼ -230 Jude the Obscure
▲ +129 Twilight
▼ -215 A Passage to India
▼ -84 The Plague
▼ -266 Nicholas Nickleby
▼ -93 The Pearl
▼ -155 Ethan Frome
▼ -339 The Tale of Genji
▲ +105 The Giver
▲ +116 The Alchemist
▼ -146 The Strange Case of Dr. Jekyll and Mr. Hyde
▼ -52 Robinson Crusoe
▼ -138 Tender is the Night
▼ -112 The Idiot
▼ -22 Hatchet
▲ +124 The Kite Runner
▲ +36 One Flew Over the Cuckoo's Nest
▼ -199 The Portrait of a Lady
▲ +84 The Outsiders
▼ -272 Ben-Hur
▼ -222 The Mayor of Casterbridge
▼ -204 Cry, The Beloved Country
▼ -53 The Last Battle
▼ -308 Captains Courageous
▼ -219 The Castle
▲ +76 The Metamorphosis
▼ -237 The Magic Mountain (Der Zauberberg)
▲ +10 James and the Giant Peach
▼ -18 The Horse and His Boy
▲ +140 Angels & Demons
▲ +12 The Voyage of the Dawn Treader
▲ +77 The Bell Jar
▼ -268 Women in Love
▼ -279 The Yearling
▼ -223 O Pioneers!
▲ +125 The Handmaid's Tale
▼ -165 The Moonstone
▼ -292 The Old Curiosity Shop
▼ -229 Little Dorrit
▲ +14 Prince Caspian: The Return to Narnia
▼ -237 Sister Carrie
▼ -26 The Silver Chair
▲ +171 The Hunger Games
▼ -183 This Side of Paradise
▼ -282 Eugénie Grandet
▼ -206 Of Human Bondage
▼ -320 Dream of the Red Chamber
▲ +127 Life of Pi
▲ +166 Harry Potter and the Deathly Hallows
▼ -68 Invisible Man
▼ -70 Steppenwolf
▼ -104 The Sorrows of Young Werther
▲ +46 Bridge to Terabithia
▼ -60 The Invisible Man
▲ +112 Holes
▲ +81 Siddhartha
▲ +37 A Tree Grows in Brooklyn
▼ -94 Through the Looking-Glass, and What Alice Found There
▲ +66 In Cold Blood
▼ -25 The House of the Spirits
▼ -259 Adam Bede
▼ -280 The Betrothed
▲ +162 The Book Thief
▲ +14 Their Eyes Were Watching God
▼ -106 One Day in the Life of Ivan Denisovich
▼ -239 The Sea Wolf
▲ +182 Catching Fire
▼ -97 Roll of Thunder, Hear My Cry
▼ -220 Death Comes for the Archbishop
▼ -123 The House of Mirth
▼ -174 Light in August
▼ -237 The Pickwick Papers
▼ -292 Remembrance of Things Past
▼ -295 Barchester Towers and the Warden
▼ -219 The Bridge of San Luis Rey
▲ +176 The Help
▲ +80 Murder on the Orient Express
▲ +172 The Lovely Bones
▼ -171 The Appeal
▼ -261 Dombey And Son
▲ +149 Slaughterhouse-Five
▼ -209 An American Tragedy
▼ -9 The Bluest Eye
▲ +1 Little House In the Big Woods
▼ -22 Pippi Longstocking
▼ -201 Germinal
▼ -89 The Heart Is a Lonely Hunter
▼ -52 The Woman In White
▼ -183 Absalom, Absalom!
▼ -111 A Painted House
▲ +200 The Girl With the Dragon Tattoo
▼ -31 A Room With a View
▲ +76 Watership Down
▲ +182 Memoirs of a Geisha
▼ -215 Our Mutual Friend
▼ -229 Babbitt
▼ -159 The Red Pony
▼ -143 All the King's Men
▲ +59 Things Fall Apart
▼ -240 Lorna Doone
▼ -164 Johnny Tremain
▼ -10 Anne of Avonlea
▲ +26 Tuck Everlasting
▲ +88 The BFG
▼ -45 Cannery Row
▲ +117 The Joy Luck Club
▲ +37 The Silmarillion
▼ -30 Roots
▲ +38 Little House on the Prairie
▼ -80 Native Son
▼ -52 Stuart Little
▼ -181 Cross Fire
▼ -169 The Power and the Glory
▲ +130 A Clockwork Orange
▲ +19 The Phantom of the Opera
▲ +27 The Martian Chronicles
▲ +155 The Road
▼ -239 The Way of All Flesh
▼ -251 Diary of a Wimpy Kid: The Long Haul
▼ -108 Villette
▲ +191 The Curious Incident of the Dog In the Night-Time
▼ -135 The Mysterious Island
▼ -50 Song of Solomon
▼ -198 Nana
▼ -160 Quo Vadis
▼ -192 Main Street
▲ +170 Matilda
▲ +162 Lolita
▲ +196 Paper Towns
▼ -176 Sounder
▲ +34 Are You There God? It's Me, Margaret
▲ +212 The Notebook
▲ +29 From the Mixed-Up Files of Mrs. Basil E. Frankweiler
▲ +96 Atlas Shrugged
▲ +81 The Fountainhead
▲ +134 Number the Stars
▲ +141 The Firm
▼ -108 Swann's Way
▲ +208 Ender's Game
▲ +98 The Name of the Rose
▲ +169 A Time to Kill
▲ +220 Water for Elephants
▲ +131 The Time Machine
▲ +226 Eragon
▲ +231 The Hitchhiker's Guide to the Galaxy
▼ -161 Buddenbrooks
▲ +221 A Thousand Splendid Suns
▲ +6 The Witch of Blackbird Pond
▲ +215 And Then There Were None
▲ +49 A Separate Peace
▲ +232 Breaking Dawn
▲ +20 As I Lay Dying
▲ +194 The Girl Who Played With Fire
▲ +121 Where the Red Fern Grows
▼ -131 Le Morte D'Arthur
▲ +267 Mockingjay
▲ +181 The Pillars of the Earth
▼ -202 Persian Letters
▲ +136 The Client
▼ -34 Sula
▲ +15 Tales of a Fourth Grade Nothing
▼ -78 The Merry Adventures of Robin Hood of Great Renown In Nottinghamshire
▼ -91 Tortilla Flat
▼ -179 Look Homeward, Angel
▼ -185 The Mystery of Edwin Drood
▼ -6 Brideshead Revisited
▲ +138 The Pelican Brief
▲ +157 Atonement
▼ -157 Washington Square
▲ +129 Like Water for Chocolate
▲ +246 The Golden Compass
▲ +236 The Secret Life of Bees
▲ +297 The Fault In Our Stars
▼ -164 Nostromo
▼ -173 Finnegans Wake
▼ -22 The Brethren
▲ +189 Coraline
▲ +165 Heart of Darkness
▼ -8 On the Banks of Plum Creek
▼ -115 Rebecca of Sunnybrook Farm
▼ -168 The Ambassadors
▼ -146 The Secret Agent
▲ +66 The House on Mango Street
▼ -51 Go Tell It on the Mountain
▲ +18 The Testament
▲ +102 The Clan of the Cave Bear
▼ -87 Cranford
▲ +98 Because of Winn-Dixie
▼ -33 My Side of the Mountain
▲ +125 The Runaway Jury
▼ -23 The Mouse and the Motorcycle
▲ +193 The Lost Symbol
▼ -141 The Forsyte Saga
▲ +301 Gone Girl
▲ +300 The Lightning Thief
▼ -170 The Last Days of Pompeii
▲ +92 The Reader
▼ -63 Caddie Woodlawn
▲ +88 The Tale of Despereaux
▲ +220 The Girl Who Kicked the Hornet's Nest
▼ -76 Dear Mr. Henshaw
▼ -10 The Killer Angels
▲ +88 Chronicle of a Death Foretold
▲ +222 The Five People You Meet In Heaven
▲ +160 The Master and Margarita
▼ -90 Winesburg, Ohio
▼ -107 P Is for Peril
▲ +268 My Sister's Keeper
▼ -143 Barnaby Rudge
▲ +4 Howards End
▲ +14 The Broker
▲ +8 The Camel Club
▼ -120 The Rainbow
▼ -23 The Man In the Iron Mask
▲ +62 Mary Poppins
▲ +210 Artemis Fowl
▲ +216 Dear John
▲ +123 Cold Mountain
▲ +228 Flowers for Algernon
▼ -31 The Dark Is Rising
▼ -102 Resurrection
▲ +22 Fearless Fourteen
▼ -139 A Sentimental Journey Through France and Italy
▲ +11 The King of Torts
▲ +216 The Graveyard Book
▼ -16 The Quiet American
▲ +82 The Chamber
▲ +74 The English Patient
▲ +110 Snow Falling on Cedars
▲ +21 The Long Winter
▲ +20 Sarah, Plain and Tall
▼ -44 Cross Country
▲ +56 The Spy Who Came In from the Cold
▲ +331 A Game of Thrones
▲ +189 The Thorn Birds
▲ +45 Old Yeller
▲ +7 Ramona Quimby, Age 8
▼ -15 Death In Venice
▲ +19 By the Shores of Silver Lake
▲ +235 Inferno
▲ +104 Schindler's List
▲ +151 Jonathan Livingston Seagull
▲ +266 The Stand
▲ +55 The Last Juror
▲ +30 Shiloh
▲ +267 Girl With a Pearl Earring
▲ +167 The Murder of Roger Ackroyd
▲ +300 It
▲ +136 The Rainmaker
▲ +272 The Poisonwood Bible
▲ +68 The Indian in the Cupboard
▲ +71 The Maltese Falcon
▼ -84 The Warden
▲ +35 The Summons
▼ -26 Encyclopedia Brown: Boy Detective
▲ +339 The Time Traveler's Wife
▼ -5 The Incredible Journey
▲ +103 Daughter of Fortune
▼ -38 Shirley
▲ +85 Bud, Not Buddy
▲ +12 The Horse Whisperer
▲ +93 The Street Lawyer
▲ +95 Nausea
▼ -36 To Have and Have Not
▲ +70 The Bridges of Madison County
▲ +136 Anne of the Island
● The Winter of Our Discontent
▲ +339 The Shining
▲ +99 The Tenant of Wildfell Hall
▼ -3 First Family
▲ +111 The Partner
▲ +376 The Girl on the Train
▼ -62 The Black Arrow: A Tale of the Two Roses
▼ -90 The Rise of Silas Lapham
▲ +153 The Choice
▼ -82 The Virginian: A Horseman of the Plains
▲ +307 A Walk to Remember
▲ +350 The Maze Runner
▲ +176 The Westing Game
▲ +11 Misty of Chincoteague
▲ +142 Diary of a Wimpy Kid: The Last Straw
▲ +19 King Solomon's Mines
▼ -56 The Princess of Cleves
▼ -14 Jacob Have I Loved
▲ +158 Mrs. Frisby and the Rats of NIMH
▲ +300 Misery
▲ +167 The Cider House Rules
▼ -28 King of the Wind
▲ +109 The Once and Future King
▲ +254 The Witches
▲ +264 The Subtle Knife
▲ +118 When You Reach Me
▲ +310 Carrie
▼ -30 The Moon and Sixpence
▼ -51 The Higher Power of Lucky
▼ -65 Looking Backward, 2000-1887
▼ -39 The Wings of the Dove
▼ -55 The Summer of the Swans
▲ +40 Dangerous Liaisons
▲ +346 Jurassic Park
▲ +219 The Absolutely True Diary of a Part-time Indian
▲ +19 The Grey King
▲ +13 The Leopard
▲ +75 The Mammoth Hunters
▲ +84 The Trumpet of the Swan
▲ +263 The Lucky One
▲ +82 These Happy Golden Years
▼ -51 Arrowsmith
▲ +62 Julie of the Wolves
▲ +286 The Screwtape Letters
▲ +127 The Fall
▲ +226 The No. 1 Ladies' Detective Agency
▲ +5 Worst Case
▼ -15 Lost Horizon
▲ +317 The Gunslinger
▼ -38 The Slave Dancer
▲ +429 Harry Potter and the Half-Blood Prince
▲ +287 Inkheart
▲ +16 Ramona and her Father
▲ +159 Inkspell
▲ +85 Ramona the Pest
▲ +189 Walk Two Moons
▲ +384 Miss Peregrine's Home for Peculiar Children
▲ +54 The Chocolate War
▲ +120 Sophie's Choice
▲ +403 Looking for Alaska
▲ +240 Breakfast at Tiffany's
▲ +62 The Razor's Edge
▲ +201 Dreamcatcher
▲ +127 Orlando
▲ +270 The Things they Carried
▲ +125 Little Town on the Prairie
▲ +202 Nights in Rodanthe
▲ +290 The Amber Spyglass
▲ +157 The Miraculous Journey of Edward Tulane
▲ +103 Flatland
▲ +350 Diary of a Wimpy Kid
▲ +338 The Memory Keeper's Daughter
▲ +203 The Wedding
▲ +278 Fried Green Tomatoes at the Whistle-Stop Cafe
▲ +103 The Cricket in Times Square
▲ +270 The Phantom Tollbooth
▼ -13 Rob Roy
▲ +209 The Death of Ivan Ilych
▲ +34 Alex Cross's Trial
▼ -22 Kenilworth
▲ +16 The Life and Opinions of Tristram Shandy
▲ +282 The Remains of the Day
▼ -14 M.C. Higgins, The Great
▲ +5 Call It Courage
▲ +272 Go Set a Watchman
▲ +77 Bleachers
▲ +9 Elijah of Buxton
▲ +37 Swimsuit
▲ +321 Cat's Cradle
▲ +35 The Caine Mutiny
▲ +45 The Heart of the Matter
▲ +170 Harriet, the Spy
▲ +55 Darkness at Noon
▲ +302 A Prayer for Owen Meany
▲ +294 The God of Small Things
▲ +130 The Associate
▲ +369 The Shack
▲ +45 The Naked and the Dead
▲ +419 The Sea of Monsters
▲ +306 Stranger in a Strange Land
▲ +220 Vision in White
▲ +53 The Whipping Boy
▲ +398 Room
▲ +378 Deception Point
@@ -1144,8 +1144,99 @@

POPULARIT

FULL TEXT DATA

-

In addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis in this Colab notebook, but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways.

-

You can find the full-text data here: https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv

+

In addition to the contextual information we gathered, we also collected the full text of all novels on the list that were out of copyright and available on Project Gutenberg. We have provided some ideas for analysis here, but we hope this full-text data will also offer opportunities for users to explore these novels on their own and to combine full-text and metadata analysis in new ways.

+

You can find the full-text data here: https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv

+
+
+Code +
import pandas as pd
+import requests
+import re
+from bs4 import BeautifulSoup
+import random
+
+
+

Let’s start by analyzing the type-token ratio of our texts by genre. The type-token ratio will tell us which genres contain the most unique words.

+

The type-token ratio is a simple expression that calculates # of unique words / total words in a selection. As you may be able to surmise, sometimes this ratio is naturally higher for shorter books. To avoid this bias, we randomly select a contiguous 1000 word sample from each book and average the scores across genres.

+

It’s helpful to be able to store all of our data in a dataframe, but sometimes we want to work with just one column of the data and converting it into a different datatype can be helpful. Here we’re converting all the information in the column “text” into a list.

+
+
+Code +
import string
+
+def get_ttr(text):
+  if (pd.isnull(text)):
+    return 1.1 # a ratio greater than 1 is impossible, so we won't count these when doing our averages
+  else:
+    text = text.lower()
+    punctuations = "-,.?!;#: \n\t"
+    no_punct = text.strip(punctuations)
+    tokens = text.split()
+
+    trial = 0
+    avg_ttr = 0
+    while (trial < 10):
+      random_token_num = random.randrange(0, len(tokens)-1000)
+      #sample = tokens[random_token_num:(random_token_num+1000)]
+      sample = [word.translate(str.maketrans('', '', string.punctuation))
+          for word in tokens[random_token_num:(random_token_num + 1000)]]
+      #print(sample)
+      trial += 1
+      avg_ttr += float(len(set(sample)))/1000
+
+    return avg_ttr/10
+
+import csv
+
+df = pd.read_csv("https://responsible-datasets-in-context.s3.us-west-2.amazonaws.com/final_merged_dataset.tsv", sep='\t', header=0, low_memory=False)
+df["ttr"] = df["full_text"].apply(get_ttr)
+
+cleaned = df[df["ttr"] <= 1] # drop all rows where ttr is not applicable
+grouped = cleaned.groupby('genre')
+avg_ttr = grouped["ttr"].mean().sort_values(ascending=False)
+print(avg_ttr)
+
+
+
genre
+scifi         0.457678
+political     0.456683
+history       0.454863
+war           0.453950
+fantasy       0.450815
+na            0.443776
+thrillers     0.443244
+bildung       0.441073
+autobio       0.437933
+action        0.437250
+romance       0.431682
+mystery       0.427729
+allegories    0.419250
+horror        0.392200
+Name: ttr, dtype: float64
+
+
+
+
+Code +
sorted = cleaned.sort_values(by=['ttr'], ascending=False)
+print(sorted[["title", "author", "ttr", "genre"]].head(10).to_string(index=False))
+
+
+
                                         title                      author    ttr     genre
+                                Dombey And Son             Charles Dickens 0.5275        na
+                              King of the Wind            Marguerite Henry 0.5014   history
+                            A Passage to India                E.M. Forster 0.4988 political
+                                 Mrs. Dalloway              Virginia Woolf 0.4962        na
+A Sentimental Journey Through France and Italy             Laurence Sterne 0.4935        na
+                      The Once and Future King                 T. H. White 0.4935   fantasy
+                             The King of Torts                John Grisham 0.4926 thrillers
+                              The Lovely Bones                Alice Sebold 0.4916        na
+                         The Cider House Rules                 John Irving 0.4914   bildung
+                                   Vanity Fair William Makepeace Thackeray 0.4909        na
+
+
+

As we’ve seen in this quick example, some authors or genres seem to use a wider variety of words. However, this is just a first step in exploring text analysis with ttr. We’ve made some simplifications, like assuming our 1000-word sample perfectly represents a whole novel, and we haven’t delved into advanced techniques for parsing and cleaning text.

+

From here, you dive deeper into the world of lexical diversity! You can continue using statistical methods or even feed this text into more sophisticated langauge models.

Conclusion

@@ -1153,7 +1244,7 @@

Conclusion

The list draws on hundreds of millions of library records representing billions of library holdings. This is such a vast amount of information that it may appear to provide opportunities to draw comprehensive conclusions. However, the data overwhelmingly represents the holdings of libraries in the U.S.A., the majority of which are also connected to some sort of educational institution. Though it claims to represent great novels from around the world, the list primarily includes English-language novels and novels popular in English translation.

The list also represents the disproportionate influence of academics and publishers, who chose to re-edit and re-issue certain texts and not others. The correlation we found between number of editions and number of holdings is likely to make intuitive sense to library users–especially users of academic libraries, which tend to hold many editions of classic texts, and which often continue to purchase these texts as they are re-edited and re-issued. Histories of canonization in the U.S. and Europe have long been biased toward works by White, male, middle and upper class authors–a fact which clearly influenced the composition of the list.

In pointing out these biases we do not intend to criticize OCLC for producing the list, which provides a useful snapshot of some of the most widely held works in their database and represents a tremendous data curation and analysis effort. We do, however, want to question the notion that “literary greatness” can be measured by the number of physical copies of a book held on library shelves. It is important to dig into data that is used to make universal claims, especially when it evidences such strong biases toward a single linguistic tradition, toward particular geographic regions, and toward individual authors. John Grisham’s work appears nineteen times on this list, Charles Dickens’s work appears fifteen times, and John Steinbeck and C.S. Lewis’s work each appears eight times. What does it mean to posit that these four men wrote ten percent of the greatest novels across all languages and cultures across all time?

-

While each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis here [LINK_TO_ACTIVITIES_TAB].

+

While each of these works deserves individual attention, looking at literary data in aggregate can help to reveal some of these biases and trends across a larger number of texts, and across library collections. We hope this dataset provides fruitful opportunities for exploration, and we have included a few more suggestions for analysis here.

References

@@ -1192,107 +1283,91 @@

References

- -
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-