<jupyter_start><jupyter_text>- title: PSF candidates- author: <NAME>- date: 2018-05-31- category: pyhton- tags: python psf  PSF board of directors analysisIn a vile attempt to bias the results of the current election for new directors for the Python Software Foundation, I'm sharing this analysis I made. My goal was to better understand the current board of directors, and how the new candidates can impact it. MotivationAs a Pythonista, the decisions made by the board of directors affect me. And while all candidates look great to me, I think it's key to have a board of directors as diverse as possible. The decisions of the BoD affect all us, and having only male candidates, candidates from the US, candidates working on the web site of Python... would make these decisions biased in an undesirable way. DisclaimerI wish the information I wanted to analyze was available in an structured and reliable way, but it's not. The information used was mainly obtained from the [candidates wiki](https://wiki.python.org/moin/PythonSoftwareFoundation/BoardCandidates2018), and the directors and candidates Twitter and LinkedIn profiles. Meaning that information can be lacking or incorrect. If you find anything wrong, please contact [me](http://datapythonista.github.io) and I'll fix it.While there are 17 candidates to the PSF BoD, I just show the information of 16 here. I am the 17th candidate, and I wanted this analysis to be as fair as possible, and not a propaganda exercise. This being said, don't assume that removing myself from the analysis makes it unbiased. I analyse what is important for me (for example, I care a lot on who contributes to the Python projects code), and you may care about something different.<jupyter_code>import pandas
from matplotlib import pyplot
directors = pandas.read_json('{"Location":{"Naomi Ceder":"Chicago, IL","<NAME>":"Portland, OR","<NAME>":"DC \\/ Bradenton FL","Lorena Mesa":"Chicago, IL","<NAME>":"Amsterdam","Kush<NAME>":"Kolkata, India","<NAME>":"Zimbawe","<NAME>":"San Antonio, TX","Ewa Jodlowska":"Chicago, IL"},"Gender":{"<NAME>":"Woman","<NAME>":"Man","<NAME>":"Woman","<NAME>":"Woman","<NAME>":"Man","<NAME>":"Man","<NAME>":"Woman","<NAME>":"Man","<NAME>":"Woman"},"Twitter":{"<NAME>":"https:\\/\\/twitter.com\\/NaomiCeder","<NAME>":"https:\\/\\/twitter.com\\/ericholscher","<NAME>":"https:\\/\\/twitter.com\\/JackieKazil","<NAME>":"https:\\/\\/twitter.com\\/loooorenanicole","<NAME>":"https:\\/\\/twitter.com\\/Yhg1s","<NAME>":"https:\\/\\/twitter.com\\/kushaldas","<NAME>":"https:\\/\\/twitter.com\\/marlene_zw","<NAME>":"https:\\/\\/twitter.com\\/VanL","<NAME>":"https:\\/\\/twitter.com\\/ewa_jodlowska"},"Area":{"<NAME>":null,"<NAME>":null,"<NAME>":"data","<NAME>":"web","<NAME>":"cpython","<NAME>":"cpython","<NAME>":null,"<NAME>":null,"E<NAME>odlowska":null}}')
candidates = pandas.read_json('{"Previous board member":{"<NAME>":"Yes","<NAME>":"No","<NAME>":"No","<NAME>":"No","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"No","<NAME>":"No","<NAME>":"No","Maricela (a.k.a Mayela) <NAME>":"No","<NAME>":"No","<NAME>":"No","<NAME>":"No","<NAME>":"No","<NAME>":"No","<NAME>":"No"},"Location":{"<NAME>":"Cologne, Germany","<NAME>":"Sierra Leone","<NAME>":"Petaluma, CA","<NAME>":"Sidney, Australia","<NAME>":"Korea","<NAME>":"Mendoza, Argentina","Thea Flowers":"Seattle, WA","<NAME>":"Lawrence, KS","<NAME>":"NYC","Maricela (a.k.a Mayela) Sanchez Miranda":"Mexico","<NAME>":"Portland, OR","<NAME>":"London, UK","<NAME>":"St Petersburg, Russia","<NAME>":"Melbourne, Australia","<NAME>":"Leeds, UK","<NAME>":"NYC"},"Gender":{"<NAME>":"Woman","<NAME>":"Woman","<NAME>":"Man","<NAME>":"Woman","<NAME>":"Man","<NAME>":"Woman","<NAME>":"Woman","<NAME>":"Man","<NAME>":"Woman","Maricela (a.k.a Mayela) San<NAME>":"Woman","<NAME>":"Woman","<NAME>":"Man","<NAME>":"Man","<NAME>":"Woman","<NAME>":"Woman","<NAME>":"Man"},"Twitter":{"<NAME>":"https:\\/\\/twitter.com\\/ossanna16","<NAME>":"https:\\/\\/twitter.com\\/succedor23","<NAME>":"https:\\/\\/twitter.com\\/chrisjrn","<NAME>":"https:\\/\\/twitter.com\\/glasnt","<NAME>":"https:\\/\\/twitter.com\\/scari_net","<NAME>":"https:\\/\\/twitter.com\\/pk_pacheco","Thea Flowers":"https:\\/\\/twitter.com\\/theavalkyrie","<NAME>":"https:\\/\\/twitter.com\\/webology","<NAME>":"https:\\/\\/twitter.com\\/jess_ingrass","Maricela (a.k.a Mayela) <NAME>":"https:\\/\\/twitter.com\\/mayela0x14","<NAME>":"https:\\/\\/twitter.com\\/nnja","<NAME>":"https:\\/\\/twitter.com\\/mariocj89","<NAME>":null,"<NAME>":"https:\\/\\/twitter.com\\/attacus_au","<NAME>":"https:\\/\\/twitter.com\\/ixek","<NAME>":"https:\\/\\/twitter.com\\/jhonjairoroa87"},"Conference \\/ meetup organiser":{"<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"No","<NAME>":"Yes","<NAME>":"Yes","Maricela (a.k.a Mayela) San<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes","<NAME>":"Yes"},"WG member":{"<NAME>":"Grants","<NAME>":"-","<NAME>":"Grants","<NAME>":"-","<NAME>":"Grants","<NAME>":"-","<NAME>":"-","<NAME>":null,"<NAME>":"-","Maricela (a.k.a Mayela) Sanchez Miranda":null,"<NAME>":null,"<NAME>":null,"<NAME>":null,"<NAME>":null,"<NAME>":null,"<NAME>":null},"Area":{"<NAME>":"web","<NAME>":"web","<NAME>":null,"<NAME>":"web","<NAME>":"data","<NAME>":"data","<NAME>":null,"<NAME>":"web","<NAME>":null,"Maricela (a.k.a <NAME>":"web","<NAME>":"web","<NAME>":"cpython","<NAME>":"web","<NAME>":null,"<NAME>":"data","<NAME>":"web"}}')<jupyter_output><empty_output><jupyter_text>GenderI think the Python community did a great effort in terms of gender diversity. We surely need to continue the efforts to make sure conferences and user groups are more diverse, but at the BoD levels things seem as good as they can be.<jupyter_code>fig = pyplot.figure()
pyplot.subplot(121)
directors.groupby('Gender').size().plot(kind='bar')
pyplot.title('Continuing directors')
pyplot.subplot(122)
candidates.groupby('Gender').size().plot(kind='bar')
pyplot.title('Candidates');<jupyter_output><empty_output><jupyter_text>Python areasIt's difficult to cluster people in the different Python areas. Or to define which are the areas themselves. But at the same time, it wouldn't be nice to have the whole Python community represented by directors that never work with Django, or with the PyData stack. My approximation has been to divide the directors and candidates between the ones more focused on web, on data or on the language itself, and consider the rest neutral.From the plots below, seems like all areas are represented, but personally I don't think it'd harm to have more representation from the web and data world.<jupyter_code>fig = pyplot.figure()
pyplot.subplot(121)
directors.groupby('Area').size().plot(kind='bar')
pyplot.title('Continuing directors')
pyplot.subplot(122)
candidates.groupby('Area').size().plot(kind='bar')
pyplot.title('Candidates');<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.25133767172812727, 'fraction_numerical': 0.006073752711496746, 'mean_word_length': 7.352657004830918, 'pattern_counts': {'":': 159, '<': 155, '<?xml version=': 0, '>': 155, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '140756', 'license': 'Apache-2.0', 'n_tokens_mistral': 2374, 'n_tokens_neox': 2268, 'n_words': 491, 'path': 'content/2018-05-31-psf-candidates.ipynb', 'repo_name': 'maartenbreddels/datapythonista.github.io', 'size': '8067'}