Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


dispensa di python per strategic, Schemi e mappe concettuali di Management Analysis And Systems

dispensa di python per strategic analysis, sintesi dei video caricati e delle lezioni su python

Tipologia: Schemi e mappe concettuali

2022/2023

Caricato il 28/10/2023

olga-vallone
olga-vallone 🇮🇹

4 documenti

1 / 10

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Python
È organizzato in celle:
1. Celle Markdown testi esplicativi, intestazioni, elenchi puntati, immagini o collegamenti.
2. Celle “Code”dove scrivi il codice (l’output viene visualizzato sotto la propria cella)
Per salvare modifiche icona del floppy disk
(il numero accanto alla cella indica il n di volte che la cella è stata eseguita)
Eseguire il codice: run a cell /o shift il computer acquisisce le variabili in memoria
VARIABILI
Noi archiviamo le informazioni in variabili (=contenitori in cui archiviamo valori/dati)
Creare delle variabili
Variable_name = any_data_value non mostra alcun output (associa solo il valore)
= assigment
Print ( variable_name ) funzione per vedere il contenuto della variabile
Per i numeri decimali si usa il separatore “.” Es: “7.3”
Nomi delle variabili
Il nome di una variabile può essere composto da testo, “_” e numeri
Python è “case sensitive” (“a” è diverso da “A”)
Non sono permessi spazi (si usa invece “_”)
Non si possono utilizzare numeri all’inizio della variabile
Operazioni con le variabili
+, - , * (moltiplicazione), / (divisione), ** (potenza)
Es: lenght=3.8
width=4.8
square_area=lenght**2
rectangle_area=(width* lenght)/
triangle_area=(width* lenght)/2
print(triangle_area)
Fare comparazioni
“==” esattamente uguale
“>” Maggiore di
“<” minore di
“>=” Maggiore o uguale
“<=” minore o uguale
“!=” non uguale a
Es: print( rectangle_area<triangle_area)
print( rectangle_area/2== triangle_area)
False
True
1
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica dispensa di python per strategic e più Schemi e mappe concettuali in PDF di Management Analysis And Systems solo su Docsity!

Python

È organizzato in celle:

1. Celle Markdown testi esplicativi, intestazioni, elenchi puntati, immagini o collegamenti.

2. Celle “Code”dove scrivi il codice (l’output viene visualizzato sotto la propria cella)

Per salvare modifiche icona del floppy disk

(il numero accanto alla cella indica il n di volte che la cella è stata eseguita)

Eseguire il codice: run a cell /o shift il computer acquisisce le variabili in memoria

VARIABILI

Noi archiviamo le informazioni in variabili (=contenitori in cui archiviamo valori/dati)

Creare delle variabili

Variable_name = any_data_value non mostra alcun output (associa solo il valore)

= assigment

Print ( variable_name )  funzione per vedere il contenuto della variabile

Per i numeri decimali si usa il separatore “.” Es: “7.3”

Nomi delle variabili

 Il nome di una variabile può essere composto da testo, “_” e numeri

 Python è “case sensitive” (“a” è diverso da “A”)

 Non sono permessi spazi (si usa invece “_”)

 Non si possono utilizzare numeri all’inizio della variabile

Operazioni con le variabili

+, - , * (moltiplicazione), / (divisione), ** (potenza)

Es: lenght=3. width=4. square_area=lenght** rectangle_area=(width* lenght)/ triangle_area=(width* lenght)/ print(triangle_area)

Fare comparazioni

“==” esattamente uguale

“>” Maggiore di

“<” minore di

“>=” Maggiore o uguale

“<=” minore o uguale

“!=” non uguale a

Es: print( rectangle_area<triangle_area) print( rectangle_area/2== triangle_area) False True

True o False

“Booleans”

Logical operations

“And” (o “&”) è vero solo se entrambi gli statement sono veri

“Or” è vero fintanto che uno statement è vero

“Is”  è vera se gli statement coincidono

“Not”  prima di uno statement, ne inverte il valore

STRINGHE

set continui di caratteri contenuti all’interno di virgolette

Si può usare ‘ o “ (se iniziamo la stringa con “ , possiamo usare solo ‘ all’interno del testo)

Comandi (metodi) per modificare stringhe di testo

.lower() rende tutto minuscolo

.upper() rende tutto maiuscolo

.capitalize() rende maiuscola la prima lettera della PRIMA parola

.title() rende maiuscola la prima lettera di OGNI parola

Sintassi: manipulated_string = old_string.method()

Lunghezza delle stringhe

len(string) funzione per ottenere la lunghezza di una stringa

Es: short_string=”ue” print( len (short_string)) 2

Concatenare più stringhe

+ concatena due stringhe in una lunga stringa

* può essere usato per ripeter una stringa

Es: print(‘la’*3) lalala

La concatenazione di stringhe con numeri non funziona

Str(number) per trasformare un numero in una stringa

show="games of thrones" worst_season="8" print("the worst " + show +" season is season "+ worst_season)

Il comando .format() permette di formattare una stringa e aggiungere argomenti che vogliamo

inserire nella stringa

Usiamo {} per definire il segna posto dove vogliamo aggiungere il valore nella stringa

print( "the worst {} season is season {}".format(show, worst_season))

Liste

È una collezione di elementi ordinati. Ogni elemento ha una posizione specifica detta indice

Gli elementi di una lista sono contenuti tra [] e sono separati da virgole ,

Es: fruit_list= [ “apple”, “banana”, “orange”]

L’indice inizia da 0, 1 per il secondo elemento e così via

Possiamo accedere ad un elemento della lista usando il suo indice e []

Es: per accedere al terzo elemento usiamo

Print(fruit_list[2]) ‘orange’

La lista è una delle strutture più versatili in Python. Può contenere diversi elementi : stringhe,

numeri, …anche altre liste.

Le sintassi per creare liste sono:

Set

È una collezione di elementi non ordinati, racchiusi in {} e separati da ,

Differenza con le liste: gli elementi nei set non hanno un ordine e non contengono duplicati per

natura ( Non è possibile ripetere due volte lo stesso elemento )

Esempio_set = { “sarfatti 25”, “velodromo”}

Possiamo aggiungere un elemento usando .add(element) o rimuovedno con .remove(element)

Trasformare una lista in set

Si trasformano le liste in set per evitare i duplicati (molto utile nella data analysis) usando set(list)

Operazioni con i set

. union() .intrsection() .difference()  abbiamo solo elementi unici

(operazioni dei diagrammi di Venn)

Result.set= set1.operation(set2)

Dizionari

Contenitore che memorizza I dati in coppie chiave-valore : cerchi una parola (chiave) per trovane la

definizione (valore). Sono contenuti tra {} e contengono una serie di coppie key: value separate da ,

My_dict={“key”:”value”}

Per accedere ad un valore in dizionario, si inserisce la chiave all’interno di []

My_dict[“key”] da come output “value”

My_dict={ “apple”: “a fruit”, “dog”: “an animal”, “car”: “a vehicle”}

print(my_dict[“apple”])

“a fruit”

Funzione zip() possiamo creare un dizionario in Python velocemente unendo due liste (la prima

con le chiavi, la seconda con i valori) (devono avere la stessa lunghezza)

Key_list=[..]

Value_list=[..]

dictionary=dict (zip(key_list, value_list))

Aggiungere nuove chiavi o valori

dictionary[“new_key”]=value

Modificare il valore di una chiave

dictionary[key_to_be_modified]= new_value

Eliminare un valore

del my_dict[key]

DIZIONARI MULTI-LIVELLO

I valori di un dizionario possono essere dizionari stessi

Es. the_office={“Michael”:{“surname”:”Scott”, “role”:”regional manager”}, “Dwight”:

{“surname”:”Schrute”,”role”: ”assistant to the regional manager”}}

STATISTICA

residuals = results.resid

you can check for multicollinearity among independent variables using variance inflation factor

( VIF ).

#from statsmodels.stats.outliers_influence import variance_inflation_factor

#vif = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]

#print(f'VIF for each independent variable: {vif}')

Per creare scatterplot

# Import necessary libraries

plt.scatter(X, y)

plt.title('Scatterplot of X vs. y')

plt.xlabel('X')

plt.ylabel('y')

plt.show()

#uploading data

iceCream = pd.read_excel('icecream.xlsx')

#Load data into X (independent variables) and y (dependent variable)

X=iceCream['Temperature']

y=iceCream['IceCreamSales']

# 1. Linearity: You can visually check for linearity using scatterplots.

df_filtered = df[columns_list] filtriamo il dataset originale usando la lista, e ora il dataset conterrà

solo le colonne della lista

es: columns_list=[ 'age', 'female_cust', 'country', 'state', 'product_category','sub_category','revenues', 'profits', 'nepotist', 'quarter' ] df_filtered=customers_df[columns_list] display(df_filtered)

Per salvare il nuovo dataframe come un file excel

nomedelfile.to_excel('filename.xlsx', index =False ) es: df_filtered.to_excel('S2_customer_spending_manipulated.xlsx',index=False)

STATISTICA DESCRITTIVA

df .describe()  sintassi per il calcolo delle statistiche descrittive (media, deviazione, min, max…)

Descrizione avanzata:

Possiamo verificare se le statistiche descrittive differiscono per alcuni gruppi di osservazione

interesting_columns = ['column1', 'column2', ... ] seleziono le colonne a cui

sono interessato

df .groupby ('grouping_variable')[interesting_columns] .describe ()scelgo la

variabile da osservare, e raggruppo le colonne scelte e vedo se differiscono o meno in

relazione a tale variabile

Valori unici in una colonna

Si usa la funzione set, dato che non ammette duplicati, in modo da trovare i valori unici in una

colonna:

set(dataframe.column_name)utile per comprendere I valori unici che ci sono in una colonna

es: manipulated_df.country set(manipulated_df.country)

Filtrare le righe

Possiamo scrivere condizioni (istruzioni) per filtrare le righe di dataframe in qualsiasi modo desideriamo. condition = df['column'] > threshold Possiamo combinare più di una condizione utilizzando gli operatori booleans (& e, | o). Infine, utilizziamo df[condition] per filtrare le righe. condition1 = df['column1'] == threshold condition2 = df['column2'].isin([value1, value2, ... ]) condition3 = df['column2'].between([valueMin, valueMax]) df_filtered_rows = df[condition1 & condition2 & condition3] Possiamo programmare i valori utilizzando un insieme di operatori:  == 'Francia' significa che la colonna ha valore 'Francia'  != 5 significa che la colonna ha un valore diverso da 5  >= 12 significa che la colonna ha un valore uguale o maggiore di 12  =< 12 significa che la colonna ha un valore uguale o inferiore a 12  .isin([7, 'Germany' , ...]) significa che la colonna ha valore 7 o 'Germany' o...  .between(8, 88) significa che la colonna ha un valore compreso tra 8 e 88  .notna() significa che la colonna non contiene un valore mancante NaN (=missing value, che non significa 0)

Scatterplot

Utile per vedere se esiste una relazione tra le variabili

Decido le colonne da associare alla variabile delle x e y

nomedf .plot (kind = 'scatter', x = 'independent_variable', y = 'dependent_variable')

Modelli interpretativi con regressione lineare (OLS)

La regressione lineare è una relazione tra una variabile dipendente y e delle variabili indipendenti

x. Se è necessario includere ulteriori variabili indipendenti, è possibile estendere la formula di

conseguenza (variabile controllo 1, 2, ecc...)

formula = 'y ~ x + control1 + control2 + ... ' modello che creiamo:

specifichiamo la formula che vogliamo esplorare

model_explanatory = smf.ols(formula, data = df).fit() creiamo l’ols model:

indichiamo il dataframe sul quale svolgeremo l’analisi

print(model_explanatory.summary2())

es: vogliamo capire se il profitto di una persona dipende dall’età e dal sesso.

Variabili categoriche

Per aggiungere variabili categoriche alla regressione:

formula = 'y ~ x + control1 + ... +C(categorical_variable)' model_explanatory = smf.ols(formula, data = df).fit() Il coefficiente per l'Intercept si riferisce alla baseline, che rappresenta il valore medio di Y quando tutte le altre variabili sono 0.

Ultima sessione

1. Data formulation: importo le librerie necessarie

import pandas as pd import statsmodels.formula.api as smf import os

2. dataset in formato excel:

print(os. getcwd ()) ci dice la cartella dove ci troviamo

print(os. listdir ())i dice i file contenuti nella cartella

df = pd. read _excel('filename.extension') legge e apre il file excel

(il file excel deve essere nella stessa cartella del notebook per essere aperto)

3. df.columns per osservare solo le colonne (ovvero le variabili del dataset)

4. df.describe()per vedere le caratteristiche descrittive del dataset (conto, media, min,

max etc…). (tale funzione conta solo le colonne con variabili numeriche, non quelle

con variabili categoriche)

per evitare di perdere informazioni importanti, andiamo a manipolare i dati delle variabili

categoriche alcune (non tutte) possono essere trasformate facilmente in variabili dummy

(0,1); ad esempio:

variabili con “yes,no”,

livello di istruzione “nan, middle school, highschool, college” possiamo trasformarla in una

scala 0,1,2,

5. manipolazione dei dati di variabili categoriche

 Variabili yes e no

yes_no_dict={'yes': 1, 'no' : 0 }

df['personal_loan_dummy'] = df['personal_loan'].map(yes_no_dict)

df['house_loan_dummy'] = df['house_loan'].map(yes_no_dict)

df=df.drop (columns =['personal_loan', 'house_loan']) eliminare le vecchie colonne

plt.show()

Scatterplot

bank_df.plot(kind='scatter', x='age', y='average_balance')

plt.show()

maggiore è l’età maggiore è il saldo in banca (dal grafico)

Modificare lo scatterplot

plt.scatter(bank_df['age'], bank_df['average_balance']) # Scatter plot of 'age' against 'profits'

plt.title('Relationship between Age and Wealth') aggiungere il titolo al grafico

plt.xlabel('Age') scrivere la x

plt.ylabel('Wealth in €') scrivere la y

plt.show()

REGRESSIONE LOGISTICA

formula = 'y ~ x + control1 + control2 + ... ' si usa la stessa formula della regressione lineare model_explanatory = smf .logit (formula, data = df).fit() print(model_explanatory. summary2())

LIFT CHART:

df[["decile_out", "churn"]].groupby("decile_out").mean().plot.bar()