December 10, 2017
ANTH 4020: Digital Anthropology
Final Mixed-media Project
import pandas as pd
import numpy as np
import json
from pandas.io.json import json_normalize
data = pd.read_json('/Users/troy/Github/courses/DANTH/myTopArtists.json')
name = []
pop = []
genres = []
for item in data['items']:
name.append(item['name'])
pop.append(item['popularity'])
genres.append(item['genres'])
df_columns = {'Artists': name,'Popularities': pop,'Genres': genres}
df = pd.DataFrame(data=df_columns)
df
import plotly
import plotly.plotly as py
import plotly.graph_objs as go
# use plotly API access key
plotly.tools.set_credentials_file(username='*******', api_key='***************;)
data = [
go.Bar(
x=df['Artists'], # assign x as the dataframe column 'x'
y=df['Popularities']
)
]
# IPython notebook
py.iplot(data, filename='pandas-bar-chart')
mmm = df['Popularities'].mean()
mmm
Loop through Genre column and track 'rock'
def chief_string(genre):
if 'rock' in genre:
return True
else:
return False
df['Genres'].apply(lambda x: chief_string(x))
sum(df['Genres'].apply(lambda x: chief_string(x)))
result = df['Genres'].apply(lambda x: chief_string(x))
new = df[result][['Artists']]
new = df[result]
new.reset_index(inplace=True)
new
import cufflinks as cf
cf.set_config_file(world_readable=True,offline=False)
pie=cf.datagen.pie()
# pie.iplot(kind='pie',labels=new['Artists'],values=new['Popularities'])
def chief_string(genre):
if 'classic rock' in genre:
return True
else:
return False
result = df['Genres'].apply(lambda x: chief_string(x))
classicRock = df[result][['Artists']]
classicRock
def chief_string(genre):
if 'alternative rock' in genre:
return True
else:
return False
alternativeRock = df[result][['Artists']]
alternativeRock
Unforturnately, the different types of rock are associated with the same artists.
data = pd.read_json('/Users/troy/Github/courses/DANTH/myTopTracks.json')
df = data['items']
name = []
pop = []
ids = []
for item in data['items']:
name.append(item['name'])
pop.append(item['popularity'])
ids.append(item['id'])
columns = {'Tracks': name,'Popularities': pop, 'ID': ids}
tracks = pd.DataFrame(data=columns)
tracks
left = tracks[['ID','Tracks']].head(10)
left
data = pd.read_json('/Users/troy/Github/courses/DANTH/top10TrackFeatures.json')
data
da = []
val = []
loud = []
energies = []
ids = []
for track in data['audio_features']:
da.append(track['danceability'])
val.append(track['valence'])
loud.append(track['loudness'])
energies.append(track['energy'])
ids.append(track['id'])
columns = {'ID': ids,'Dance Ability': da, 'Valence': val, 'Loudness': loud, 'Energy': energies}
right = pd.DataFrame(data=columns)
right
main = pd.merge(left,right, on=left['ID'])
main
import plotly.plotly as py
import plotly.graph_objs as go
trace1 = go.Bar(
x=main['Tracks'],
y=main['Dance Ability'],
name='Dance Ability'
)
trace2 = go.Bar(
x=main['Tracks'],
y=main['Energy'],
name='Energy'
)
trace3 = go.Bar(
x=main['Tracks'],
y=main['Valence'],
name='Valence'
)
trace4 = go.Bar(
x=main['Tracks'],
y=main['Loudness'],
name='Loudness'
)
# plot_data = [trace1, trace2, trace3, trace4]
plot_data = [trace1, trace2, trace3]
layout = go.Layout(
barmode='group'
)
fig = go.Figure(data=plot_data, layout=layout)
py.iplot(fig, filename='grouped-bar')