commit
83ac3777f1
@ -0,0 +1,40 @@
|
||||
import pandas
|
||||
pandas.__version__
|
||||
import matplotlib.pyplot as plt
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
pd.__version__
|
||||
|
||||
#Lecture du fichier csv
|
||||
df = pd.read_csv("spotify_songs.csv")
|
||||
print(df.head(5))
|
||||
df = df.dropna()
|
||||
|
||||
#Trie de la liste par artist
|
||||
sorted_df = df.sort_values(by='track_artist')
|
||||
artist = sorted_df["track_artist"]
|
||||
print(artist)
|
||||
|
||||
#creation d'une liste des artistes
|
||||
artistes = []
|
||||
for artiste in sorted_df['track_artist'].unique():
|
||||
artistes.append(artiste)
|
||||
|
||||
print(artistes)
|
||||
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
names = sorted_df["track_name"]
|
||||
popularity = sorted_df["track_popularity"]
|
||||
|
||||
# Filtering popularity greater than or equal to 90
|
||||
filtered_names = [name for name, pop in zip(names, popularity) if pop >= 90]
|
||||
filtered_popularity = [pop for pop in popularity if pop >= 90]
|
||||
|
||||
# Plotting the bar graph
|
||||
plt.barh(filtered_names,filtered_popularity, color='skyblue')
|
||||
plt.xlabel('Indice de popularité')
|
||||
plt.ylabel('Chansons')
|
||||
plt.title('Analyse des indices de popularité des chansons')
|
||||
plt.grid(True)
|
||||
plt.show()
|
@ -0,0 +1,74 @@
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
# Afficher la version de pandas
|
||||
print(pd.__version__)
|
||||
|
||||
# Lecture du fichier csv
|
||||
df = pd.read_csv("spotify_songs.csv")
|
||||
print(df.head(5))
|
||||
|
||||
# Supprimer les lignes avec des valeurs manquantes
|
||||
df = df.dropna()
|
||||
|
||||
# Trier le DataFrame par artiste
|
||||
sorted_df = df.sort_values(by='track_artist')
|
||||
artistes = sorted_df["track_artist"].unique()
|
||||
|
||||
# Créer une liste des artistes uniques
|
||||
print(artistes)
|
||||
|
||||
# Créer une figure pour le premier graphique
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Extraire les noms des chansons et leur popularité
|
||||
names = sorted_df["track_name"]
|
||||
popularity = sorted_df["track_popularity"]
|
||||
|
||||
# Filtrer les chansons avec une popularité >= 90
|
||||
filtered_names = [name for name, pop in zip(names, popularity) if pop >= 90]
|
||||
filtered_popularity = [pop for pop in popularity if pop >= 90]
|
||||
|
||||
# Tracer le premier graphique en barres horizontales
|
||||
plt.barh(filtered_names, filtered_popularity, color='skyblue')
|
||||
plt.xlabel('Indice de popularité')
|
||||
plt.ylabel('Chansons')
|
||||
plt.title('Analyse des indices de popularité des chansons')
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
|
||||
# Créer un dictionnaire pour stocker la popularité par artiste
|
||||
popularity_by_artist = {}
|
||||
|
||||
# Remplir le dictionnaire avec les indices de popularité correspondant à chaque artiste
|
||||
for name, pop in zip(names, popularity):
|
||||
artiste = sorted_df.loc[sorted_df['track_name'] == name, 'track_artist'].iloc[0]
|
||||
if artiste not in popularity_by_artist:
|
||||
popularity_by_artist[artiste] = []
|
||||
popularity_by_artist[artiste].append(pop)
|
||||
|
||||
# Créer un dictionnaire pour stocker la popularité moyenne par artiste
|
||||
average_popularity_by_artist = {}
|
||||
|
||||
# Calculer la popularité moyenne pour chaque artiste
|
||||
for artiste, popularity_list in popularity_by_artist.items():
|
||||
average_popularity = np.mean(popularity_list)
|
||||
average_popularity_by_artist[artiste] = average_popularity
|
||||
|
||||
# Filtrer les artistes avec une popularité moyenne supérieure à 85
|
||||
selected_artists = {artiste: popularity for artiste, popularity in average_popularity_by_artist.items() if popularity > 80}
|
||||
|
||||
# Créer un graphique pour la deuxième analyse
|
||||
plt.figure(figsize=(10, 6))
|
||||
|
||||
# Tracer un graphique des indices de popularité moyens des artistes sélectionnés
|
||||
plt.bar(selected_artists.keys(), selected_artists.values(), color='skyblue')
|
||||
|
||||
plt.xlabel('Artistes')
|
||||
plt.ylabel('Popularité moyenne')
|
||||
plt.title('Analyse de la popularité moyenne des artistes (Popularité moyenne > 85)')
|
||||
plt.grid(True)
|
||||
plt.xticks(rotation=90) # Pour faire pivoter les étiquettes des axes x
|
||||
plt.tight_layout() # Ajuster automatiquement les sous-graphiques pour éviter les chevauchements
|
||||
plt.show()
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue