Q010 - Che dotazioni aggiuntive ha la sede che ospita 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
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: D10[SQ001] - D10[SQ008] - D10[other]

equipment_columns = ["D10[SQ001]","D10[SQ002]","D10[SQ003]","D10[SQ004]",
               "D10[SQ005]","D10[SQ006]","D10[SQ007]","D10[SQ008]"]
equipment_options = ['Cucina',
               'Bar',
               'Auditorium',
               'Sale lezioni',
               'Altri equipmentoratori',
               'Magazzino del equipmentoratorio',
               'Magazzino per gli utenti',
               'Scrivanie o postazioni di lavoro']
equipment = data[equipment_columns]
equipment.replace(u'Sì', 'Si', inplace=True) # Get rid of accented characters 
equipment_other = data['D10[other]'].str.lower().value_counts()


-c:14: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

In [5]:
#places[0:4]

Combinations...


In [6]:
# Create all the possible combinations from the main options
# See http://stackoverflow.com/questions/17176887/python-get-all-permutation-of-a-list-w-o-repetitions

import itertools 

all_combinations = {}
all_combinations_columns = []

for i in range(1, len(equipment_columns)+1):
    comb = list(itertools.combinations(equipment_columns, i))
    for k in comb:
        # Each combination
        all_combinations[k] = {}
        all_combinations[k]["col_list"] = list(k)
        # Build the string and boolean list of each combination
        comb_list = []
        comb_bool_list = []
        # Put default False value
        for l in equipment_columns:
            comb_bool_list.append(False)
        for j in k:
            pos = equipment_columns.index(j) # Get position
            comb_list.append(equipment_options[pos])
            comb_bool_list[pos] = True
        all_combinations[k]["list"] = comb_list
        all_combinations[k]["bool_list"] = comb_bool_list
        all_combinations[k]["str"] = ", ".join(comb_list)

In [7]:
# Check which combinations correspond each row
str_values = []
for i in equipment.index:
    current_bool_list = list(equipment.ix[i].isin(["Si"]))
    for i in all_combinations:
        if current_bool_list == all_combinations[i]["bool_list"]:
            str_values.append(all_combinations[i]["str"])

In [8]:
# Add combination column
equipment["Combination"] = pd.Series(str_values)


-c:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

In [9]:
# Gather data
resulting_combinations = equipment["Combination"].value_counts()
resulting_combinations_percentage = equipment["Combination"].value_counts(normalize=True)*100

In [10]:
# Plotting the first 10 values of the most popular combinations
resulting_combinations[0:10].plot(kind='bar',figsize=(20,10),rot=90)
plt.title("Che dotazioni aggiuntive ha la sede che ospita il laboratorio? Combinazioni", fontsize=18, y=1.02)
plt.ylabel("Lab", fontsize=16)
plt.xlabel("Combinazioni", fontsize=16)
plt.savefig("svg/Q010-Combinazioni.svg")
plt.savefig("png/Q010-Combinazioni.png")
plt.savefig("pdf/Q010-Combinazioni.pdf")



In [11]:
%%capture output

# Save the output as a variable that can be saved to a file
# Data of the combinations
print "Data:"
print resulting_combinations
print
# Data of the combinations: percentage
print "Data %:"
print resulting_combinations_percentage

In [12]:
# Save+show the output to a text file
%save Q010-Combinazioni.py str(output)
shutil.move("Q010-Combinazioni.py", "text/Q010-Combinazioni.txt")


The following commands were written to file `Q010-Combinazioni.py`:
Data:
Cucina, Sale lezioni, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    4
Sale lezioni, Scrivanie o postazioni di lavoro                  4
Scrivanie o postazioni di lavoro                                4
Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    3
Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    3
Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    2
Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2
Sale lezioni                                                    2
Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    2
Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2
Auditorium, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2
Bar, Sale lezioni, Scrivanie o postazioni di lavoro             2
Sale lezioni, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2
Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2
Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio    1
Cucina, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1
Bar, Auditorium, Altri equipmentoratori, Scrivanie o postazioni di lavoro    1
Altri equipmentoratori, Scrivanie o postazioni di lavoro        1
Cucina, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1
Auditorium, Altri equipmentoratori                              1
Bar, Sale lezioni, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1
Auditorium, Sale lezioni, Altri equipmentoratori                1
Cucina, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1
Bar, Auditorium, Altri equipmentoratori                         1
Cucina, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1
Cucina, Sale lezioni                                            1
Cucina                                                          1
Cucina, Auditorium, Sale lezioni, Scrivanie o postazioni di lavoro    1
Altri equipmentoratori, Magazzino del equipmentoratorio         1
Cucina, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1
Cucina, Bar, Auditorium, Sale lezioni, Scrivanie o postazioni di lavoro    1
Bar, Sale lezioni                                               1
Cucina, Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    1
Bar                                                             1
Cucina, Scrivanie o postazioni di lavoro                        1
Cucina, Sale lezioni, Magazzino del equipmentoratorio, Magazzino per gli utenti    1
Bar, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1
Magazzino del equipmentoratorio                                 1
Cucina, Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1
Auditorium, Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    1
Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1
Sale lezioni, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1
Cucina, Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1
Cucina, Bar, Auditorium, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1
dtype: int64

Data %:
Cucina, Sale lezioni, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    5.714286
Sale lezioni, Scrivanie o postazioni di lavoro                  5.714286
Scrivanie o postazioni di lavoro                                5.714286
Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    4.285714
Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    4.285714
Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    2.857143
Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2.857143
Sale lezioni                                                    2.857143
Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    2.857143
Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2.857143
Auditorium, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2.857143
Bar, Sale lezioni, Scrivanie o postazioni di lavoro             2.857143
Sale lezioni, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2.857143
Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    2.857143
Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio    1.428571
Cucina, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1.428571
Bar, Auditorium, Altri equipmentoratori, Scrivanie o postazioni di lavoro    1.428571
Altri equipmentoratori, Scrivanie o postazioni di lavoro        1.428571
Cucina, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1.428571
Auditorium, Altri equipmentoratori                              1.428571
Bar, Sale lezioni, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1.428571
Auditorium, Sale lezioni, Altri equipmentoratori                1.428571
Cucina, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1.428571
Bar, Auditorium, Altri equipmentoratori                         1.428571
Cucina, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1.428571
Cucina, Sale lezioni                                            1.428571
Cucina                                                          1.428571
Cucina, Auditorium, Sale lezioni, Scrivanie o postazioni di lavoro    1.428571
Altri equipmentoratori, Magazzino del equipmentoratorio         1.428571
Cucina, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1.428571
Cucina, Bar, Auditorium, Sale lezioni, Scrivanie o postazioni di lavoro    1.428571
Bar, Sale lezioni                                               1.428571
Cucina, Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    1.428571
Bar                                                             1.428571
Cucina, Scrivanie o postazioni di lavoro                        1.428571
Cucina, Sale lezioni, Magazzino del equipmentoratorio, Magazzino per gli utenti    1.428571
Bar, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1.428571
Magazzino del equipmentoratorio                                 1.428571
Cucina, Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1.428571
Auditorium, Sale lezioni, Altri equipmentoratori, Scrivanie o postazioni di lavoro    1.428571
Magazzino del equipmentoratorio, Scrivanie o postazioni di lavoro    1.428571
Sale lezioni, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1.428571
Cucina, Bar, Auditorium, Sale lezioni, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1.428571
Cucina, Bar, Auditorium, Altri equipmentoratori, Magazzino del equipmentoratorio, Magazzino per gli utenti, Scrivanie o postazioni di lavoro    1.428571
dtype: float64