aggiungere una retta al grafo di scatter che non consideri i valori outlier | src |
dato :
heroes = pd.read_csv('data/heroes.csv', sep=';', index_col=0)
heroes_with_year = heroes[heroes['First appearance'] < 2020]
trasforma le frequenze da assolute a relative | publisher_abs_freq = pd.crosstab(index=heroes_with_year['Publisher'],
columns=['Rel. frequence'],
colnames=[''])
publisher_rel_freq = publisher_abs_freq / publisher_abs_freq.sum()
publisher_rel_freq
---------------------------------------oppure:---------------------------------------
publisher_rel_freq = pd.crosstab(index=heroes_with_year['Publisher'],
columns=['Rel. frequence'],
colnames=[''],
normalize=True)
publisher_rel_freq |
quale tipo di grafico è meglio utilizzare per rappresentare i dati di tipo qualitativo?
mostra quanti supereroi apparsi prima del 2020 ci sono per ogni publisher | heroes_with_year = heroes[heroes['First appearance'] < 2020]
heroes_with_year['Publisher'].value_counts().plot.bar()
plt.show()
---------------------------------------oppure:---------------------------------------
publisher_freq.plot.bar()
plt.show() |
mostra in grafico
y = le frequenze relative di maschi e di femmine
x = il punteggio di forza | - calcolo frequenza maschi
- calolo frequenza femmine
- impostazioni grafiche |
mostrare in un grafico a barre semitrasparente la frequenza di Strength per maschi e femmine | male_strength_freq.plot.bar(color='blue', alpha=.7)
female_strength_freq.plot.bar(color='pink', alpha=.7)
plt.show() |
genera una barra per ogni osservazione, che soluzione si può usare per migliorare? | siccome ci interessano gli anni degli eventi e non la data precisa, possiamo unificare le colonne appartenenti allo stesso anno:
plt.vlines(first_app_freq.index, 0, first_app_freq.values)
plt.show() |
voglio mettere delle palline in cima alle barre | plt.vlines(first_app_freq.index, 0, first_app_freq.values)
plt.plot(first_app_freq.index, first_app_freq.values, 'o')
plt.show() |
che cosa c'è di sbagliato in questo grafico? sistemalo | pesi molto vicini vengono considerati singolarmente, sarebbe meglio utilizzare un istogramma: heroes['Weight'].hist() plt.show() mettendo all'interno di hist bins = n si aumentano o diminuiscono le colonne (bins=50) |
calcolare le frequenze cumulate per gli anni di first appearance e mostrare i primi 10 | (introduizone di crosstab)
first_app_freq_cumulate = (pd.crosstab(index=heroes_with_year['First appearance'],
columns=['Cumulate freq.'],
colnames=[''])
.cumsum())
first_app_freq_cumulate.iloc[:10] |
mostrare le frequenze cumulate di first appearance su un grafo | se years sono le first appearance dei supereroi < 2020
pd.crosstab(index = years, columns='cum').cumsum().plot(marker = 'o', legend=False) |
calcolare la tabella delle frequenze relative cumulate per l'anno di prima apparizione e mostrare le prime 10 righe | first_app_relfreq_cumulate = (pd.crosstab(index=heroes_with_year['First appearance'],
columns=['Cumulate freq.'],
colnames=[''],
normalize=True).cumsum())
first_app_relfreq_cumulate.iloc[-10:] |
mostrare la funzione cumulativa empirica per l'anno di prima apparizione | import statsmodels.api as sm
ecdf = sm.distributions.ECDF(heroes_with_year['First appearance'])
x = np.arange(1980, 1991)
y = ecdf(x)
plt.step(x, y)
plt.show() |
diagramma di pareto per il colore degli occhi con frequenza inferiore a .02 | eye_color = heroes['Eye color']
eye_color_freq = eye_color.value_counts(normalize=True)
eye_color_freq[eye_color_freq>.02].cumsum().plot()
eye_color_freq[eye_color_freq>.02].plot.bar()
plt.show() |
diagramma di pareto per gli occhi mostrando tutte le frequenze | norm_eye_color_freq = eye_color_freq[eye_color_freq>.02]/0.92
norm_eye_color_freq.cumsum().plot()
norm_eye_color_freq.plot.bar()
plt.show() |
tabella delle frequenze congiunte:
elaborare la taabella dove per ogni gender sono presenti le frequenze dell'intelligenza | pd.crosstab(index=heroes['Intelligence'],
columns=heroes['Gender']) |
riordina le righe di :
pd.crosstab(index=heroes['Intelligence'],
columns=heroes['Gender'])
nel seguente modo: | int_gender_freq.reindex(['low', 'moderate',
'average', 'good', 'high']) |
mostrare le frequenze di intelligenza maschile e femminile su un grafo | int_gender_freq.plot.bar(color=['pink', 'blue'])
plt.show() |
genera questo | . |
genera la seguente tabella di intelligenza con valori normalizzati | src |
grafo che confronta le frequenze di forza maschile e femminile | src |
plot dei valori height e weight dei maschi | src |
aggiungere una retta al grafo di scatter che non consideri i valori outlier | src |
tracciare la funzione di ripartizione di strength | . |