import json import requests import pandas as pd import csv auth = "Bearer " + "BQCHzulDBG1JQpx0MpuNWzZ9djJbhNbeNFmwHn9678G2hIbMrHOLg7mf8o_QMAP4hWkQstq2qfn49_s0VMJhe-RewkHa3GpyZJZc6Qui_XXI5p93FEoy7oD99Ol-wSDuFN4SzlyBjyTIzQ" #Chill Tracks: 37i9dQZF1DX6VdMW310YC7 #Summer Heat: 37i9dQZF1DWX1UA045EoPG response = requests.get('https://api.spotify.com/v1/users/spotify/playlists/37i9dQZF1DX6VdMW310YC7/tracks', headers={"Authorization": auth}) data = response.json() ids = [] for item in data: ls = data.get("items") for n in range(len(ls)): id = ls[n].get("track").get("id") if id not in ids: ids.append(id) df = pd.DataFrame(columns=['danceability', 'energy', 'key', 'loudness', 'mode', 'speechiness', 'acousticness', 'instrumentalness', 'liveness', 'valence', 'tempo', 'type', 'id', 'uri', 'track_href', 'analysis_url', 'duration_ms', 'time_signature']) for id in ids: rq = "https://api.spotify.com/v1/audio-features/" + id response = requests.get(rq, headers={"Authorization": auth}) newdf = pd.DataFrame(response.json(), index = [0]) try: df = pd.concat([df,newdf]) except: pass df['on_playlist'] = 1 #df = df.drop('error',1).dropna() df = df.dropna() print df with open('900_tracks.csv', 'rb') as f: reader = csv.reader(f) id_list = list(reader) df2 = pd.DataFrame(columns=['danceability', 'energy', 'key', 'loudness', 'mode', 'speechiness', 'acousticness', 'instrumentalness', 'liveness', 'valence', 'tempo', 'type', 'id', 'uri', 'track_href', 'analysis_url', 'duration_ms', 'time_signature']) for id in id_list: rq = "https://api.spotify.com/v1/audio-features/" + id[0] response = requests.get(rq, headers={"Authorization": auth}) newdf = pd.DataFrame(response.json(), index = [0]) try: df2 = pd.concat([df2,newdf]) except: pass print df2 df2['on_playlist'] = 0 df2 = df2.drop('error',1).dropna() print df2 final = pd.concat([df,df2]) final.to_csv('final_dataset_june12_chilltracks.csv') import statsmodels.formula.api as sm fml = "on_playlist ~ danceability + energy + key + loudness + mode + speechiness + acousticness + instrumentalness + liveness + valence + tempo" result = sm.ols(fml, data=final).fit() print(result.summary())