Q004 - Dove si trova il laboratorio?


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
pd.set_option('max_rows', None) # Display all rows: there are many cities!
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]:
%%capture output

# Save the output as a variable that can be saved to a file
# Get the distribution of cities
data["D4[SQ001]"] = data["D4[SQ001]"].str.lower()
city = data["D4[SQ001]"].value_counts(dropna=False)
print "Data:"
print city
print ""
print "Data %:"
print data["D4[SQ001]"].value_counts(normalize=True,dropna=False) * 100

In [5]:
# Save+show the output to a text file
%save Q004-CittáLab.py str(output)
shutil.move("Q004-CittáLab.py", "text/Q004-CittáLab.txt")


The following commands were written to file `Q004-CittáLab.py`:
Data:
milano                 7
roma                   5
firenze                2
terni                  2
reggio emilia          1
marsala                1
torino                 1
cascina (pi)           1
alessandria            1
trieste                1
trento                 1
nuoro                  1
pavia                  1
aosta                  1
cesena + rimini        1
alpignano (to)         1
bologna                1
comunanza (ap)         1
uggiano la chiesa      1
messina                1
ivrea                  1
genova                 1
venezia                1
borgomanero            1
cinquefrondi rc        1
parma                  1
maniago (pn)           1
fabriano               1
chieri                 1
sesto fiorentino       1
roma                   1
sesto san giovanni     1
rimini                 1
padova                 1
isernia                1
tolentino              1
bagnacavallo (ra)      1
bucine                 1
settimo torinese       1
pesaro                 1
san dona di piave      1
bolzano                1
cenadi                 1
palermo                1
torino                 1
imperia                1
pula                   1
frosinone              1
faenza                 1
grassano               1
treviso                1
catania                1
rho                    1
tavagnacco             1
cavriglia              1
casalecchio di reno    1
verona                 1
tradate                1
NaN                    0
Length: 59, dtype: int64

Data %:
milano                 10.000000
roma                    7.142857
firenze                 2.857143
terni                   2.857143
reggio emilia           1.428571
marsala                 1.428571
torino                  1.428571
cascina (pi)            1.428571
alessandria             1.428571
trieste                 1.428571
trento                  1.428571
nuoro                   1.428571
pavia                   1.428571
aosta                   1.428571
cesena + rimini         1.428571
alpignano (to)          1.428571
bologna                 1.428571
comunanza (ap)          1.428571
uggiano la chiesa       1.428571
messina                 1.428571
ivrea                   1.428571
genova                  1.428571
venezia                 1.428571
borgomanero             1.428571
cinquefrondi rc         1.428571
parma                   1.428571
maniago (pn)            1.428571
fabriano                1.428571
chieri                  1.428571
sesto fiorentino        1.428571
roma                    1.428571
sesto san giovanni      1.428571
rimini                  1.428571
padova                  1.428571
isernia                 1.428571
tolentino               1.428571
bagnacavallo (ra)       1.428571
bucine                  1.428571
settimo torinese        1.428571
pesaro                  1.428571
san dona di piave       1.428571
bolzano                 1.428571
cenadi                  1.428571
palermo                 1.428571
torino                  1.428571
imperia                 1.428571
pula                    1.428571
frosinone               1.428571
faenza                  1.428571
grassano                1.428571
treviso                 1.428571
catania                 1.428571
rho                     1.428571
tavagnacco              1.428571
cavriglia               1.428571
casalecchio di reno     1.428571
verona                  1.428571
tradate                 1.428571
NaN                     0.000000
Length: 59, dtype: float64


In [6]:
# Swap nan for a more understandable word
old_dict = city.to_dict()
new_dict = {}
for i in old_dict:
    if type(i) is float and np.isnan(i):
        new_dict["Nessuna risposta"] = old_dict[i]
    else:
        new_dict[i.capitalize()] = old_dict[i]

cityu = pd.Series(new_dict)
city = cityu.order()


Nessuna risposta       0
Alessandria            1
Nuoro                  1
Padova                 1
Palermo                1
Parma                  1
Pavia                  1
Pesaro                 1
Pula                   1
Reggio emilia          1
Rho                    1
Rimini                 1
Roma                   1
San dona di piave      1
Sesto fiorentino       1
Sesto san giovanni     1
Settimo torinese       1
Tavagnacco             1
Tolentino              1
Torino                 1
Torino                 1
Tradate                1
Trento                 1
Treviso                1
Trieste                1
Uggiano la chiesa      1
Venezia                1
Messina                1
Verona                 1
Maniago (pn)           1
Alpignano (to)         1
Aosta                  1
Bagnacavallo (ra)      1
Bologna                1
Bolzano                1
Borgomanero            1
Bucine                 1
Casalecchio di reno    1
Cascina (pi)           1
Catania                1
Cavriglia              1
Cenadi                 1
Marsala                1
Cesena + rimini        1
Cinquefrondi rc        1
Comunanza (ap)         1
Fabriano               1
Faenza                 1
Frosinone              1
Genova                 1
Grassano               1
Imperia                1
Isernia                1
Ivrea                  1
Chieri                 1
Terni                  2
Firenze                2
Roma                   5
Milano                 7
Length: 59, dtype: int64

In [7]:
# Plot the data
plt.figure(figsize=(16,6))
plt.xlabel(u'Cittá', fontsize=16)
plt.ylabel('Lab', fontsize=16)
plt.title(u"Dove si trova il laboratorio?", fontsize=18, y=1.02)
my_colors = seaborn.color_palette("husl", len(city)) # Set color palette
city.plot(kind="bar",color=my_colors)
plt.savefig(u"svg/Q004-CittáLab.svg")
plt.savefig(u"png/Q004-CittáLab.png")
plt.savefig(u"pdf/Q004-CittáLab.pdf")



In [7]: