In [1]:
# -*- coding: UTF-8 -*-
# Render our plots inline
%matplotlib inline
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import seaborn
import shutil
pd.set_option('display.mpl_style', 'default') # Make the graphs a bit prettier, overridden by seaborn
pd.set_option('display.max_columns', None) # Display all the columns
plt.rcParams['font.family'] = 'sans-serif' # Sans Serif fonts for all the graphs
# Reference for color palettes: http://web.stanford.edu/~mwaskom/software/seaborn/tutorial/color_palettes.html
# Change the font
matplotlib.rcParams.update({'font.family': 'Source Sans Pro'})
In [2]:
# Load csv file first
data = pd.read_csv("data/lab-survey.csv", encoding="utf-8")
In [3]:
# Check data
#data[0:4] # Equals to data.head()
In [4]:
# Range: D14[SQ001] - D14[SQ012] - D14[other]
initiative_columns = ["D14[SQ001]","D14[SQ002]","D14[SQ003]","D14[SQ004]",
"D14[SQ005]","D14[SQ006]","D14[SQ007]","D14[SQ008]",
"D14[SQ009]","D14[SQ010]","D14[SQ011]","D14[SQ012]"]
initiative_options = ['Singolo individuo privato',
'Gruppo di individui privati',
'Scuola primaria (scuola elementare)',
'Scuola secondaria di primo grado (scuola media)',
'Scuola secondaria di secondo grado (scuola superiore)',
u'Universitá',
'Museo',
'Centro di ricerca',
"Incubatore o acceleratore d'impresa",
'Coworking',
'Impresa privata',
'Fondazione']
initiative = data[initiative_columns]
initiative.replace(u'Sì', 'Si', inplace=True) # Get rid of accented characters
initiative_other = data['D14[other]'].str.lower().value_counts()
In [5]:
#lab[0:4]
In [6]:
%%capture output
# Save the output as a variable that can be saved to a file
# Gather data
initiative_b = {}
for k,i in enumerate(initiative_columns):
initiative_b[k] = initiative[i].value_counts(dropna=False)
print "Data:",initiative_options[k].encode('utf-8')
print initiative_b[k]
print
print "Data %:",initiative_options[k].encode('utf-8')
print initiative[i].value_counts(normalize=True,dropna=False)*100
print
In [7]:
# Save+show the output to a text file
%save Q014-IniziativaLab01.py str(output)
shutil.move("Q014-IniziativaLab01.py", "text/Q014-IniziativaLab01.txt")
In [8]:
yes = []
no = []
nanvalue = []
for k,i in enumerate(initiative_columns):
initiative_presents = initiative_b[k].index.tolist()
# Convert NaN to "NaN"
for o,h in enumerate(initiative_presents):
if type(h) is float:
initiative_presents.pop(o)
initiative_presents.append("NaN")
# Reassign new list with "NaN"
initiative_b[k].index = initiative_presents
# Check for empty values, and put a 0 instead
if "Si" not in initiative_presents:
yes.append(0)
if "No" not in initiative_presents:
no.append(0)
if "NaN" not in initiative_presents:
nanvalue.append(0)
for j in initiative_presents:
if j == "Si":
yes.append(initiative_b[k].ix["Si"])
elif j == "No":
no.append(initiative_b[k].ix["No"])
elif j == "NaN":
nanvalue.append(initiative_b[k].ix["NaN"])
In [9]:
# Plot the data
plt.figure(figsize=(8,6))
plt.xlabel(u'Iniziativa', fontsize=16)
plt.ylabel(u'Lab', fontsize=16)
plt.title(u'Di chi è stata l’iniziativa che ha portato all’apertura del laboratorio?', fontsize=18, y=1.02)
plt.xticks(range(len(initiative_options)),initiative_options,rotation=90)
ind = np.arange(len(initiative_columns)) # the x locations for the groups
width = 0.35 # the width of the bars
my_colors = seaborn.color_palette("Set1", 3) # Set color palette
rect1 = plt.bar(ind,yes,width,color=my_colors[1],align='center') # Plot Yes
rect2 = plt.bar(ind+width,no,width,color=my_colors[0],align='center') # Plot No
rect3 = plt.bar(ind+width*2,nanvalue,width,color=my_colors[2],align='center') # Plot NaN
plt.legend( (rect1, rect2, rect3), ('Si', 'No', 'Nessuna risposta') )
plt.savefig("svg/Q014-IniziativaLab01.svg")
plt.savefig("png/Q014-IniziativaLab01.png")
plt.savefig("pdf/Q014-IniziativaLab01.pdf")
In [10]:
%%capture output
# Save the output as a variable that can be saved to a file
# Get "other" data
initiative_other = data["D14[other]"].str.lower().value_counts()
print "Data:"
print initiative_other
print ""
print "Data %:"
print data["D14[other]"].str.lower().value_counts(normalize=True) * 100
In [11]:
# Save+show the output to a text file
%save Q014-IniziativaLab02.py str(output)
shutil.move("Q014-IniziativaLab02.py", "text/Q014-IniziativaLab02.txt")
In [12]:
# Plot bar
plt.figure(figsize=(8,6))
plt.title(u'Di chi è stata l’iniziativa che ha portato all’apertura del laboratorio? Altro', fontsize=18, y=1.02)
plt.xticks(range(len(initiative_other.index)),initiative_other.index,rotation=90)
plt.xlabel('Iniziativa', fontsize=16)
plt.ylabel('Lab', fontsize=16)
ind = np.arange(len(initiative_other)) # the x locations for the groups
width = 0.35 # the width of the bars
my_colors = seaborn.color_palette("husl", len(initiative_other)) # Set color palette
rect1 = plt.bar(ind,initiative_other,width,color=my_colors,align='center')
plt.savefig("svg/Q014-IniziativaLab02.svg")
plt.savefig("png/Q014-IniziativaLab02.png")
plt.savefig("pdf/Q014-IniziativaLab02.pdf")
In [12]: