├── media
└── newspeak_logo.png
├── voter_engagement
├── arial.ttf
├── form.jpg
├── Postal-vote-application-form.pdf
├── sample_responses.csv
├── README.md
└── automated email.ipynb
├── requirements.txt
├── environment.yml
├── pdf_parsing
└── README.md
├── fake_news
├── README.md
├── USING TWITTER API TO BUILD A DATASET.ipynb
└── all_uk_mps.csv
└── README.md
/media/newspeak_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/john-sandall/democracy-hackathon/master/media/newspeak_logo.png
--------------------------------------------------------------------------------
/voter_engagement/arial.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/john-sandall/democracy-hackathon/master/voter_engagement/arial.ttf
--------------------------------------------------------------------------------
/voter_engagement/form.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/john-sandall/democracy-hackathon/master/voter_engagement/form.jpg
--------------------------------------------------------------------------------
/voter_engagement/Postal-vote-application-form.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/john-sandall/democracy-hackathon/master/voter_engagement/Postal-vote-application-form.pdf
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | atomicwrites==1.3.0
2 | attrs==19.1.0
3 | certifi==2019.6.16
4 | chardet==3.0.4
5 | cycler==0.10.0
6 | idna==2.8
7 | importlib-metadata==0.18
8 | joblib==0.13.2
9 | kiwisolver==1.1.0
10 | matplotlib==3.1.1
11 | maven==0.0.6
12 | more-itertools==7.1.0
13 | numpy==1.16.4
14 | packaging==19.0
15 | pandas==0.24.2
16 | patsy==0.5.1
17 | pluggy==0.12.0
18 | py==1.8.0
19 | pyparsing==2.4.0
20 | pytest==5.0.1
21 | python-dateutil==2.8.0
22 | pytz==2019.1
23 | requests==2.22.0
24 | scikit-learn==0.21.2
25 | scipy==1.3.0
26 | seaborn==0.9.0
27 | six==1.12.0
28 | statsmodels==0.10.0
29 | tornado==6.0.3
30 | urllib3==1.25.3
31 | wcwidth==0.1.7
32 | xlrd==1.2.0
33 | zipp==0.5.2
34 |
--------------------------------------------------------------------------------
/voter_engagement/sample_responses.csv:
--------------------------------------------------------------------------------
1 | Timestamp,Email Address,First name(s) (in full),Surname,Your address (where you are registered to vote),Address for ballot paper (If different to your registration address),"Reason for different address, when it's different to my registered address (optional) Upto 280 characters",Submit the e-signature (in JPG format),Date of birth
2 | 7/13/2019 15:00:47,agata.sumowska@gmail.com,Agata Sumowska,Sumowska,6 Catland square E1 5PL,,,https://drive.google.com/open?id=1FQtgQUFDXBNOakTxeGV17u_Q7KNP__IP,
3 | 7/13/2019 15:15:03,agata.sumowska@gmail.com,Agata,Sumowska,6 Catland street,,,https://drive.google.com/open?id=1Gy8fODnplZK-0cglCgSS4OT3YPpftMdn,3/20/1990
4 | 7/13/2019 15:16:02,agata.sumowska@thoughtworks.com,Kat,Catty,6 Litter street,,,https://drive.google.com/open?id=1OGLJkNQHWEJ_QmtMHClEr1xOA2aucZ6t,6/25/1990
--------------------------------------------------------------------------------
/environment.yml:
--------------------------------------------------------------------------------
1 | name: democracy-hackathon
2 | channels:
3 | - conda-forge
4 | - defaults
5 | dependencies:
6 | - bzip2=1.0.6=h1de35cc_1002
7 | - ca-certificates=2019.6.16=hecc5488_0
8 | - certifi=2019.6.16=py37_0
9 | - cycler=0.10.0=py_1
10 | - freetype=2.10.0=h24853df_0
11 | - joblib=0.13.2=py_0
12 | - kiwisolver=1.1.0=py37h770b8ee_0
13 | - libblas=3.8.0=10_openblas
14 | - libcblas=3.8.0=10_openblas
15 | - libcxx=8.0.0=4
16 | - libcxxabi=8.0.0=4
17 | - libffi=3.2.1=h6de7cb9_1006
18 | - libgfortran=3.0.1=0
19 | - liblapack=3.8.0=10_openblas
20 | - libopenblas=0.3.6=hd44dcd8_4
21 | - libpng=1.6.37=h2573ce8_0
22 | - lightgbm=2.2.1=py37he6710b0_0
23 | - llvm-openmp=8.0.0=h770b8ee_0
24 | - matplotlib=3.1.1=py37_0
25 | - matplotlib-base=3.1.1=py37h3a684a6_0
26 | - ncurses=6.1=h0a44026_1002
27 | - numpy=1.16.4=py37h6b0580a_0
28 | - openblas=0.3.6=hd44dcd8_4
29 | - openssl=1.1.1c=h01d97ff_0
30 | - pandas=0.24.2=py37h86efe34_0
31 | - patsy=0.5.1=py_0
32 | - pip=19.1.1=py37_0
33 | - pyparsing=2.4.0=py_0
34 | - python=3.7.3=h93065d6_1
35 | - python-dateutil=2.8.0=py_0
36 | - pytz=2019.1=py_0
37 | - readline=8.0=hcfe32e1_0
38 | - scikit-learn=0.21.2=py37hd4ffd6c_1
39 | - scipy=1.3.0=py37hab3da7d_0
40 | - seaborn=0.9.0=py_1
41 | - setuptools=41.0.1=py37_0
42 | - six=1.12.0=py37_1000
43 | - sqlite=3.29.0=hb7d70f7_0
44 | - statsmodels=0.10.0=py37heacc8b8_0
45 | - tk=8.6.9=h2573ce8_1002
46 | - tornado=6.0.3=py37h01d97ff_0
47 | - wheel=0.33.4=py37_0
48 | - xz=5.2.4=h1de35cc_1001
49 | - zlib=1.2.11=h1de35cc_1004
50 | - pip:
51 | - atomicwrites==1.3.0
52 | - attrs==19.1.0
53 | - chardet==3.0.4
54 | - idna==2.8
55 | - importlib-metadata==0.18
56 | - maven==0.0.6
57 | - more-itertools==7.1.0
58 | - packaging==19.0
59 | - pluggy==0.12.0
60 | - py==1.8.0
61 | - pytest==5.0.1
62 | - requests==2.22.0
63 | - urllib3==1.25.3
64 | - wcwidth==0.1.7
65 | - xlrd==1.2.0
66 | - zipp==0.5.2
67 |
--------------------------------------------------------------------------------
/voter_engagement/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | # PyData 2019 Democracy Hackathon: Voter Engagement
5 |
6 |
7 | ## Description
8 | The goal of this challenge is simple, find a hack to improve voter turnout.
9 |
10 | There are some existing projects like [where do I vote](https://wheredoivote.co.uk/), that make the process of finding your polling station easy and many companies have tools that allow individuals to promote that they have voted with the intention of encouraging others to do so. So here's a few idea's to get you started:
11 |
12 | ### Postal vote uptake
13 | Beyond any distinguishable demographic, postal voters have the highest turnout rates, averaging 85% accross the country. A [study undertaken in the early 2000's](https://www.theguardian.com/society/2004/jun/08/localgovernment.voterapathy) by the government showed the improvements for local elections (which have a lower turnout generally) were even greater, and for a period the Electoral Comission's official advice was to make postal voting the default for local and regional elections. Moving to a postal vote can also protect those disenfranchised by ID checks, which are not a requirement when voting by post.
14 |
15 | You can find a copy of the standard postal vote from [here](https://www.yourvotematters.co.uk/__data/assets/pdf_file/0019/222454/Postal-vote-application-form.pdf). The biggest obstacle to adoption is the effort it takes to submit - either by post or scanned than emailed (a signature is required during registration which is matched against a signature you provide when voting). Success here is promoting or making it easier to sign up for postal votes.
16 |
17 | ### The easy campaign
18 | Can we make it easier for the civic minded to promote voting to people they know? Platforms like 'Facebook' now have an I voted button, and [they say it's good for turnout](https://www.theguardian.com/technology/2018/apr/15/facebook-says-it-voter-button-is-good-for-turn-but-should-the-tech-giant-be-nudging-us-at-all). It could be a tool to share information like when do I vote and where. Even if people already have this information, being reminded improves the likelihood they'll turnout - you can't encourage somone to vote too much!
19 |
--------------------------------------------------------------------------------
/pdf_parsing/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | # PyData 2019 Democracy Hackathon: PDF Parsing Challenge
5 |
6 |
7 | ## Description
8 | The goal of this challenge is to extract useful data and information from PDF's containing civic data. This can be a difficult task, but even the slightest progress can have a big impact. We have a few ideas to get you started, but any civic data not already in a usable format is fair game!
9 |
10 |
11 |
12 | ## Candidate data
13 | [The Democracy Club](https://democracyclub.org.uk/) collects data on every candidate standing for election in the UK. The official source of candidate information comes from a “Statement of Persons Nominated” (SOPN) published by each local authority that is managing an election. The statement is normally published as a PDF on each local authority’s website.
14 |
15 | At the moment, with the help of thousands of crowdsourcers, they collect the links to all the PDFs on the day they’re published. Then manually enter the information [(sometimes as SOPN parties)](https://docs.google.com/document/d/1uTnqugmUuhUQQrl_lA8I_MIX86KPK_Iw8FiZrCXiUOk/edit#) into a structured format using their [crowdsourcing website](https://candidates.democracyclub.org.uk/).
16 |
17 | Can we automate or speed up this work?
18 |
19 | [Sym Roe's](https://twitter.com/symroe) ['Machine learning to help elections'](https://democracyclub.org.uk/blog/2018/03/12/machine-learning-help-elections/) contains information about how the data is structured in the PDF's and a link to download a few thousand SOPN's (1.3gb if the internet is slow we can air drop them to you).
20 |
21 | You can dive straight into the PDF's and try to extract the data, or work on some of the articles suggested hybrid approaches that can speed up the manual processing of SOPN's. These SOPN's have already been processed, so we're aiming to develop tools for future elections.
22 |
23 |
24 |
25 |
26 |
27 | ## Polls
28 | Polls are more varied in their design and more challenging. A number of organisations aim to aggregate polling data, but like the good people at The Democracy Club, they also manually process it.
29 |
30 | Each pollster has a different design, so choose your battle wisely. A few of the more prominent pollsters who release in PDF format are [IPSOS MORI](https://www.ipsos.com/sites/default/files/2017-06/pm-election-2017-final-tables.pdf),
31 | [YouGov](https://d25d2506sfb94s.cloudfront.net/cumulus_uploads/document/o8pit1boew/TheTimes_190703_VI_Trackers_w.pdf), and [Survation](https://survation.com/wp-content/uploads/2017/06/Survation-GE2017-Final-Poll-2d7l9l8.pdf).
32 |
33 | #### Links to get you started
34 | - [Links to recent polls - Wikipedia](https://en.wikipedia.org/wiki/Opinion_polling_for_the_next_United_Kingdom_general_election#2019)
35 | - [Links to 2017 polls - Six Fifty](https://sixfifty.org.uk/polls)
36 | - [On building an automated polling pipeline](https://sixfifty.org.uk/2017/05/21/building-sixfiftys-election-tracker/)
37 | - [How polling works](https://sixfifty.org.uk/2017/04/29/how-polling-works/)
38 |
39 |
--------------------------------------------------------------------------------
/voter_engagement/automated email.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "# -*- coding: utf-8 -*-\n",
10 | "\"\"\"\n",
11 | "Spyder Editor\n",
12 | "\n",
13 | "This is a temporary script file.\n",
14 | "\"\"\"\n",
15 | "\n",
16 | "import smtplib, ssl\n",
17 | "from email import encoders\n",
18 | "from email.mime.base import MIMEBase\n",
19 | "from email.mime.multipart import MIMEMultipart\n",
20 | "from email.mime.text import MIMEText\n",
21 | "\n",
22 | "smtp_server = \"smtp.office365.com\"\n",
23 | "port = 587 # For starttls\n",
24 | "sender_email = \"pydatademo@outlook.com\"\n",
25 | "password = input(\"Type your password and press enter: \")\n",
26 | "receiver_email = \"pydatademo@outlook.com\"\n",
27 | "subject = \"An email with attachment from Python\"\n",
28 | "body = \"This is an email with attachment sent from Python\"\n",
29 | "\n",
30 | "# Create a multipart message and set headers\n",
31 | "message = MIMEMultipart()\n",
32 | "message[\"From\"] = sender_email\n",
33 | "message[\"To\"] = receiver_email\n",
34 | "message[\"Subject\"] = subject\n",
35 | "message[\"Bcc\"] = receiver_email # Recommended for mass emails\n",
36 | "\n",
37 | "message.attach(MIMEText(body, \"plain\"))\n",
38 | "\n",
39 | "filename = \"Postal-vote-application-form.pdf\" # In same directory as script\n",
40 | "\n",
41 | "# Open PDF file in binary mode\n",
42 | "with open(filename, \"rb\") as attachment:\n",
43 | " # Add file as application/octet-stream\n",
44 | " # Email client can usually download this automatically as attachment\n",
45 | " part = MIMEBase(\"application\", \"octet-stream\")\n",
46 | " part.set_payload(attachment.read())\n",
47 | "\n",
48 | "# Encode file in ASCII characters to send by email \n",
49 | "encoders.encode_base64(part)\n",
50 | "\n",
51 | "# Add header as key/value pair to attachment part\n",
52 | "part.add_header(\n",
53 | " \"Content-Disposition\",\n",
54 | " f\"attachment; filename= {filename}\",\n",
55 | ")\n",
56 | "\n",
57 | "# Add attachment to message and convert message to string\n",
58 | "message.attach(part)\n",
59 | "text = message.as_string()\n",
60 | "\n",
61 | "# Create a secure SSL context\n",
62 | "context = ssl.create_default_context()\n",
63 | "\n",
64 | "# Try to log in to server and send email\n",
65 | "try:\n",
66 | " server = smtplib.SMTP(smtp_server,port)\n",
67 | " server.ehlo() # Can be omitted\n",
68 | " server.starttls(context=context) # Secure the connection\n",
69 | " server.ehlo() # Can be omitted\n",
70 | " server.login(sender_email, password)\n",
71 | " # TODO: Send email here\n",
72 | " server.sendmail(sender_email, receiver_email, text)\n",
73 | "except Exception as e:\n",
74 | " # Print any error messages to stdout\n",
75 | " print(e)\n",
76 | "finally:\n",
77 | " server.quit()"
78 | ]
79 | }
80 | ],
81 | "metadata": {
82 | "kernelspec": {
83 | "display_name": "Python 3",
84 | "language": "python",
85 | "name": "python3"
86 | },
87 | "language_info": {
88 | "codemirror_mode": {
89 | "name": "ipython",
90 | "version": 3
91 | },
92 | "file_extension": ".py",
93 | "mimetype": "text/x-python",
94 | "name": "python",
95 | "nbconvert_exporter": "python",
96 | "pygments_lexer": "ipython3",
97 | "version": "3.7.1"
98 | }
99 | },
100 | "nbformat": 4,
101 | "nbformat_minor": 2
102 | }
103 |
--------------------------------------------------------------------------------
/fake_news/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # PyData 2019 Democracy Hackathon: Fake news, facts and sentiment (Twitter)
6 |
7 |
8 | ## Description
9 | With over 500 members of parliament on Twitter it's a valuable source of direct data from the countries representatives. The goal of this challenge is to harness this information, developing new insights using data available through Twitter's API.
10 |
11 | Whether it's spotting fake news, confirming facts, analysing sentiment or frequency of tweets by topic, the possibilities are endless.
12 |
13 | To get you started we have the most recent 1,000 tweets from every UK politician who operates a Twitter account [(available here)](https://drive.google.com/open?id=1Zh4TpqnDnU9gza6XVlAi4t1G7oYu6J5e), but there are a number of directions you might choose to take.
14 |
15 |
16 | Some establish political twitter projects include:
17 | - [MP's on Twitter: Aggregate statistics, most mentioned users and hashtags etc.](https://www.mpsontwitter.co.uk/)
18 | - [Politiwoops: MP's deleted tweets](https://www.politwoops.co.uk/p/ukmps)
19 |
20 | And some examples of analysis using twitter data:
21 | - [BBC: Which MPs don't display party allegiance on Twitter?](https://www.bbc.co.uk/news/uk-politics-42778241)
22 | - [Portland communications: House of Tweets: Understanding the social networks of MPs](https://portland-communications.com/2017/10/26/house-of-tweets/)
23 | - [Commons Library: The use of Twitter by MPs in parliamentary debate](https://commonslibrary.parliament.uk/insights/the-use-of-social-media-by-mps-in-parliamentary-debate/)
24 |
25 |
26 |
27 | ## What's available through the API
28 | In the 'Using Twitter API to build a dataset notebook' you will find the code for making an API call on a Twitter users timeline. This API is set up to collect the following information:
29 | - User
30 | - Tweet time
31 | - Location (if available)
32 | - Hashtags
33 | - Source device
34 | - Tweet text
35 | - Retweet text (if retweet, contains full text - 'tweet text' is truncated if retweet and over 140 characters)
36 | - Quote text (if quote)
37 | - Quote screen name
38 | - Status count (number of tweets to date)
39 | - Favourite and retweet count (at time of call)
40 |
41 | The 1,000 tweets available in the csv have been made using the call function in the Twitter API notebook so will have this information available.
42 |
43 | [Tweepy](http://docs.tweepy.org/en/latest/) is used to interact with Twitter's API.
44 |
45 | See here for a full list of [Twitter API calls](https://developer.twitter.com/en/docs/api-reference-index.html).
46 |
47 |
48 | ## Ideas to get you started
49 | #### Perform analysis on the existing data set
50 | - Is there any way we can validate the truthfulness of objective statements made in tweets.
51 | - Sentiment analysis of tweets by party/topic/constituency using [NLP libraries](https://elitedatascience.com/python-nlp-libraries)
52 | - Frequency of tweets by topic or key words (over time)
53 | - Network analysis - who retweets who and what can it tell us?
54 | - Retweet favourite counts - which politicians and topics get the most traction
55 |
56 | Depending on how you choose to visualise your data, there may be a large number of data points in your plots. The [Plotly library](https://plot.ly/python/getting-started/) provides interactive visualisations that allow for zooming that maintains the resolution of plots. [This article](https://towardsdatascience.com/the-next-level-of-data-visualization-in-python-dd6e99039d5e) is a great starting point for users new to Plotly.
57 |
58 | #### Acquire more data and analyse that
59 | - API calls on large datasets can take a while, but if you are interested in just a few users you can use the call function to acquire their most recent 3,200 tweets in a relatively short time.
60 | - We already have a list of MP's twitter username, but there are other groups (for example journalists) that we may want to analyse in future, can you identify a group and collect screen names and user id's for future analysis. [This article](https://towardsdatascience.com/use-google-and-tweepy-to-build-a-dataset-of-twitter-users-cbfd556493a9) details how you can use a different API call to collect existing twitter lists that feature key words.
61 |
62 | #### Scale up
63 | - How can we improve on or create new projects like politwoops and MP's on twitter that provide valuable up to date information on the activity of politicians and associated groups. What assets would be needed to sustain such a project?
64 |
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |

3 |
4 |

5 |
6 |
7 | # PyData 2019 Democracy Hackathon
8 | Code and resources for the [PyData 2019 Democracy Hackathon](https://pydata.org/london2019/schedule/presentation/59/) (Saturday 13:30-15:45 in the Mortimer Room). Hosted by Newspeak House Fellow [John Sandall](https://twitter.com/john_sandall) and [Richard Chadwick](https://medium.com/@richchad).
9 |
10 | - - -
11 |
12 | ## Description
13 |
14 | Data and technology can be powerful tools for understanding and improving the democratic process. Instead of weaponising these tools to produce unfair advantages, driving mistrust and disenfranchisement, the data community can also do the opposite. This hackathon isn't "[The Great Hack](https://www.sciencemuseum.org.uk/see-and-do/great-hack-london-premiere-qa)", but it will be a hack, it will be great, and it will be using data for good.
15 |
16 | Why do some people exercise their right to vote whilst others stay at home? In an era of contentious discourse and political scandals, how can we restore democratic faith and trust in our elected representatives?
17 |
18 | In this hackathon, hosted by [Newspeak House](https://www.nwspk.com/), we present a series of challenges and datasets compiled by civic tech organisations working to upgrade democracy for the digital age. We will provide working examples, open ended challenges as well as a Kaggle-style prediction competition, and plenty of support if this is your first data hackathon!
19 |
20 | > Newspeak House is an independent residential college founded in 2015 to study, nurture and inspire emerging communities of practice across UK public sector and civil society. Find out more [@nwspk](https://twitter.com/nwspk) or come to one our [upcoming events](https://www.nwspk.com/events) in Shoreditch.
21 |
22 |
23 | ## Themes & Prize Categories
24 |
25 | - **Machine learning competition.** There will be a Kaggle-style machine learning competition for predicting the turnout of UK general elections. [SixFifty](https://sixfifty.org.uk) has been working hard to source and produce model-ready datasets for solving this problem. All that remains is for someone to solve it!
26 | - **Voter engagement.** For the hack most likely to get more people to turnout.
27 | - **Open data for democracy.** Help improve discoverability and accessibility of open datasets and streamline getting them from raw to model-ready by contributing to [Maven](https://pypi.org/project/maven/). Maven aims to reduce the time data scientists spend on data cleaning and preparation by providing easy access to open datasets in both raw and processed formats.
28 | - **Painless parsing of political PDFs.** A huge amount of civic data is published as tables trapped in PDF prisons. Work towards liberating this information and set it free!
29 | - **Fake news, misinformation & public sentiment.** It's becoming harder to distinguish legitimate news from demonstrably false news, and with a few taps we can instantly share the stories we consume on our phones to our social networks. More news doesn't mean better news, and big tech companies are increasingly having to moderate and filter the content they host. How can we use the vast quantity of information at our fingertips to create tools or insights into improving the quality of the information we receive online?
30 | - **Wildcard prize.** The theme is democracy. The goal is a better world. You define how we get there. Should Parliament move to another city? What would be the perfect voting system? Perhaps we should back to the [wapentake](https://en.wikipedia.org/wiki/Hundred_%28county_division%29#wapentake) or the [Thing](https://en.wikipedia.org/wiki/Thing_%28assembly%29)? Should Parliament delegate constitutionally contentious issues to a citizens assembly? Should we replace all branches of Government with a Superintelligent AI?
31 |
32 |
33 | ## Datasets
34 |
35 | You don't have to use these, but they're a good start.
36 |
37 | ### General
38 | - **[UK Politics Datasets](http://bit.ly/UKPoliticsDatasets):** Crowdsourced document of links to useful datasets & munging tools. Candidates, polling stations, constituencies, parliament voting records, parliament speeches, Hansard, previous election/referendum results, registered financial interests, boundary maps, shapefiles, campaign expenses, registration rates, candidates CVs, constituency stats, GE2017 manifestos…
39 | - **[Democracy Club](https://democracyclub.org.uk/data/):** Election identifiers, candidates' info since 2010 (name, email, photos, social media), polling stations, all [CC-BY-SA](https://creativecommons.org/licenses/by-sa/3.0/).
40 | - **[mySociety](https://www.mysociety.org/democracy/):** mySociety have created a range of tools including [Parliamentary Monitoring](https://www.mysociety.org/projects/parliamentary-monitoring/pombola/), structured data on [every national politician in the world](https://www.mysociety.org/projects/parliamentary-monitoring/everypolitician/), information on [election candidates](https://www.mysociety.org/projects/parliamentary-monitoring/yournextrepresentative/) around the world, how to [contact elected representatives](https://www.mysociety.org/democracy/writeinpublic/), the [constituency/postcode matching tool MapIt](https://www.mysociety.org/projects/parliamentary-monitoring/mapit/), and published [transcripts from all levels of government](https://www.mysociety.org/projects/parliamentary-monitoring/sayit).
41 | - **mySociety Geographic data:** When it comes to building predictive models, geocoded data is quite handy. Official "open" data portals can be [broken](http://webarchive.nationalarchives.gov.uk/20160105160709/https://geoportal.statistics.gov.uk/geoportal/catalog/main/home.page), or the data only available via [mail-order CD](https://data.gov.uk/dataset/lower_layer_super_output_area_lsoa_boundaries), so mySociety's cache of [OS, ONS, and OSNI open geographic data](http://parlvid.mysociety.org/os/) going back to 2010 is a gold mine.
42 |
43 | ### Turnout modelling competition
44 | - **Start with the [notebook in `turnout_model`](https://github.com/john-sandall/democracy-hackathon/blob/master/turnout_model/GE2017%20-%20Turnout%20model.ipynb)**.
45 | - **[SixFifty Datasets](https://github.com/six50/pipeline):** Model-ready datasets for 2010/2015 elections, EU referendum, [opinion polling at national/regional levels](https://github.com/six50/pipeline/tree/master/data/polls), all available in CSV, JSON and Feather.
46 | - **Opinion polling data:** In 2017 SixFifty created a manually curated set of poll results can be downloaded in [JSON](https://s3-eu-west-1.amazonaws.com/sixfifty/polls.json), [CSV](https://s3-eu-west-1.amazonaws.com/sixfifty/polls.csv) or [Feather](https://s3-eu-west-1.amazonaws.com/sixfifty/polls.feather). See [data/polls/](https://github.com/six50/hackathon/tree/master/data/polls/) for more information including a data dictionary.
47 |
48 | ### Voter engagement
49 | - **Start with the [README in `voter_engagement`](https://github.com/john-sandall/democracy-hackathon/tree/master/voter_engagement)**.
50 | - To understand what's been tried before, take a look at the tools and projects that were developed for the 2017 General Election. In the **[GE2017 Tech Initiatives Handbook](http://bit.ly/GE2017TechHandbook)** you'll find a collection of resources, datasets, volunteers, existing projects, proposed projects.
51 |
52 | ### Open data for democracy
53 | - **Start with [Maven](https://pypi.org/project/maven/)**. How can we make commonly used datasets (e.g. those listed in [Newspeak's Politics Datasets](http://bit.ly/UKPoliticsDatasets) or under the "General" heading above) easier to discover, download and process?
54 |
55 | ### PDF parsing
56 | - **Start with the [README in `pdf_parsing`](https://github.com/john-sandall/democracy-hackathon/tree/master/pdf_parsing)**.
57 |
58 | ### Fake news, misinformation & public sentiment
59 | - **Start with the [README in `fake_news`](https://github.com/john-sandall/democracy-hackathon/tree/master/fake_news)**.
60 | - **[Political Twitter](https://drive.google.com/open?id=1jJRsDPNrh9JoHGcgWYt_1KyrQwVOLmM7):** [Richard](https://medium.com/@richchad) has scraped a collection of tweets from UK politicians.
61 |
62 | ### Wildcard prize
63 | - Start with **_[So you want to reform democracy?](https://medium.com/civic-tech-thoughts-from-joshdata/so-you-want-to-reform-democracy-7f3b1ef10597)_**, but don't be disheartened! One thing is for sure, the world in 100 years will be very different.
64 |
65 |
66 | ## Schedule
67 | - **13:30** – Introduction to challenges & datasets.
68 | - **13:50** – Hacking time!
69 | - **15:25** – Presentations & wrapup.
70 | - **15:45** – Event ends.
71 |
72 |
73 | ## Code of Conduct
74 | All attendees are expected to abide by the NumFOCUS Code of Conduct. Please take this opportunity to review it.
75 |
76 | Be kind to others. Do not insult or put down others. Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes and language are not appropriate for PyData. All communication should be appropriate for a professional audience including people of many different backgrounds. Sexual language and imagery is not appropriate. PyData is dedicated to providing a harassment-free event experience for everyone, regardless of gender, sexual orientation, gender identity, and expression, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of participants in any form. Thank you for helping make this a welcoming, friendly community for all.
77 |
78 | The full Code of Conduct and additional information can be found [here](https://pydata.org/code-of-conduct/).
79 |
80 | If you wish to submit a Code of Conduct report [click here](https://numfocus.typeform.com/to/ynjGdT/).
81 |
--------------------------------------------------------------------------------
/fake_news/USING TWITTER API TO BUILD A DATASET.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | " ## Using Twitter to Build your own Dataset"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "The first two steps in [Introduction to tweepy](https://towardsdatascience.com/tweepy-for-beginners-24baf21f2c25) provides instruction on how to acquire Twitter API credentials and install Tweepy."
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 1,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import tweepy\n",
24 | "import datetime\n",
25 | "import pandas as pd\n",
26 | "import time"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 2,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "data": {
36 | "text/html": [
37 | "\n",
38 | "\n",
51 | "
\n",
52 | " \n",
53 | " \n",
54 | " | \n",
55 | " Name | \n",
56 | " Screen Name | \n",
57 | " Constituency | \n",
58 | " Party | \n",
59 | " Followers | \n",
60 | "
\n",
61 | " \n",
62 | " \n",
63 | " \n",
64 | " | 0 | \n",
65 | " Adam Afriyie | \n",
66 | " AdamAfriyie | \n",
67 | " Windsor | \n",
68 | " Conservative | \n",
69 | " 13,520 | \n",
70 | "
\n",
71 | " \n",
72 | " | 1 | \n",
73 | " Alan Duncan | \n",
74 | " AlanDuncanMP | \n",
75 | " Rutland and Melton | \n",
76 | " Conservative | \n",
77 | " 23,984 | \n",
78 | "
\n",
79 | " \n",
80 | " | 2 | \n",
81 | " Alan Mak | \n",
82 | " AlanMakMP | \n",
83 | " Havant | \n",
84 | " Conservative | \n",
85 | " 7,844 | \n",
86 | "
\n",
87 | " \n",
88 | " | 3 | \n",
89 | " Alberto Costa | \n",
90 | " AlbertoCostaMP | \n",
91 | " South Leicestershire | \n",
92 | " Conservative | \n",
93 | " 8,358 | \n",
94 | "
\n",
95 | " \n",
96 | " | 4 | \n",
97 | " Alec Shelbrooke | \n",
98 | " AlecShelbrooke | \n",
99 | " Elmet and Rothwell | \n",
100 | " Conservative | \n",
101 | " 14,473 | \n",
102 | "
\n",
103 | " \n",
104 | "
\n",
105 | "
"
106 | ],
107 | "text/plain": [
108 | " Name Screen Name Constituency Party \\\n",
109 | "0 Adam Afriyie AdamAfriyie Windsor Conservative \n",
110 | "1 Alan Duncan AlanDuncanMP Rutland and Melton Conservative \n",
111 | "2 Alan Mak AlanMakMP Havant Conservative \n",
112 | "3 Alberto Costa AlbertoCostaMP South Leicestershire Conservative \n",
113 | "4 Alec Shelbrooke AlecShelbrooke Elmet and Rothwell Conservative \n",
114 | "\n",
115 | " Followers \n",
116 | "0 13,520 \n",
117 | "1 23,984 \n",
118 | "2 7,844 \n",
119 | "3 8,358 \n",
120 | "4 14,473 "
121 | ]
122 | },
123 | "execution_count": 2,
124 | "metadata": {},
125 | "output_type": "execute_result"
126 | }
127 | ],
128 | "source": [
129 | "mp = pd.read_csv('all_uk_mps.csv')\n",
130 | "\n",
131 | "mp.head()"
132 | ]
133 | },
134 | {
135 | "cell_type": "code",
136 | "execution_count": null,
137 | "metadata": {},
138 | "outputs": [],
139 | "source": [
140 | "#create list of screen names to call\n",
141 | "screen_names = mp['Screen Name']"
142 | ]
143 | },
144 | {
145 | "cell_type": "code",
146 | "execution_count": null,
147 | "metadata": {},
148 | "outputs": [],
149 | "source": [
150 | "#Set up miner class\n",
151 | "class TweetMiner(object):\n",
152 | "\n",
153 | " result_limit = 20 \n",
154 | " data = []\n",
155 | " api = False\n",
156 | " \n",
157 | " twitter_keys = {\n",
158 | " 'consumer_key': '-------YOUR KEY HERE-------',\n",
159 | " 'consumer_secret': '-------YOUR KEY HERE-------',\n",
160 | " 'access_token_key': '-------YOUR KEY HERE-------',\n",
161 | " 'access_token_secret': '-------YOUR KEY HERE-------'\n",
162 | "}\n",
163 | " \n",
164 | " \n",
165 | " def __init__(self, keys_dict=twitter_keys, api=api, result_limit = 20):\n",
166 | " \n",
167 | " self.twitter_keys = keys_dict\n",
168 | " \n",
169 | " auth = tweepy.OAuthHandler(keys_dict['consumer_key'], keys_dict['consumer_secret'])\n",
170 | " auth.set_access_token(keys_dict['access_token_key'], keys_dict['access_token_secret'])\n",
171 | " \n",
172 | " self.api = tweepy.API(auth)\n",
173 | " self.twitter_keys = keys_dict\n",
174 | " \n",
175 | " self.result_limit = result_limit\n",
176 | " \n",
177 | "\n",
178 | " def mine_user_tweets(self, user=\"dril\", #BECAUSE WHO ELSE!\n",
179 | " mine_rewteets=False,\n",
180 | " max_pages=5):\n",
181 | "\n",
182 | " data = []\n",
183 | " last_tweet_id = False\n",
184 | " page = 1\n",
185 | " \n",
186 | " while page <= max_pages:\n",
187 | " if last_tweet_id:\n",
188 | " statuses = self.api.user_timeline(screen_name=user,\n",
189 | " count=self.result_limit,\n",
190 | " max_id=last_tweet_id - 1,\n",
191 | " tweet_mode = 'extended',\n",
192 | " include_retweets=True\n",
193 | " ) \n",
194 | " else:\n",
195 | " statuses = self.api.user_timeline(screen_name=user,\n",
196 | " count=self.result_limit,\n",
197 | " tweet_mode = 'extended',\n",
198 | " include_retweets=True)\n",
199 | " \n",
200 | " for item in statuses:\n",
201 | "\n",
202 | " mined = {\n",
203 | " 'tweet_id': item.id,\n",
204 | " 'name': item.user.name,\n",
205 | " 'screen_name': item.user.screen_name,\n",
206 | " 'retweet_count': item.retweet_count,\n",
207 | " 'text': item.full_text,\n",
208 | " 'mined_at': datetime.datetime.now(),\n",
209 | " 'created_at': item.created_at,\n",
210 | " 'favourite_count': item.favorite_count,\n",
211 | " 'hashtags': item.entities['hashtags'],\n",
212 | " 'status_count': item.user.statuses_count,\n",
213 | " 'location': item.place,\n",
214 | " 'source_device': item.source\n",
215 | " }\n",
216 | " \n",
217 | " try:\n",
218 | " mined['retweet_text'] = item.retweeted_status.full_text\n",
219 | " except:\n",
220 | " mined['retweet_text'] = 'None'\n",
221 | " try:\n",
222 | " mined['quote_text'] = item.quoted_status.full_text\n",
223 | " mined['quote_screen_name'] = status.quoted_status.user.screen_name\n",
224 | " except:\n",
225 | " mined['quote_text'] = 'None'\n",
226 | " mined['quote_screen_name'] = 'None'\n",
227 | " \n",
228 | " last_tweet_id = item.id\n",
229 | " data.append(mined)\n",
230 | " \n",
231 | " page += 1\n",
232 | " \n",
233 | " return data "
234 | ]
235 | },
236 | {
237 | "cell_type": "code",
238 | "execution_count": null,
239 | "metadata": {},
240 | "outputs": [],
241 | "source": [
242 | "def twitter_call(screen_names, result_limit=20, max_pages=1, sleep=0, sleep_counter=40):\n",
243 | " \"\"\"screen_names: list of strings - should not include the @ precedding username\n",
244 | " result_limit: (0-200)\n",
245 | " max_pages: (0-17)\n",
246 | " sleep: (0-900)\n",
247 | " sleep_activate: \n",
248 | " \n",
249 | " max_pages * result_limit = number of tweets collected for each handle\n",
250 | " Cap on tweets collected = 3200 (result_limit=200, max_pages=17)\n",
251 | " sleep timer should be set to 900 when collecting max tweets for each username i.e. 15 mins, at which\n",
252 | " point limits are refreshed \n",
253 | " sleep counter sets number of usernames called before sleep timer kicks in, 40 works for max tweets, \n",
254 | " can be increased if tweets collected per user is reduced (proportional adjustment should work)\n",
255 | " \"\"\"\n",
256 | " \n",
257 | " \n",
258 | " counter=0\n",
259 | " twitter_dict={}\n",
260 | " miner=TweetMiner(result_limit=result_limit)\n",
261 | " \n",
262 | " print(len(screen_names), ' accounts in list')\n",
263 | " \n",
264 | " for name in screen_names:\n",
265 | " try:\n",
266 | " twitter_dict[name]=[]\n",
267 | " twitter_dict[name].append(miner.mine_user_tweets(user=name, max_pages=max_pages))\n",
268 | " counter = counter +1\n",
269 | " time.sleep(.1) #makes calls more reliable\n",
270 | " if counter%sleep_counter==0:\n",
271 | " print(counter, ' completed')\n",
272 | " time.sleep(sleep) #15 minute sleep time\n",
273 | " \n",
274 | " #if name invalid print name and remove key\n",
275 | " except:\n",
276 | " print(name, ' not added (invalid, locked, wrong keys or api limit hit)')\n",
277 | " twitter_dict.pop(name)\n",
278 | " \n",
279 | " tweet_df = pd.concat([pd.DataFrame(twitter_dict[i][0]) for i in twitter_dict])\n",
280 | " tweet_df.reset_index(inplace=True, drop=True)\n",
281 | " \n",
282 | " return tweet_df"
283 | ]
284 | },
285 | {
286 | "cell_type": "code",
287 | "execution_count": null,
288 | "metadata": {},
289 | "outputs": [],
290 | "source": [
291 | "tweets = twitter_call(screen_names[:3]) #make test call on first 3 mps, 20 tweets each"
292 | ]
293 | },
294 | {
295 | "cell_type": "code",
296 | "execution_count": null,
297 | "metadata": {},
298 | "outputs": [],
299 | "source": [
300 | "tweets"
301 | ]
302 | },
303 | {
304 | "cell_type": "code",
305 | "execution_count": null,
306 | "metadata": {},
307 | "outputs": [],
308 | "source": [
309 | "#Try your own call and add it to the tweet library\n",
310 | "tweets = twitter_call(screen_names = , result_limit= , max_pages= , sleep=0, sleep_counter=40)"
311 | ]
312 | },
313 | {
314 | "cell_type": "code",
315 | "execution_count": null,
316 | "metadata": {},
317 | "outputs": [],
318 | "source": [
319 | "#For large calls:\n",
320 | "#Gets most recent 1000 tweets of every mp, takes takes around 1hr30\n",
321 | "#tweets_all = twitter_call(screen_names, result_limit=200, max_pages=5, sleep=900, sleep_counter=100)\n",
322 | "\n",
323 | "#Gets most recent 3200 tweets, takes over 3 hours\n",
324 | "#tweets_all = twitter_call(screen_names, result_limit=200, max_pages=17, sleep=900, sleep_counter=35)\n"
325 | ]
326 | },
327 | {
328 | "cell_type": "code",
329 | "execution_count": null,
330 | "metadata": {},
331 | "outputs": [],
332 | "source": [
333 | "tweets.to_csv('enter_descriptive_name.csv')"
334 | ]
335 | }
336 | ],
337 | "metadata": {
338 | "kernelspec": {
339 | "display_name": "Python 3",
340 | "language": "python",
341 | "name": "python3"
342 | },
343 | "language_info": {
344 | "codemirror_mode": {
345 | "name": "ipython",
346 | "version": 3
347 | },
348 | "file_extension": ".py",
349 | "mimetype": "text/x-python",
350 | "name": "python",
351 | "nbconvert_exporter": "python",
352 | "pygments_lexer": "ipython3",
353 | "version": "3.7.1"
354 | }
355 | },
356 | "nbformat": 4,
357 | "nbformat_minor": 2
358 | }
359 |
--------------------------------------------------------------------------------
/fake_news/all_uk_mps.csv:
--------------------------------------------------------------------------------
1 | Name,Screen Name,Constituency,Party,Followers
2 | Adam Afriyie,AdamAfriyie,Windsor,Conservative,"13,520"
3 | Alan Duncan,AlanDuncanMP,Rutland and Melton,Conservative,"23,984"
4 | Alan Mak,AlanMakMP,Havant,Conservative,"7,844"
5 | Alberto Costa,AlbertoCostaMP,South Leicestershire,Conservative,"8,358"
6 | Alec Shelbrooke,AlecShelbrooke,Elmet and Rothwell,Conservative,"14,473"
7 | Alex Burghart,alexburghart,Brentwood and Ongar,Conservative,"2,986"
8 | Alex Chalk,AlexChalkChelt,Cheltenham,Conservative,"7,370"
9 | Alistair Burt,AlistairBurtUK,North East Bedfordshire,Conservative,"25,235"
10 | Alok Sharma,AlokSharma_RDG,Reading West,Conservative,"12,162"
11 | Alun Cairns,AlunCairns,Vale of Glamorgan,Conservative,"12,929"
12 | Amanda Milling,amandamilling,Cannock Chase,Conservative,"7,311"
13 | Amber Rudd,AmberRuddHR,Hastings and Rye,Conservative,"95,022"
14 | Andrea Jenkyns,andreajenkyns,Morley and Outwood,Conservative,"45,593"
15 | Andrea Leadsom,andrealeadsom,South Northamptonshire,Conservative,"97,465"
16 | Andrew Bowie,AndrewBowieMP,West Aberdeenshire and Kincardine,Conservative,"5,193"
17 | Andrew Bridgen,ABridgen,North West Leicestershire,Conservative,"24,305"
18 | Andrew Jones,AJonesMP,Harrogate and Knaresborough,Conservative,"14,106"
19 | Andrew Lewer,ALewerMBE,Northampton South,Conservative,"3,745"
20 | Andrew Rosindell,AndrewRosindell,Romford,Conservative,"14,950"
21 | Andrew Selous,AndrewSelous,South West Bedfordshire,Conservative,"17,552"
22 | Andrew Stephenson,Andrew4Pendle,Pendle,Conservative,"20,277"
23 | Anne Marie Morris,AnneMarieMorris,Newton Abbot,Conservative,"17,986"
24 | Anne Milton,AnneMilton,Guildford,Conservative,"15,029"
25 | Anne-Marie Trevelyan,annietrev,Berwick-upon-Tweed,Conservative,"12,442"
26 | Antoinette Sandbach,Sandbach,Eddisbury,Conservative,"12,387"
27 | Ben Bradley,bbradleymp,Mansfield,Conservative,"11,992"
28 | Ben Wallace,BWallaceMP,Wyre and Preston North,Conservative,"6,061"
29 | Bernard Jenkin,bernardjenkin,Harwich and North Essex,Conservative,"28,992"
30 | Bim Afolami,BimAfolami,Hitchin and Harpenden,Conservative,"7,464"
31 | Bob Blackman,BobBlackman,Harrow East,Conservative,"11,765"
32 | Bob Seely,IoWBobSeely,Isle of Wight,Conservative,"5,981"
33 | Boris Johnson,BorisJohnson,Uxbridge and South Ruislip,Conservative,"613,070"
34 | Brandon Lewis,BrandonLewis,Great Yarmouth,Conservative,"46,222"
35 | Caroline Dinenage,cj_dinenage,Gosport,Conservative,"17,212"
36 | Caroline Nokes,carolinenokes,Romsey and Southampton North,Conservative,"13,812"
37 | Caroline Spelman,spelmanc,Meriden,Conservative,"8,542"
38 | Charlie Elphicke,CharlieElphicke,Dover,Conservative,"17,007"
39 | Cheryl Gillan,CherylGillan,Chesham and Amersham,Conservative,"12,529"
40 | Chloe Smith,NorwichChloe,Norwich North,Conservative,"16,661"
41 | Chris Green,CGreenUK,Bolton West,Conservative,"6,998"
42 | Chris Heaton-Harris,chhcalling,Daventry,Conservative,"17,988"
43 | Chris Philp,CPhilpOfficial,Croydon South,Conservative,"7,540"
44 | Chris Skidmore,CSkidmoreUK,Kingswood,Conservative,"17,654"
45 | Christopher Pincher,ChrisPincher,Tamworth,Conservative,"13,412"
46 | Claire Perry,claireperrymp,Devizes,Conservative,"8,351"
47 | Colin Clark,Colin_J_Clark,Gordon,Conservative,"2,328"
48 | Conor Burns,ConorBurnsUK,Bournemouth West,Conservative,"18,781"
49 | Craig Mackinlay,cmackinlay,South Thanet,Conservative,"8,242"
50 | Craig Tracey,craig4nwarks,North Warwickshire,Conservative,"6,406"
51 | Craig Whittaker,CWhittakerMP,Calder Valley,Conservative,"7,698"
52 | Crispin Blunt,CrispinBlunt,Reigate,Conservative,"10,190"
53 | Damian Collins,DamianCollins,Folkestone and Hythe,Conservative,"27,456"
54 | Damian Green,DamianGreen,Ashford,Conservative,"16,931"
55 | Damian Hinds,DamianHinds,East Hampshire,Conservative,"34,797"
56 | Damien Moore,damienmooremp,Southport,Conservative,"2,133"
57 | Daniel Kawczynski,DKShrewsbury,Shrewsbury and Atcham,Conservative,"17,423"
58 | David Amess,amessd_southend,Southend West,Conservative,"1,995"
59 | David Davis,daviddavismp,Haltemprice and Howden,Conservative,"126,637"
60 | David Duguid,DavidDuguidMP,Banff and Buchan,Conservative,"1,078"
61 | David Evennett,DavidEvennett,Bexleyheath and Crayford,Conservative,"12,257"
62 | David Gauke,DavidGauke,South West Hertfordshire,Conservative,"22,842"
63 | David Jones,DavidJonesMP,Clwyd West,Conservative,"11,014"
64 | David Lidington,DLidington,Aylesbury,Conservative,"25,791"
65 | David Morris,davidmorrisml,Morecambe and Lunesdale,Conservative,"11,825"
66 | David Mundell,DavidMundellDCT,"Dumfriesshire, Clydesdale and Tweeddale",Conservative,"15,120"
67 | David Rutley,DavidRutley,Macclesfield,Conservative,"11,920"
68 | David T. C. Davies,DavidTCDavies,Monmouth,Conservative,"15,255"
69 | David Warburton,DJWarburton,Somerton and Frome,Conservative,"11,456"
70 | Derek Thomas,DerekThomasUK,St Ives,Conservative,"3,373"
71 | Desmond Swayne,DesmondSwayne,New Forest West,Conservative,"5,208"
72 | Dominic Raab,DominicRaab,Esher and Walton,Conservative,"58,582"
73 | Douglas Ross,Douglas4Moray,Moray,Conservative,"7,893"
74 | Dr Andrew Murrison,AWMurrison,South West Wiltshire,Conservative,"12,699"
75 | Dr Caroline Johnson,drcarolinej,Sleaford and North Hykeham,Conservative,"3,807"
76 | Dr Liam Fox,LiamFox,North Somerset,Conservative,"85,697"
77 | Dr Phillip Lee,DrPhillipLeeMP,Bracknell,Conservative,"28,805"
78 | Dr Thérèse Coffey,theresecoffey,Suffolk Coastal,Conservative,"18,248"
79 | Eddie Hughes,EddieHughes4WN,Walsall North,Conservative,"5,022"
80 | Edward Leigh,EdwardLeighMP,Gainsborough,Conservative,"6,691"
81 | Edward Vaizey,edvaizey,Wantage,Conservative,"40,050"
82 | Eleanor Laing,eleanor4epping,Epping Forest,Conservative,"2,119"
83 | Elizabeth Truss,trussliz,South West Norfolk,Conservative,"59,338"
84 | Esther McVey,EstherMcVey1,Tatton,Conservative,"40,372"
85 | Gary Streeter,garystreeterSWD,South West Devon,Conservative,"3,042"
86 | Gavin Williamson,GavinWilliamson,South Staffordshire,Conservative,"45,336"
87 | Geoffrey Cox QC,geoffrey_cox,Torridge and West Devon,Conservative,"29,819"
88 | George Freeman,GeorgeFreemanMP,Mid Norfolk,Conservative,"25,136"
89 | George Hollingbery,GHollingbery,Meon Valley,Conservative,"1,111"
90 | Giles Watling,GilesWatling,Clacton,Conservative,"2,736"
91 | Gillian Keegan,GillianKeegan,Chichester,Conservative,"6,063"
92 | Glyn Davies,GlynDavies,Montgomeryshire,Conservative,"6,471"
93 | Graham Stuart,grahamstuart,Beverley and Holderness,Conservative,"13,726"
94 | Grant Shapps,grantshapps,Welwyn Hatfield,Conservative,"84,621"
95 | Greg Clark,GregClarkMP,Tunbridge Wells,Conservative,"28,961"
96 | Greg Hands,GregHands,Chelsea and Fulham,Conservative,"28,616"
97 | Greg Knight,GregKnight,East Yorkshire,Conservative,"8,392"
98 | Guto Bebb,GutoAberconwy,Aberconwy,Conservative,"2,377"
99 | Guy Opperman,GuyOpperman,Hexham,Conservative,"14,124"
100 | Harriett Baldwin,hbaldwin,West Worcestershire,Conservative,"26,352"
101 | Heather Wheeler,HeatherWheeler,South Derbyshire,Conservative,"16,066"
102 | Helen Grant,HelenGrantMP,Maidstone and The Weald,Conservative,"15,970"
103 | Helen Whately,Helen_Whately,Faversham and Mid Kent,Conservative,"8,874"
104 | Henry Smith,HenrySmithUK,Crawley,Conservative,"13,123"
105 | Hugo Swire,HugoSwire,East Devon,Conservative,"17,424"
106 | Huw Merriman,HuwMerriman,Bexhill and Battle,Conservative,"8,420"
107 | Iain Stewart,iainastewart,Milton Keynes South,Conservative,"15,221"
108 | Jack Lopresti,JackLopresti,Filton and Bradley Stoke,Conservative,"6,359"
109 | Jackie Doyle-Price,JackieDP,Thurrock,Conservative,"8,148"
110 | Jacob Rees-Mogg,Jacob_Rees_Mogg,North East Somerset,Conservative,"290,140"
111 | Jake Berry,JakeBerry,Rossendale and Darwen,Conservative,"16,228"
112 | James Brokenshire,JBrokenshire,Old Bexley and Sidcup,Conservative,"27,229"
113 | James Cartlidge,jc4southsuffolk,South Suffolk,Conservative,"7,328"
114 | James Cleverly,JamesCleverly,Braintree,Conservative,"49,584"
115 | James Duddridge,JamesDuddridge,Rochford and Southend East,Conservative,"15,209"
116 | James Gray,JGray,North Wiltshire,Conservative,"15,888"
117 | James Heappey,JSHeappey,Wells,Conservative,"8,770"
118 | James Morris,JamesMorris,Halesowen and Rowley Regis,Conservative,"7,284"
119 | Jeremy Hunt,Jeremy_Hunt,South West Surrey,Conservative,"182,320"
120 | Jeremy Lefroy,JeremyLefroy,Stafford,Conservative,"11,403"
121 | Jeremy Wright,DCMS_SecOfState,Kenilworth and Southam,Conservative,"4,866"
122 | Jesse Norman,Jesse_Norman,Hereford and South Herefordshire,Conservative,"24,803"
123 | Jo Churchill,Jochurchill4,Bury St Edmunds,Conservative,"7,650"
124 | John Glen,JohnGlenUK,Salisbury,Conservative,"20,253"
125 | John Howell,JHowellUK,Henley,Conservative,"5,188"
126 | John Lamont,John2Win,"Berwickshire, Roxburgh and Selkirk",Conservative,"7,957"
127 | John Penrose,johnpenrosenews,Weston-super-Mare,Conservative,"38,151"
128 | John Redwood,johnredwood,Wokingham,Conservative,"62,853"
129 | John Stevenson,JohnStevensonMP,Carlisle,Conservative,"10,959"
130 | John Whittingdale,JWhittingdale,Maldon,Conservative,"7,571"
131 | Johnny Mercer,JohnnyMercerUK,"Plymouth, Moor View",Conservative,"64,047"
132 | Jonathan Djanogly,JDjanogly,Huntingdon,Conservative,"17,053"
133 | Jonathan Lord,JonathanLord,Woking,Conservative,"1,183"
134 | Joseph Johnson,JoJohnsonUK,Orpington,Conservative,"34,352"
135 | Julia Lopez,JuliaLopezMP,Hornchurch and Upminster,Conservative,"4,090"
136 | Julian Knight,julianknight15,Solihull,Conservative,"7,104"
137 | Julian Smith,JulianSmithUK,Skipton and Ripon,Conservative,"18,691"
138 | Justin Tomlinson,JustinTomlinson,North Swindon,Conservative,"17,894"
139 | Justine Greening,JustineGreening,Putney,Conservative,"72,798"
140 | Keith Simpson,KeithSimpsonMP,Broadland,Conservative,0
141 | Kelly Tolhurst,KellyTolhurst,Rochester and Strood,Conservative,"11,832"
142 | Kemi Badenoch,KemiBadenoch,Saffron Walden,Conservative,"11,508"
143 | Kevin Foster,kevin_j_foster,Torbay,Conservative,"5,529"
144 | Kevin Hollinrake,kevinhollinrake,Thirsk and Malton,Conservative,"8,237"
145 | Kirstene Hair,Kirstene4Angus,Angus,Conservative,"6,813"
146 | Kit Malthouse,kitmalthouse,North West Hampshire,Conservative,"11,568"
147 | Kwasi Kwarteng,KwasiKwarteng,Spelthorne,Conservative,"7,908"
148 | Laurence Robertson,lrobertsonTewks,Tewkesbury,Conservative,"2,810"
149 | Lee Benjamin Rowley,Lee4NED,North East Derbyshire,Conservative,"7,138"
150 | Leo Docherty,LeoDochertyUK,Aldershot,Conservative,"3,962"
151 | Lucy Allan,lucyallan,Telford,Conservative,"19,299"
152 | Lucy Frazer,lucyfrazermp,South East Cambridgeshire,Conservative,"4,882"
153 | Luke Graham,LukeGrahamMP,Ochil and South Perthshire,Conservative,"5,596"
154 | Luke Hall,LukeHall,Thornbury and Yate,Conservative,"2,174"
155 | Maggie Throup,maggie_erewash,Erewash,Conservative,355
156 | Marcus Fysh,MarcusFysh,Yeovil,Conservative,"11,743"
157 | Marcus Jones,Marcus4Nuneaton,Nuneaton,Conservative,"7,968"
158 | Margot James,margot_james_mp,Stourbridge,Conservative,"23,062"
159 | Maria Caulfield,mariacaulfield,Lewes,Conservative,"16,185"
160 | Maria Miller,MariaMillerUK,Basingstoke,Conservative,"19,591"
161 | Mark Field,MarkFieldUK,Cities of London and Westminster,Conservative,"20,213"
162 | Mark Garnier,Mark4WyreForest,Wyre Forest,Conservative,"13,336"
163 | Mark Harper,Mark_J_Harper,Forest of Dean,Conservative,"11,977"
164 | Mark Lancaster,MarkLancasterMK,Milton Keynes North,Conservative,"11,754"
165 | Mark Pawsey,MarkPawsey,Rugby,Conservative,"5,769"
166 | Mark Prisk,PriskMark,Hertford and Stortford,Conservative,"6,234"
167 | Mark Pritchard,MPritchardUK,The Wrekin,Conservative,"10,034"
168 | Mark Spencer,Mark_Spencer,Sherwood,Conservative,"13,304"
169 | Martin Vickers,MartinVickers,Cleethorpes,Conservative,"10,424"
170 | Mary Robinson,MaryRobinson01,Cheadle,Conservative,"7,061"
171 | Matt Warman,mattwarman,Boston and Skegness,Conservative,"17,046"
172 | Matthew Hancock,MattHancock,West Suffolk,Conservative,"86,140"
173 | Matthew Offord,Offord4Hendon,Hendon,Conservative,"8,146"
174 | Mel Stride,MelJStride,Central Devon,Conservative,"3,680"
175 | Michael Ellis,Michael_Ellis1,Northampton North,Conservative,"11,894"
176 | Michael Fabricant,Mike_Fabricant,Lichfield,Conservative,"33,984"
177 | Michael Gove,michaelgove,Surrey Heath,Conservative,"107,150"
178 | Michael Tomlinson,Michael4MDNP,Mid Dorset and North Poole,Conservative,"8,076"
179 | Michelle Donelan,michelledonelan,Chippenham,Conservative,"9,575"
180 | Mike Wood,mikejwood,Dudley South,Conservative,"4,776"
181 | Mims Davies,mimsdavies,Eastleigh,Conservative,"11,574"
182 | Nadhim Zahawi,nadhimzahawi,Stratford-on-Avon,Conservative,"28,410"
183 | Nadine Dorries,NadineDorries,Mid Bedfordshire,Conservative,"54,878"
184 | Neil O'Brien,NeilDotObrien,Harborough,Conservative,"8,476"
185 | Neil Parish,neil_parish,Tiverton and Honiton,Conservative,"4,309"
186 | Nicholas Soames,NSoames,Mid Sussex,Conservative,"57,169"
187 | Nick Boles,NickBoles,Grantham and Stamford,Conservative,"49,089"
188 | Nick Gibb,NickGibbUK,Bognor Regis and Littlehampton,Conservative,"14,375"
189 | Nick Herbert,nickherbertmp,Arundel and South Downs,Conservative,"15,791"
190 | Nick Hurd,NickHurdUK,"Ruislip, Northwood and Pinner",Conservative,"20,318"
191 | Nicky Morgan,NickyMorgan01,Loughborough,Conservative,"69,913"
192 | Nigel Adams,nadams,Selby and Ainsty,Conservative,"4,236"
193 | Nigel Evans,nigelmp,Ribble Valley,Conservative,"9,685"
194 | Nigel Huddleston,HuddlestonNigel,Mid Worcestershire,Conservative,"9,218"
195 | Nigel Mills,nigelmills,Amber Valley,Conservative,"3,776"
196 | Nusrat Ghani,Nus_Ghani,Wealden,Conservative,"14,154"
197 | Oliver Heald QC,OliverHealdUK,North East Hertfordshire,Conservative,"9,558"
198 | Oliver Letwin,oletwinofficial,West Dorset,Conservative,"10,450"
199 | Owen Paterson,OwenPaterson,North Shropshire,Conservative,"31,916"
200 | Patrick McLoughlin,Patrick4Dales,Derbyshire Dales,Conservative,"5,632"
201 | Paul Masterton,PM4EastRen,East Renfrewshire,Conservative,"7,681"
202 | Paul Maynard,PaulMaynardUK,Blackpool North and Cleveleys,Conservative,"17,922"
203 | Paul Scully,scullyp,Sutton and Cheam,Conservative,"9,119"
204 | Pauline Latham,Pauline_Latham,Mid Derbyshire,Conservative,"16,551"
205 | Penny Mordaunt,PennyMordaunt,Portsmouth North,Conservative,"62,470"
206 | Peter Aldous,peter_aldous,Waveney,Conservative,"8,930"
207 | Peter Bone,PeterBoneUK,Wellingborough,Conservative,"28,245"
208 | Peter Heaton-Jones,PeterNorthDevon,North Devon,Conservative,"4,673"
209 | Philip Davies,PhilipDaviesUK,Shipley,Conservative,"19,651"
210 | Philip Dunne,Dunne4Ludlow,Ludlow,Conservative,"8,494"
211 | Philip Hammond,PhilipHammondUK,Runnymede and Weybridge,Conservative,"101,967"
212 | Priti Patel,patel4witham,Witham,Conservative,"64,052"
213 | Rachel Maclean,redditchrachel,Redditch,Conservative,"5,645"
214 | Ranil Jayawardena,TeamRanil,North East Hampshire,Conservative,"1,197"
215 | Rebecca Harris,RebeccaHarrisMP,Castle Point,Conservative,"5,530"
216 | Rebecca Pow,pow_rebecca,Taunton Deane,Conservative,"9,414"
217 | Rehman Chishti,Rehman_Chishti,Gillingham and Rainham,Conservative,"15,506"
218 | Richard Bacon,richardbaconmp,South Norfolk,Conservative,967
219 | Richard Benyon,RichardBenyonMP,Newbury,Conservative,"16,526"
220 | Richard Graham,RichardGrahamUK,Gloucester,Conservative,"9,821"
221 | Richard Harrington,Richard4Watford,Watford,Conservative,"14,987"
222 | Robert Buckland,RobertBuckland,South Swindon,Conservative,"18,368"
223 | Robert Courts,robertcourts,Witney,Conservative,"6,388"
224 | Robert Halfon,halfon4harlowMP,Harlow,Conservative,"29,779"
225 | Robert Jenrick,RobertJenrick,Newark,Conservative,"12,281"
226 | Robert Neill,neill_bob,Bromley and Chislehurst,Conservative,"12,365"
227 | Robert Syms,RobertSyms,Poole,Conservative,"6,959"
228 | Robin Walker,WalkerWorcester,Worcester,Conservative,"12,476"
229 | Roger Gale,SirRogerGaleMP,North Thanet,Conservative,784
230 | Rory Stewart,RoryStewartUK,Penrith and The Border,Conservative,"190,049"
231 | Ross Thomson,RossThomson_MP,Aberdeen South,Conservative,"13,020"
232 | Royston Smith,Royston_Smith,"Southampton, Itchen",Conservative,"5,428"
233 | Sajid Javid,sajidjavid,Bromsgrove,Conservative,"125,926"
234 | Sam Gyimah,SamGyimah,East Surrey,Conservative,"39,855"
235 | Sarah Newton,SNewtonUK,Truro and Falmouth,Conservative,"7,552"
236 | Scott Mann,scottmann4NC,North Cornwall,Conservative,"6,711"
237 | Seema Kennedy,SeemaKennedy,South Ribble,Conservative,"9,033"
238 | Shailesh Vara,ShaileshVara,North West Cambridgeshire,Conservative,"2,959"
239 | Sheryll Murray,sheryllmurray,South East Cornwall,Conservative,"16,405"
240 | Simon Clarke,SimonClarkeMP,Middlesbrough South and East Cleveland,Conservative,"7,702"
241 | Simon Hart,Simonhartmp,Carmarthen West and South Pembrokeshire,Conservative,"6,620"
242 | Simon Hoare,Simon4NDorset,North Dorset,Conservative,"8,875"
243 | Stephen Barclay,SteveBarclay,North East Cambridgeshire,Conservative,"18,462"
244 | Stephen Crabb,SCrabbPembs,Preseli Pembrokeshire,Conservative,"22,840"
245 | Stephen Hammond,S_Hammond,Wimbledon,Conservative,"15,970"
246 | Stephen Kerr,stephenkerrMP,Stirling,Conservative,"5,354"
247 | Stephen McPartland,SMcPartland,Stevenage,Conservative,"8,209"
248 | Stephen Metcalfe,Metcalfe_SBET,South Basildon and East Thurrock,Conservative,"5,439"
249 | Steve Brine,BrineMinister,Winchester,Conservative,"4,016"
250 | Steve Double,stevedouble,St Austell and Newquay,Conservative,"9,431"
251 | Steven Baker,SteveBakerHW,Wycombe,Conservative,"57,190"
252 | Stuart Andrew,StuartAndrew,Pudsey,Conservative,"17,606"
253 | Suella Fernandes,SuellaBraverman,Fareham,Conservative,"18,920"
254 | Theresa May,theresa_may,Maidenhead,Conservative,"863,410"
255 | Tim Loughton,timloughton,East Worthing and Shoreham,Conservative,"17,437"
256 | Tobias Ellwood,Tobias_Ellwood,Bournemouth East,Conservative,"45,447"
257 | Tom Pursglove,VotePursglove,Corby,Conservative,"11,006"
258 | Tom Tugendhat,TomTugendhat,Tonbridge and Malling,Conservative,"23,973"
259 | Tracey Crouch,tracey_crouch,Chatham and Aylesford,Conservative,"32,724"
260 | Vicky Ford,vickyford,Chelmsford,Conservative,"12,943"
261 | Victoria Prentis,VictoriaPrentis,Banbury,Conservative,"8,089"
262 | Wendy Morton,morton_wendy,Aldridge-Brownhills,Conservative,"7,172"
263 | Will Quince,willquince,Colchester,Conservative,"13,101"
264 | William Cash,BillCashMP,Stone,Conservative,"17,851"
265 | William Wragg,William_Wragg,Hazel Grove,Conservative,"8,227"
266 | Zac Goldsmith,ZacGoldsmith,Richmond Park,Conservative,"79,710"
267 | David Simpson,DavidSimpsonDUP,Upper Bann,Democratic Unionist Party,"3,657"
268 | Emma Little-Pengelly,little_pengelly,Belfast South,Democratic Unionist Party,"12,436"
269 | Gavin Robinson,GRobinsonDUP,Belfast East,Democratic Unionist Party,"11,810"
270 | Jeffrey M. Donaldson,J_Donaldson_MP,Lagan Valley,Democratic Unionist Party,"16,739"
271 | Jim Shannon,JimShannonMP,Strangford,Democratic Unionist Party,"2,138"
272 | Nigel Dodds,NigelDoddsDUP,Belfast North,Democratic Unionist Party,"23,500"
273 | Paul Girvan,PaulGirvanMP,South Antrim,Democratic Unionist Party,"4,913"
274 | Sammy Wilson,eastantrimmp,East Antrim,Democratic Unionist Party,"12,881"
275 | Caroline Lucas,CarolineLucas,"Brighton, Pavilion",Green Party,"394,422"
276 | Angela Smith,angelasmithmp,Penistone and Stocksbridge,Independent,"32,432"
277 | Gavin Shuker,gavinshuker,Luton South,Independent,"20,345"
278 | Heidi Allen,heidiallen75,South Cambridgeshire,Independent,"78,027"
279 | Jared Cain O'Mara,jaredomaramp,"Sheffield, Hallam",Independent,573
280 | Luciana Berger,lucianaberger,"Liverpool, Wavertree",Independent,"112,719"
281 | Sarah Wollaston,sarahwollaston,Totnes,Independent,"82,738"
282 | Adrian Bailey,AdrianBaileyMP,West Bromwich West,Labour,"3,223"
283 | Afzal Khan,Afzal4Gorton,"Manchester, Gorton",Labour,"19,693"
284 | Alan Campbell,alancampbellmp,Tynemouth,Labour,"4,151"
285 | Albert Owen,AlbertOwenMP,Ynys Môn,Labour,"6,959"
286 | Alex Cunningham,ACunninghamMP,Stockton North,Labour,"18,574"
287 | Alex Norris,ANorrisMP,Nottingham North,Labour,"4,452"
288 | Alex Sobel,alexsobel,Leeds North West,Labour,"13,645"
289 | Alison McGovern,Alison_McGovern,Wirral South,Labour,"45,382"
290 | Andrew Gwynne,GwynneMP,Denton and Reddish,Labour,"41,667"
291 | Andy McDonald,AndyMcDonaldMP,Middlesbrough,Labour,"29,205"
292 | Andy Slaughter,hammersmithandy,Hammersmith,Labour,"23,998"
293 | Angela Eagle,angelaeagle,Wallasey,Labour,"71,831"
294 | Angela Rayner,AngelaRayner,Ashton-under-Lyne,Labour,"119,084"
295 | Ann Clwyd,AnnClwyd,Cynon Valley,Labour,"7,705"
296 | Anna McMorrin,annamcmorrin,Cardiff North,Labour,"10,466"
297 | Anna Turley,annaturley,Redcar,Labour,"25,723"
298 | Anneliese Dodds,AnnelieseDodds,Oxford East,Labour,"11,457"
299 | Bambos Charalambous,BambosMP,"Enfield, Southgate",Labour,"6,895"
300 | Barbara Keeley,KeeleyMP,Worsley and Eccles South,Labour,"23,540"
301 | Barry Gardiner,BarryGardiner,Brent North,Labour,"71,203"
302 | Barry Sheerman,BarrySheerman,Huddersfield,Labour,"14,101"
303 | Ben Bradshaw,BenPBradshaw,Exeter,Labour,"61,097"
304 | Bill Esterson,Bill_Esterson,Sefton Central,Labour,"18,849"
305 | Bridget Phillipson,bphillipsonMP,Houghton and Sunderland South,Labour,"26,164"
306 | Caroline Flint,CarolineFlintMP,Don Valley,Labour,"70,625"
307 | Carolyn Harris,carolynharris24,Swansea East,Labour,"16,262"
308 | Cat Smith,CatSmithMP,Lancaster and Fleetwood,Labour,"35,537"
309 | Catherine McKinnell,CatMcKinnell,Newcastle upon Tyne North,Labour,"23,634"
310 | Catherine West,CatherineWest1,Hornsey and Wood Green,Labour,"24,139"
311 | Chi Onwurah,ChiOnwurah,Newcastle upon Tyne Central,Labour,"33,908"
312 | Chris Bryant,RhonddaBryant,Rhondda,Labour,"59,455"
313 | Chris Elmore,CPJElmore,Ogmore,Labour,"7,520"
314 | Chris Ruane,Chris_RuaneMP,Vale of Clwyd,Labour,"4,590"
315 | Chris Williamson,DerbyChrisW,Derby North,Labour,"54,253"
316 | Christian Matheson,ChrisM4Chester,City of Chester,Labour,"10,042"
317 | Christina Rees,Rees4Neath,Neath,Labour,"9,065"
318 | Christopher Evans,ChrisEvansMP,Islwyn,Labour,"5,141"
319 | Clive Efford,CliveEfford,Eltham,Labour,"12,300"
320 | Clive Lewis,labourlewis,Norwich South,Labour,"76,001"
321 | Conor McGinn,ConorMcGinn,St Helens North,Labour,"13,746"
322 | Dan Carden,DanCardenMP,"Liverpool, Walton",Labour,"19,467"
323 | Dan Jarvis,DanJarvisMP,Barnsley Central,Labour,"64,443"
324 | Daniel Zeichner,DanielZeichner,Cambridge,Labour,"18,723"
325 | Danielle Rowley,DaniRowley,Midlothian,Labour,"9,860"
326 | Darren Jones,darrenpjones,Bristol North West,Labour,"17,990"
327 | David Crausby,DavidCrausby,Bolton North East,Labour,"5,464"
328 | David Drew,DavidEDrew,Stroud,Labour,"6,719"
329 | David Hanson,DavidHansonMP,Delyn,Labour,"18,339"
330 | David Lammy,DavidLammy,Tottenham,Labour,"520,835"
331 | Dawn Butler,DawnButlerBrent,Brent Central,Labour,"55,083"
332 | Debbie Abrahams,Debbie_abrahams,Oldham East and Saddleworth,Labour,"38,845"
333 | Derek Twigg,DerekTwiggMP,Halton,Labour,"5,163"
334 | Diana Johnson,DianaJohnsonMP,Kingston upon Hull North,Labour,"23,906"
335 | Diane Abbott,HackneyAbbott,Hackney North and Stoke Newington,Labour,"265,988"
336 | Dr Alan Whitehead,alanwhiteheadmp,"Southampton, Test",Labour,"6,801"
337 | Dr Roberta Blackman-Woods,robertabwMP,City of Durham,Labour,"21,416"
338 | Dr Rosena Allin-Khan,DrRosena,Tooting,Labour,"41,391"
339 | Dr Rupa Huq,RupaHuq,Ealing Central and Acton,Labour,"37,215"
340 | Edward Miliband,Ed_Miliband,Doncaster North,Labour,"758,407"
341 | Eleanor Smith,Eleanor_SmithMP,Wolverhampton South West,Labour,"7,055"
342 | Ellie Reeves,elliereeves,Lewisham West and Penge,Labour,"14,331"
343 | Emily Thornberry,EmilyThornberry,Islington South and Finsbury,Labour,"153,911"
344 | Emma Dent Coad,emmadentcoad,Kensington,Labour,"14,591"
345 | Emma Hardy,EmmaHardyMP,Kingston upon Hull West and Hessle,Labour,"17,503"
346 | Emma Lewell-Buck,EmmaLewellBuck,South Shields,Labour,"19,027"
347 | Emma Reynolds,EmmaReynoldsMP,Wolverhampton North East,Labour,"22,899"
348 | Fabian Hamilton,FabianLeedsNE,Leeds North East,Labour,"3,883"
349 | Faisal Rashid,FaisalRashid6,Warrington South,Labour,"4,092"
350 | Frank Field,frankfieldteam,Birkenhead,Labour,"26,172"
351 | Gareth Snell,gareth_snell,Stoke-on-Trent Central,Labour,"6,911"
352 | Gareth Thomas,GarethThomasMP,Harrow West,Labour,"13,512"
353 | Geoffrey Robinson,Geoffrey4CovNW,Coventry North West,Labour,"1,323"
354 | Geraint Davies,GeraintDaviesMP,Swansea West,Labour,"13,628"
355 | Gerald Jones,GeraldJonesLAB,Merthyr Tydfil and Rhymney,Labour,"5,863"
356 | Gerard Killen,Gedk,Rutherglen and Hamilton West,Labour,"5,196"
357 | Gill Furniss,GillFurnissMP,"Sheffield, Brightside and Hillsborough",Labour,"4,473"
358 | Gloria De Piero,GloriaDePiero,Ashfield,Labour,"50,544"
359 | Gordon Marsden,GordonMarsden,Blackpool South,Labour,"8,448"
360 | Grahame Morris,grahamemorris,Easington,Labour,"29,662"
361 | Harriet Harman QC,harrietharman,Camberwell and Peckham,Labour,"163,062"
362 | Helen Goodman,HelenGoodmanMP,Bishop Auckland,Labour,"20,279"
363 | Helen Hayes,helenhayes_,Dulwich and West Norwood,Labour,"16,124"
364 | Helen Jones,HelenJonesMP,Warrington North,Labour,"7,931"
365 | Hilary Benn,hilarybennmp,Leeds Central,Labour,"118,425"
366 | Holly Lynch,hollylynch5,Halifax,Labour,"14,881"
367 | Hugh Gaffney,HughGaffneyMP,"Coatbridge, Chryston and Bellshill",Labour,"7,630"
368 | Ian Austin,IanAustinMP,Dudley North,Labour,"25,764"
369 | Ian C. Lucas,IanCLucas,Wrexham,Labour,"13,276"
370 | Ian Lavery,IanLaveryMP,Wansbeck,Labour,"41,593"
371 | Ian Mearns,IanMearnsMP,Gateshead,Labour,"24,105"
372 | Ian Murray,IanMurrayMP,Edinburgh South,Labour,"19,506"
373 | Imran Hussain,Imran_HussainMP,Bradford East,Labour,"13,367"
374 | Ivan Lewis,IvanLewis_MP,Bury South,Labour,"15,538"
375 | Jack Dromey,JackDromeyMP,"Birmingham, Erdington",Labour,"22,272"
376 | James Frith,JamesFrith,Bury North,Labour,"8,723"
377 | Janet Daby,JanetDaby,Lewisham East,Labour,"6,848"
378 | Jeff Smith,JeffSmithetc,"Manchester, Withington",Labour,"8,048"
379 | Jenny Chapman,JennyChapman,Darlington,Labour,"18,711"
380 | Jeremy Corbyn,jeremycorbyn,Islington North,Labour,"1,984,364"
381 | Jess Phillips,jessphillips,"Birmingham, Yardley",Labour,"227,927"
382 | Jessica Morden,jessicamordenmp,Newport East,Labour,"10,213"
383 | Jim Cunningham,jimforcovsouth,Coventry South,Labour,"1,729"
384 | Jim Fitzpatrick,FitzMP,Poplar and Limehouse,Labour,"14,203"
385 | Jim McMahon,JimfromOldham,Oldham West and Royton,Labour,"19,362"
386 | Jo Platt,JoPlattMP,Leigh,Labour,"9,850"
387 | Jo Stevens,JoStevensLabour,Cardiff Central,Labour,"21,657"
388 | John Cryer,JohnCryerMP,Leyton and Wanstead,Labour,"4,125"
389 | John Healey,JohnHealey_MP,Wentworth and Dearne,Labour,"25,069"
390 | John Mann,JohnMannMP,Bassetlaw,Labour,"30,158"
391 | John McDonnell,johnmcdonnellMP,Hayes and Harlington,Labour,"206,055"
392 | John Spellar,spellar,Warley,Labour,"9,572"
393 | John Woodcock,JWoodcockMP,Barrow and Furness,Labour,"40,314"
394 | Jon Cruddas,JonCruddas_1,Dagenham and Rainham,Labour,"18,878"
395 | Jon Trickett,jon_trickett,Hemsworth,Labour,"22,887"
396 | Jonathan Ashworth,JonAshworth,Leicester South,Labour,"59,726"
397 | Jonathan Reynolds,jreynoldsMP,Stalybridge and Hyde,Labour,"36,215"
398 | Judith Cummins,JudithCummins,Bradford South,Labour,"11,270"
399 | Julie Cooper,JulieForBurnley,Burnley,Labour,"7,494"
400 | Julie Elliott,JulieElliottMP,Sunderland Central,Labour,"17,252"
401 | Justin Madders,justinmadders,Ellesmere Port and Neston,Labour,"11,569"
402 | Karen Buck,KarenPBuckMP,Westminster North,Labour,"14,930"
403 | Karen Lee,KarenLeeMP,Lincoln,Labour,"10,139"
404 | Karin Smyth,karinsmyth,Bristol South,Labour,"9,190"
405 | Karl Turner,KarlTurnerMP,Kingston upon Hull East,Labour,"25,219"
406 | Kate Green,KateGreenSU,Stretford and Urmston,Labour,"32,487"
407 | Kate Hoey,KateHoeyMP,Vauxhall,Labour,"63,487"
408 | Kate Hollern,Kate_HollernMP,Blackburn,Labour,"6,251"
409 | Kate Osamor,KateOsamor,Edmonton,Labour,"28,929"
410 | Keir Starmer,Keir_Starmer,Holborn and St Pancras,Labour,"176,236"
411 | Keith Vaz,Keith_Vaz_MP,Leicester East,Labour,0
412 | Kerry McCarthy,KerryMP,Bristol East,Labour,"31,084"
413 | Kevan Jones,KevanJonesMP,North Durham,Labour,"19,203"
414 | Kevin Barron,KevinBarronMP,Rother Valley,Labour,"4,749"
415 | Kevin Brennan,KevinBrennanMP,Cardiff West,Labour,"18,016"
416 | Khalid Mahmood,khalid4PB,"Birmingham, Perry Barr",Labour,"4,047"
417 | Laura Pidcock,LauraPidcockMP,North West Durham,Labour,"56,763"
418 | Laura Smith,LauraSmithMP,Crewe and Nantwich,Labour,"18,603"
419 | Lesley Laird,LesleyLaird,Kirkcaldy and Cowdenbeath,Labour,"4,807"
420 | Liam Byrne,LiamByrneMP,"Birmingham, Hodge Hill",Labour,"32,943"
421 | Lilian Greenwood,LilianGreenwood,Nottingham South,Labour,"25,755"
422 | Lindsay Hoyle,LindsayHoyle_MP,Chorley,Labour,"13,106"
423 | Lisa Forbes,LisaForbes_,Peterborough,Labour,"9,495"
424 | Lisa Nandy,lisanandy,Wigan,Labour,"67,281"
425 | Liz Kendall,leicesterliz,Leicester West,Labour,"89,134"
426 | Liz McInnes,LizMcInnes_MP,Heywood and Middleton,Labour,"15,164"
427 | Liz Twist,LizTwistMP,Blaydon,Labour,"2,304"
428 | Lloyd Russell-Moyle,lloyd_rm,"Brighton, Kemptown",Labour,"21,439"
429 | Louise Ellman,LouiseEllman,"Liverpool, Riverside",Labour,"32,914"
430 | Louise Haigh,LouHaigh,"Sheffield, Heeley",Labour,"31,393"
431 | Lucy Powell,LucyMPowell,Manchester Central,Labour,"45,236"
432 | Luke Pollard,LukePollard,"Plymouth, Sutton and Devonport",Labour,"17,800"
433 | Lyn Brown,lynbrownmp,West Ham,Labour,"10,694"
434 | Madeleine Moon,MadeleineMoon,Bridgend,Labour,"9,166"
435 | Margaret Greenwood,MGreenwoodWW,Wirral West,Labour,"14,645"
436 | Margaret Hodge,margarethodge,Barking,Labour,"39,210"
437 | Maria Eagle,meaglemp,Garston and Halewood,Labour,"45,432"
438 | Marie Rimmer,MarieRimmer,St Helens South and Whiston,Labour,"10,011"
439 | Mark Hendrick,MpHendrick,Preston,Labour,"3,886"
440 | Mark Tami,MarkTamiMP,Alyn and Deeside,Labour,"6,763"
441 | Marsha de Cordova,Marshadecordova,Battersea,Labour,"20,768"
442 | Martin Whitfield,MartWhitfieldMP,East Lothian,Labour,"3,960"
443 | Mary Creagh,MaryCreaghMP,Wakefield,Labour,"39,027"
444 | Mary Glindon,GlindonMary,North Tyneside,Labour,"1,623"
445 | Matt Rodda,MattRodda,Reading East,Labour,"3,946"
446 | Matt Western,MattWestern_,Warwick and Leamington,Labour,"4,849"
447 | Matthew Pennycook,mtpennycook,Greenwich and Woolwich,Labour,"14,706"
448 | Meg Hillier,Meg_HillierMP,Hackney South and Shoreditch,Labour,"16,797"
449 | Melanie Onn,OnnMel,Great Grimsby,Labour,"18,614"
450 | Mike Amesbury,MikeAmesburyMP,Weaver Vale,Labour,"6,900"
451 | Mike Hill,MikeHillMP,Hartlepool,Labour,"2,140"
452 | Mike Kane,MikeKaneMP,Wythenshawe and Sale East,Labour,"9,568"
453 | Mohammad Yasin,yasinmpbedford,Bedford,Labour,"1,354"
454 | Naz Shah,NazShahBfd,Bradford West,Labour,"30,755"
455 | Neil Coyle,coyleneil,Bermondsey and Old Southwark,Labour,"18,602"
456 | Nia Griffith,NiaGriffithMP,Llanelli,Labour,"15,564"
457 | Nic Dakin,NicDakinMP,Scunthorpe,Labour,"16,480"
458 | Nick Smith,BlaenauGwentMP,Blaenau Gwent,Labour,"8,129"
459 | Nick Thomas-Symonds,NickTorfaenMP,Torfaen,Labour,"8,705"
460 | Owen Smith,OwenSmith_MP,Pontypridd,Labour,"75,194"
461 | Pat McFadden,patmcfaddenmp,Wolverhampton South East,Labour,"20,896"
462 | Paul Blomfield,PaulBlomfieldMP,Sheffield Central,Labour,"18,478"
463 | Paul Daniel Williams,PaulWilliamsMP,Stockton South,Labour,"9,923"
464 | Paul Sweeney,PaulJSweeney,Glasgow North East,Labour,"12,908"
465 | Paula Sherriff,paulasherriff,Dewsbury,Labour,"20,211"
466 | Peter Dowd,Peter_Dowd,Bootle,Labour,"11,080"
467 | Peter Kyle,peterkyle,Hove,Labour,"22,588"
468 | Phil Wilson,MPphilwilson,Sedgefield,Labour,"21,336"
469 | Preet Gill,PreetKGillMP,"Birmingham, Edgbaston",Labour,"16,338"
470 | Rachael Maskell,RachaelMaskell,York Central,Labour,"20,307"
471 | Rachel Reeves,RachelReevesMP,Leeds West,Labour,"80,855"
472 | Rebecca Long-Bailey,RLong_Bailey,Salford and Eccles,Labour,"60,062"
473 | Richard Burden,RichardBurdenMP,"Birmingham, Northfield",Labour,"17,566"
474 | Richard Burgon,RichardBurgon,Leeds East,Labour,"66,126"
475 | Roger Godsiff,RogerGodsiff,"Birmingham, Hall Green",Labour,"11,955"
476 | Rosie Cooper,rosie4westlancs,West Lancashire,Labour,"11,240"
477 | Rosie Duffield,RosieDuffield1,Canterbury,Labour,"12,721"
478 | Rushanara Ali,rushanaraali,Bethnal Green and Bow,Labour,"32,750"
479 | Ruth Cadbury,RuthCadbury,Brentford and Isleworth,Labour,"17,987"
480 | Ruth George,RuthGeorge6,High Peak,Labour,"3,116"
481 | Ruth Jones,RuthNewportWest,Newport West,Labour,"3,835"
482 | Ruth Smeeth,RuthSmeeth,Stoke-on-Trent North,Labour,"17,570"
483 | Sandy Martin,sandyofipswich,Ipswich,Labour,"5,620"
484 | Sarah Champion,SarahChampionMP,Rotherham,Labour,"41,109"
485 | Sarah Jones,LabourSJ,Croydon Central,Labour,"12,058"
486 | Seema Malhotra,SeemaMalhotra1,Feltham and Heston,Labour,"22,554"
487 | Shabana Mahmood,ShabanaMahmood,"Birmingham, Ladywood",Labour,"18,788"
488 | Sharon Hodgson,SharonHodgsonMP,Washington and Sunderland West,Labour,"30,855"
489 | Siobhain McDonagh,Siobhain_MP,Mitcham and Morden,Labour,"16,560"
490 | Stella Creasy,stellacreasy,Walthamstow,Labour,"124,600"
491 | Stephanie Peacock,Steph_Peacock,Barnsley East,Labour,"6,715"
492 | Stephen Doughty,SDoughtyMP,Cardiff South and Penarth,Labour,"23,392"
493 | Stephen Hepburn,jarrowstevemp,Jarrow,Labour,"3,972"
494 | Stephen Kinnock,SKinnock,Aberavon,Labour,"24,493"
495 | Stephen Morgan,StephenMorganMP,Portsmouth South,Labour,"6,347"
496 | Stephen Timms,stephenctimms,East Ham,Labour,"14,470"
497 | Stephen Twigg,StephenTwigg,"Liverpool, West Derby",Labour,"36,986"
498 | Steve McCabe,steve_mccabe,"Birmingham, Selly Oak",Labour,"16,193"
499 | Steve Reed,SteveReedMP,Croydon North,Labour,"27,039"
500 | Sue Hayman,SueHayman1,Workington,Labour,"11,297"
501 | Susan Elan Jones,susanelanjones,Clwyd South,Labour,"5,228"
502 | Tanmanjit Singh Dhesi,TanDhesi,Slough,Labour,"15,455"
503 | Teresa Pearce,tpearce003,Erith and Thamesmead,Labour,"11,574"
504 | Thangam Debbonaire,ThangamMP,Bristol West,Labour,"19,220"
505 | Thelma Walker,Thelma_WalkerMP,Colne Valley,Labour,"6,571"
506 | Toby Perkins,tobyperkinsmp,Chesterfield,Labour,"24,348"
507 | Tom Watson,tom_watson,West Bromwich East,Labour,"299,536"
508 | Tonia Antoniazzi,ToniaAntoniazzi,Gower,Labour,"9,546"
509 | Tony Lloyd,tony4rochdale,Rochdale,Labour,"7,337"
510 | Tracy Brabin,TracyBrabin,Batley and Spen,Labour,"25,719"
511 | Tulip Siddiq,TulipSiddiq,Hampstead and Kilburn,Labour,"119,953"
512 | Valerie Vaz,Valerie_VazMP,Walsall South,Labour,"4,862"
513 | Vernon Coaker,Vernon_Coaker,Gedling,Labour,"22,611"
514 | Vicky Foxcroft,vickyfoxcroft,"Lewisham, Deptford",Labour,"13,283"
515 | Virendra Sharma,VirendraSharma,"Ealing, Southall",Labour,"15,778"
516 | Wayne David,WayneDavid_MP,Caerphilly,Labour,"11,650"
517 | Wes Streeting,wesstreeting,Ilford North,Labour,"50,049"
518 | Yasmin Qureshi,YasminQureshiMP,Bolton South East,Labour,"18,405"
519 | Yvette Cooper,YvetteCooperMP,"Normanton, Pontefract and Castleford",Labour,"239,815"
520 | Yvonne Fovargue,Y_FovargueMP,Makerfield,Labour,"10,341"
521 | Alistair Carmichael,amcarmichaelMP,Orkney and Shetland,Liberal Democrat,"14,975"
522 | Christine Jardine,cajardineMP,Edinburgh West,Liberal Democrat,"8,189"
523 | Chuka Umunna,ChukaUmunna,Streatham,Liberal Democrat,"377,933"
524 | Edward Davey,EdwardJDavey,Kingston and Surbiton,Liberal Democrat,"27,095"
525 | Jamie Stone,Jamie4North,"Caithness, Sutherland and Easter Ross",Liberal Democrat,"4,243"
526 | Jo Swinson,joswinson,East Dunbartonshire,Liberal Democrat,"61,503"
527 | Layla Moran,laylamoran,Oxford West and Abingdon,Liberal Democrat,"38,881"
528 | Norman Lamb,normanlamb,North Norfolk,Liberal Democrat,"45,835"
529 | Stephen Lloyd,StephenLloydEBN,Eastbourne,Liberal Democrat,"6,557"
530 | Tim Farron,timfarron,Westmorland and Lonsdale,Liberal Democrat,"294,430"
531 | Tom Brake,thomasbrake,Carshalton and Wallington,Liberal Democrat,"68,025"
532 | Vincent Cable,vincecable,Twickenham,Liberal Democrat,"170,077"
533 | Wera Hobhouse,Wera_Hobhouse,Bath,Liberal Democrat,"13,385"
534 | Ben Lake,BenMLake,Ceredigion,Plaid Cymru,"5,129"
535 | Hywel Williams,HywelPlaidCymru,Arfon,Plaid Cymru,"8,217"
536 | Jonathan Edwards,JonathanPlaid,Carmarthen East and Dinefwr,Plaid Cymru,"11,367"
537 | Liz Saville Roberts,lsrplaid,Dwyfor Meirionnydd,Plaid Cymru,"10,264"
538 | Alan Brown,AlanBrownSNP,Kilmarnock and Loudoun,Scottish National Party,"9,733"
539 | Alison Thewliss,alisonthewliss,Glasgow Central,Scottish National Party,"22,406"
540 | Angela Crawley,AngelaCrawley30,Lanark and Hamilton East,Scottish National Party,"12,292"
541 | Angus MacNeil,AngusMacNeilSNP,Na h-Eileanan an Iar,Scottish National Party,"31,987"
542 | Brendan O'Hara,BrendanOHaraSNP,Argyll and Bute,Scottish National Party,"11,729"
543 | Carol Monaghan,CMonaghanSNP,Glasgow North West,Scottish National Party,"16,791"
544 | Chris Law,ChrisLawSNP,Dundee West,Scottish National Party,"16,139"
545 | Chris Stephens,ChrisStephens,Glasgow South West,Scottish National Party,"13,993"
546 | David Linden,DavidLinden,Glasgow East,Scottish National Party,"8,535"
547 | Deidre Brock,DeidreBrock,Edinburgh North and Leith,Scottish National Party,"12,773"
548 | Douglas Chapman,DougChapmanSNP,Dunfermline and West Fife,Scottish National Party,"11,617"
549 | Dr Lisa Cameron,DrLisaCameronMP,"East Kilbride, Strathaven and Lesmahagow",Scottish National Party,"11,953"
550 | Dr Philippa Whitford,Dr_PhilippaW,Central Ayrshire,Scottish National Party,"21,372"
551 | Drew Hendry,drewhendrySNP,"Inverness, Nairn, Badenoch and Strathspey",Scottish National Party,"11,934"
552 | Gavin Newlands,GavNewlandsSNP,Paisley and Renfrewshire North,Scottish National Party,"10,831"
553 | Hannah Bardell,HannahB4LiviMP,Livingston,Scottish National Party,"19,734"
554 | Ian Blackford,IanBlackfordMP,"Ross, Skye and Lochaber",Scottish National Party,"46,195"
555 | Joanna Cherry QC,joannaccherry,Edinburgh South West,Scottish National Party,"55,516"
556 | John Mc Nally,JohnMcNallyMP,Falkirk,Scottish National Party,"7,561"
557 | Kirsty Blackman,KirstySNP,Aberdeen North,Scottish National Party,"18,237"
558 | Marion Fellows,marionfellows,Motherwell and Wishaw,Scottish National Party,"9,482"
559 | Martin Docherty-Hughes,martinjdocherty,West Dunbartonshire,Scottish National Party,"11,586"
560 | Martyn Day,MartynDaySNP,Linlithgow and East Falkirk,Scottish National Party,"8,757"
561 | Mhairi Black,MhairiBlack,Paisley and Renfrewshire South,Scottish National Party,"159,194"
562 | Neil Gray,NeilGrayMP,Airdrie and Shotts,Scottish National Party,"11,484"
563 | Patricia Gibson,PGibsonSNP,North Ayrshire and Arran,Scottish National Party,"10,652"
564 | Patrick Grady,GradySNP,Glasgow North,Scottish National Party,"13,718"
565 | Pete Wishart,PeteWishart,Perth and North Perthshire,Scottish National Party,"41,562"
566 | Peter Grant,PeterGrantMP,Glenrothes,Scottish National Party,"13,091"
567 | Ronnie Cowan,ronniecowan,Inverclyde,Scottish National Party,"10,425"
568 | Stephen Gethins,StephenGethins,North East Fife,Scottish National Party,"16,455"
569 | Stewart Hosie,StewartHosieSNP,Dundee East,Scottish National Party,"24,937"
570 | Stewart Malcolm McDonald,StewartMcDonald,Glasgow South,Scottish National Party,"25,808"
571 | Stuart C. McDonald,Stuart_McDonald,"Cumbernauld, Kilsyth and Kirkintilloch East",Scottish National Party,"10,451"
572 | Tommy Sheppard,TommySheppard,Edinburgh East,Scottish National Party,"29,166"
573 | Christopher Hazzard,ChrisHazzardSF,South Down,Sinn Fein,"12,187"
574 | Elisha McCallion,ElishaMcC_SF,Foyle,Sinn Fein,"6,409"
575 | Francie Molloy,FrancieMolloy,Mid Ulster,Sinn Fein,"6,443"
576 | Michelle Gildernew,gildernewm,Fermanagh and South Tyrone,Sinn Fein,"15,989"
577 | Mickey Brady,MickeyBradySF,Newry and Armagh,Sinn Fein,"4,102"
578 | Órfhlaith Begley,OrfhlaithBegley,West Tyrone,Sinn Fein,"4,810"
579 | Paul Maskey,PaulMaskeyMP,Belfast West,Sinn Fein,"14,655"
580 | Ann Coffey,anncoffey_mp,Stockport,The Independent Group,"19,805"
581 | Anna Soubry,Anna_Soubry,Broxtowe,The Independent Group,"179,300"
582 | Chris Leslie,ChrisLeslieMP,Nottingham East,The Independent Group,"48,808"
583 | Joan Ryan,joanryanEnfield,Enfield North,The Independent Group,"18,718"
584 | Mike Gapes,MikeGapes,Ilford South,The Independent Group,"40,863"
585 |
--------------------------------------------------------------------------------