import pandas as pd import numpy as np import json import os from pprint import pprint data_dir = '../data' # Just a munge/transform/save as feather function per file for now. def popularity(): popularity = pd.read_csv(os.path.join(data_dir, 'ds_sony_track_popularity.csv'), names = ['track_id', 'date', 'popularity']) popularity['date'] = pd.to_datetime(popularity['date']) def streams(): streams = pd.read_csv(os.path.join(data_dir, 'streams_60_tracks.csv'), names = ['track_id','date','region','all_streams', 'source_album_page_streams','source_artist_page_streams','source_chart_streams', 'source_collection_streams','source_daily_mix_streams','source_discover_weekly_streams','source_other_streams','source_playlist_streams','source_radio_streams','soruce_release_radar_streams','source_search_streams','sony_playlist_streams','spotify_playlist_streams','otehr_playlist_streams','shuffle_streams']) streams['date'] = pd.to_datetime(streams['date']) streams.to_feather(os.path.join(data_dir, 'streams_60.feather')) def track_data(): data_dir = '../data' with open(os.path.join(data_dir, 'sony_tracks_data.json')) as tracks_json: tracks = json.load(tracks_json) # example_track = tracks['results'][1] # pprint(example_track) # track_id = example_track['track_id'] # track_release_date = example_track['track_data']['album']['release_date'] # track_release_date_precision = example_track['track_data']['album']['release_date_precision'] track_ids = [] track_release_dates = [] track_release_date_precisions = [] album_release_dates = [] album_release_date_precisions = [] for tt in tracks['results']: print(f'parsing {tt["track_id"]}') track_ids.append(tt['track_id']) track_release_dates.append(tt['track_data']['album']['release_date']) track_release_date_precisions.append(tt['track_data']['album']['release_date_precision']) album_release_dates.append(tt['album_data']['release_date']) album_release_date_precisions.append(tt['album_data']['release_date_precision']) track_release_dates = pd.DataFrame.from_dict( { 'track_id' : track_ids, 'track_release_date' : track_release_dates, 'track_release_date_precision': track_release_date_precisions, 'album_release_date' : album_release_dates, 'album_release_date_precision' : album_release_date_precisions}) # track_release_dates.groupby('album_release_date_precision').size() # track_release_dates[track_release_dates['release_date'] != track_release_dates['album_release_date']] track_release_dates['derived_release_date'] = np.where(track_release_dates['track_release_date'] <= track_release_dates['album_release_date'], track_release_dates['track_release_date'], track_release_dates['album_release_date']) # TODO: This covers the frequency issue too, but revisit for more data! track_release_dates[['track_id', 'derived_release_date']].to_feather('../data/track_release_dates.feather')