前提・実現したいこと
Spotifyの楽曲分析を進めたいです
楽曲特徴を得る作業の前にエラーが発生しました
分からないことがたくさんあり、教えていただけると幸いです
発生している問題・エラーメッセージ
https://open.spotify.com/track/58dxGXavrcagRqA58fNB0Z <class 'str'> https://open.spotify.com/track/2yozZfRYHP7Elsymghu5t3 <class 'str'> https://open.spotify.com/track/3S3DDZrPOYTirleXRyHnNM <class 'str'> https://open.spotify.com/track/5DMEvbg3gUmiR5HIBWdveV <class 'str'> 中略 https://open.spotify.com/track/0U9vBvoG3LN1PnuVl47E3W <class 'str'> https://open.spotify.com/track/2tgWF9EZzqiq4Qzdzeow1A <class 'str'> https://open.spotify.com/track/4jaaMznp3KPllxbmRdiIbx <class 'str'> https://open.spotify.com/track/6Flllj0iIJPwXUpxL9KdxC <class 'str'> https://open.spotify.com/track/4XkqVSWIPb07iLEDvAPq93 <class 'str'> https://open.spotify.com/track/7yXwERf5YbjCXkVqU1fZvA <class 'str'> nan <class 'float'> --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-24-69a5d88baf73> in <module>() 5 for url in songs["URL"] : 6 print(url, type(url)) ----> 7 df = pd.DataFrame.from_dict(spotify.audio_features(url)) 8 song_info = song_info.append(df) 9 /usr/local/lib/python3.6/dist-packages/spotipy/client.py in audio_features(self, tracks) 826 results = self._get('audio-features/?ids=' + trackid) 827 else: --> 828 tlist = [self._get_id('track', t) for t in tracks] 829 results = self._get('audio-features/?ids=' + ','.join(tlist)) 830 # the response has changed, look for the new style first, and if TypeError: 'float' object is not iterable
該当のソースコード
!pip install pandas !pip install spotipy import pandas as pd import spotipy from spotipy.oauth2 import SpotifyClientCredentials import json import csv client_id = client_secret = client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret) spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager) songs = pd.read_csv("data.csv", encoding="shift-jis" , index_col=0) songs.head(10) song_info = pd.DataFrame() URL = ["https://open.spotify.com/track/58dxGXavrcagRqA58fNB0Z"] for url in songs["URL"] : print(url, type(url)) df = pd.DataFrame.from_dict(spotify.audio_features(url)) song_info = song_info.append(df) #index振り直し song_info=song_info.reset_index(drop=True) song_info.head(10) song_info.dtypes dropna(how="all")
試したこと
URLを思いつく限り、コードも調べて変えられそうなところは試してみました
補足情報(FW/ツールのバージョンなど)
GoolgleColabolatlyを使用させていただいています
https://qiita.com/kazuya-n/items/fbee07ef778e166cb6dd
参考にさせていただいているサイトのURLです
どの行でのエラーですか?
返信ありがとうございます!
df = pd.DataFrame.from_dict(spotify.audio_features(url))
実行結果のこの部分に右矢印がついているのでここなのかと考えています
理解できていなくて申し訳ないです
コードとエラーメッセージはすべて掲載してください。一部だけだと回答しづらいです。
閲覧いただきありがとうございます、失礼いたしました
エラー部分と現在実行しているコードは上記で全てです
見づらくなってしまったかもしれませんがよろしくお願いいたします
インデントが潰れて読みづらいです。<code>ボタンで挿入できるコードブロックを活用してください。
教えていただいたcodeのほうを使用させていただきました
よろしくお願いいたします
1.「for url in songs["URL"] :」ここで”url”は正しいデータが取得できていますか?
2.サイトのリンクは「リンクの挿入」で記入してください。
ご指摘ありがとうございます。
楽曲の解析情報(tempo,danceability等)が参考で必要なのかと考え、人気トップの楽曲のURLを使用しています。他にもトップチャートのURL等も試しましたが現在のエラー内容は変わりませんでした。
よろしくお願いいたします。
埒があかなそうなので,
`df = pd.DataFrame.from_dict(spotify.audio_features(url))`
の上の行に,`print(url, type(url))` を挿入して実行した結果を貼ってもらえますか?
ご指摘ありがとうございます。
おかげさまで楽曲のURLは全て開くことができるようになりました。
nan <class 'float'>の部分以外そのままかとおもわれます。
よろしくお願いいたします
print(url, type(url))はデバッグ用コードなので,修正事項ではありません.該当のソースコードは元に戻してください. そして,
for url in songs["URL"] :
<indent>print(url, type(url))
df = pd.DataFrame.from_dict(spotify.audio_features(url))
と
for url in songs["URL"] :
<indent>print(url, type(url))
<indent>df = pd.DataFrame.from_dict(spotify.audio_features(url))
は全く別物です.
全体的に会話が噛み合っていないように見受けられたので,Pythonやプログラミング自体の勉強から初めた方が良いと思います.
(原因はpd.read_csvでstringを無理やりfloatにパースしてnanになっているとかだろうか?)
大変申し訳ございません、修正します。
機械学習を始めたのが最近のことであり、自分の知識や理解不足の状態で進めてしまったこともご指摘通りだとおもいます。
たくさんの方が考えて、アドバイスしてくださったので自分なりに学習と同時進行で進めていこうとおもいます。
ありがとうございます。
dataを修正し保存しなおすことでエラーを解決することができました!
この件について考えてくださった、またアドバイスをくださった皆様本当にありがとうございました!
また機会がありましたらどうかよろしくお願いいたします!
回答1件
あなたの回答
tips
プレビュー