#python #numpy #spotipy
#python #numpy #spotipy
Вопрос:
Я выполняю проект анализа данных с использованием библиотек spotipy и numpy. Я выяснил, как достичь ожидаемого результата, но я не знаю точно, почему небольшое изменение (с использованием цикла for) в моем коде приводит к тому, что он не работает. вот мой код:
def get_user_playlist(username, playlist_id, sp):
offset=0
playlist_songs = sp.user_playlist_tracks(username, playlist_id, limit=100, fields=None, offset=offset, market=None)['items']
return playlist_songs
def create_dataframe(playlist_songs):
playlist_df_columns = ['artist','track_name','id','explicit','duration','danceability','loudness','tempo']
#audio_analysis_columns = ['danceability','loudness','tempo']
playlist_df = pd.DataFrame(columns=df_columns)
# song = dict object containing song
playlist_df['artist'] = np.array([song['track']["album"]["artists"][0]["name"] for song in playlist_songs])
playlist_df['track_name'] = np.array([song['track']['name'] for song in playlist_songs])
playlist_df['id'] = np.array([song['track']['id'] for song in playlist_songs])
playlist_df['explicit'] = np.array([song['track']['explicit'] for song in playlist_songs])
for song in playlist_songs:
audio_analysis = sp.audio_features(song['track']['id'])
#returning audio_analysis for testing purposes.
return audio_analysis
#return playlist_df
важной частью является цикл for, когда я запускаю этот код, длина audio_analysis
списка = 1 :
for song in playlist_songs:
audio_analysis = sp.audio_features(song['track']['id'])
Однако это работает, когда я удаляю цикл for и делаю это вместо этого, длина audio_analysis
списка = 94, как и ожидалось.:
audio_analysis = sp.audio_features(playlist_df['id'])
Для справки, вот код, который выводит длину:
playlist = get_user_playlist('username', 'playlist_name', sp)
audio_analysis = create_dataframe(playlist)
print(len(audio_analysis))
Мой вопрос таков: почему цикл for работает не так, как я ожидаю? Мой код не имеет доступа к той же информации? Почему использование цикла for для доступа к информации не совпадает с использованием playlist_df['id']
столбца напрямую?
Комментарии:
1. Каждый раз в цикле, который вы заменяете
audio_analysis
. Итак, в конце он просто содержит значение из последней песни.2. Вторая версия создает df, который содержит значения из каждой песни в
playlist_df
3. О да!!! Я только что изменил его сейчас, чтобы он каждый раз добавлялся в список, и это работает! Хотя запуск намного медленнее. Большое спасибо 🙂 Надеюсь, у вас отличный день! @Barmar