Un anàlisi visual de les dades és una procés que ens pot resultar útil per
entendre millor les dades amb les que estem treballant.
Cal tindre en compte que per poder representar les dades en un gràfic,
sols podem representar dues dimensions. No existeix cap gràfic que ens
permeta representar tota la informació possible, però podem fer combinacions
per trobar relacions i patrons en les dades.
Instal·lació de dependències
Aquest material utilitza les següents llibreries de Python
per a la visualització de les dades:
requirements.txt
matplotlib
seaborn
importmatplotlib.pyplotaspltimportseabornassns
Distribució de les columnes respecte a les etiquetes¶
En els algorismes d'aprenentatge automàtic supervisat, utilitzem les etiquetes
per indicar l'eixida esperada del model. Una bona manera de començar a entendre
les dades és veure com es distribueixen les dades respecte a les etiquetes.
Advertència
Aquesta visualització sols és vàlida per les columnes numèriques.
Un histograma ens permet veure la distribució de les dades d'una sola columna.
df_objects=df.select_dtypes(include=['object'])figure=plt.figure(figsize=(15,20))fori,columninenumerate(df_objects.columns,1):axes=figure.add_subplot(3,3,i)sns.histplot(x=df_objects[column],ax=axes,hue=df['income'],multiple='dodge')axes.tick_params(axis='x',rotation=45)forlabelinaxes.get_xticklabels():label.set_ha('right')# Align labels to the rightfigure.tight_layout()plt.show()
#!/usr/bin/env pythonfromurllib.requestimporturlopenimportpandasaspdimportosfromsklearn.preprocessingimportOrdinalEncoder,OneHotEncoderfromplotnineimport*importmatplotlib.pyplotaspltimportseabornassnsdefdownload(url,filepath):http_response=urlopen(url)content=http_response.read()withopen(filepath,'wb')asf:f.write(content)files_folder='../../files/ud3'ifnotos.path.exists(files_folder):os.makedirs(files_folder)file_path=os.path.join(files_folder,'adult.data.csv')ifnotos.path.exists(file_path):adult_dataset_url='https://raw.githubusercontent.com/joapuiib/saa-datasets/refs/heads/main/adult.data.csv'print('Downloading dataset...')download(adult_dataset_url,file_path)else:print(f'Dataset found at {file_path}')df=pd.read_csv(file_path)df_numerics=df.select_dtypes(include=['float64','int64'])defdensitat_etiquetes():figure=plt.figure(figsize=(15,6))fori,columninenumerate(df_numerics.columns,1):axes=figure.add_subplot(3,2,i)sns.kdeplot(x=df_numerics[column],hue=df['income'],fill=True,ax=axes)figure.tight_layout()defhistograma():figure=plt.figure(figsize=(15,20))df_objects=df.select_dtypes(include=['object'])fori,columninenumerate(df_objects.columns,1):axes=figure.add_subplot(5,3,i)sns.histplot(x=df_objects[column],ax=axes,hue=df['income'],multiple='dodge')axes.tick_params(axis='x',rotation=45)forlabelinaxes.get_xticklabels():label.set_ha('right')# Align labels to the rightfigure.tight_layout()defrelacions_variable():n_samples_to_plot=5000columns=['age','education-num','hours-per-week']_=sns.pairplot(data=df[:n_samples_to_plot],vars=columns,hue="income",plot_kws={'alpha':0.2},height=3,diag_kind='hist',diag_kws={'bins':30})defscatterplot():ax=sns.scatterplot(x="age",y="hours-per-week",data=df,hue="income",alpha=0.5,)defmatriu_correlacio():corr_df=df_numerics.corr(method='pearson')plt.figure(figsize=(8,6))sns.heatmap(corr_df,annot=True)defboxplot():sns.boxplot(x='income',y='age',hue='income',data=df)densitat_etiquetes()# histograma()# relacions_variable()# scatterplot()# matriu_correlacio()# boxplot()plt.show()