質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1070閲覧

PythonのTypeError: 'float' object is not iterableというもので困っています

RyotaLoM

総合スコア5

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/11/06 12:40

編集2019/11/12 19:53

前提・実現したいこと

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です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/11/06 13:11

どの行でのエラーですか?
RyotaLoM

2019/11/06 13:15

返信ありがとうございます! df = pd.DataFrame.from_dict(spotify.audio_features(url)) 実行結果のこの部分に右矢印がついているのでここなのかと考えています 理解できていなくて申し訳ないです
hayataka2049

2019/11/06 20:14

コードとエラーメッセージはすべて掲載してください。一部だけだと回答しづらいです。
RyotaLoM

2019/11/07 05:32

閲覧いただきありがとうございます、失礼いたしました エラー部分と現在実行しているコードは上記で全てです 見づらくなってしまったかもしれませんがよろしくお願いいたします
hayataka2049

2019/11/07 05:32

インデントが潰れて読みづらいです。<code>ボタンで挿入できるコードブロックを活用してください。
RyotaLoM

2019/11/07 05:40

教えていただいたcodeのほうを使用させていただきました よろしくお願いいたします
meg_

2019/11/10 11:18

1.「for url in songs["URL"] :」ここで”url”は正しいデータが取得できていますか? 2.サイトのリンクは「リンクの挿入」で記入してください。
RyotaLoM

2019/11/10 13:41

ご指摘ありがとうございます。 楽曲の解析情報(tempo,danceability等)が参考で必要なのかと考え、人気トップの楽曲のURLを使用しています。他にもトップチャートのURL等も試しましたが現在のエラー内容は変わりませんでした。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2019/11/12 15:09 編集

埒があかなそうなので, `df = pd.DataFrame.from_dict(spotify.audio_features(url))` の上の行に,`print(url, type(url))` を挿入して実行した結果を貼ってもらえますか?
RyotaLoM

2019/11/12 19:56

ご指摘ありがとうございます。 おかげさまで楽曲のURLは全て開くことができるようになりました。 nan <class 'float'>の部分以外そのままかとおもわれます。 よろしくお願いいたします
退会済みユーザー

退会済みユーザー

2019/11/16 16:53 編集

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になっているとかだろうか?)
RyotaLoM

2019/11/13 07:32

大変申し訳ございません、修正します。 機械学習を始めたのが最近のことであり、自分の知識や理解不足の状態で進めてしまったこともご指摘通りだとおもいます。 たくさんの方が考えて、アドバイスしてくださったので自分なりに学習と同時進行で進めていこうとおもいます。 ありがとうございます。
RyotaLoM

2019/11/13 13:45

dataを修正し保存しなおすことでエラーを解決することができました! この件について考えてくださった、またアドバイスをくださった皆様本当にありがとうございました! また機会がありましたらどうかよろしくお願いいたします!
guest

回答1

0

ベストアンサー

df = pd.DataFrame.from_dict(spotify.audio_features(url))と、audio_featuresurlを渡していますが、これがaudio_featuresが求めるものと違っているためでしょう。
audio_featuresに正しい引数を渡しましょう。

投稿2019/11/10 13:44

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyotaLoM

2019/11/12 12:51

回答ありがとうございます! 何度か改善を試みたのですが、回答いただいた内容をまだ正しく理解できていないです、申し訳ありません。 重ねてなのですが、もう少し具体的に教えていただくことは可能でしょうか? どうかよろしくお願いいたします。
otn

2019/11/12 13:19

spotipyライブラリを知らないので、具体的なやり方は知りません。 audio_featuresの使い方のドキュメントを読みましょう。
RyotaLoM

2019/11/12 19:57

ありがとうございます。 ご指摘の通りSpotifyの記事にありましたので参考に進めさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問