faircoopDataAnalytics/fairmarket-productsAnalytics.py
fairmarket-productsAnalytics.pyRaw
1# coding=utf-8
2import sys
3reload(sys)
4sys.setdefaultencoding('utf8')
5
6import numpy as np
7import pandas as pd
8import matplotlib.pyplot as plt
9
10import mpld3
11from mpld3 import plugins, utils
12
13from datetime import datetime, date, timedelta
14
15products = pd.read_csv('datasets/fairMarket-products.csv')
16
17#print products.tail(1)
18
19#generate the full set of days from the first date to the last in the dataset
20months = []
21days = []
22dInit = date(2015, 5, 04)
23dEnd = date(2017, 8, 31)
24delta = dEnd - dInit
25for i in range(delta.days+1):
26 day = dInit + timedelta(days=i)
27 dayString = day.strftime("%d/%m/%y")
28 dayDatetime = datetime.strptime(dayString, '%d/%m/%y')
29 days.append(dayDatetime)
30
31#add the dates of products creation to the days array
32for productDate in products['Creado en']:
33 if isinstance(productDate, basestring):
34 productDay = str.split(productDate)[0]
35 productDayDatetime = datetime.strptime(productDay, '%d/%m/%y')
36 days.append(productDayDatetime)
37
38#count days frequency in days array
39unique, counts = np.unique(days, return_counts=True)
40countDays = dict(zip(unique, counts))
41realCounts = []
42for count in counts:
43 realCounts.append(count-1)
44
45#count the total acumulation of products created in each days
46totalCount = 0
47globalCount = []
48for k in realCounts:
49 totalCount = totalCount + k
50 globalCount.append(totalCount)
51
52dates = countDays.values()
53counts = countDays.values()
54
55#plot the data
56plt.title("New products published each day")
57plt.plot(unique, realCounts)
58plt.show()
59
60plt.title("Total products in FairMarket each day")
61plt.plot(unique, globalCount)
62plt.show()
63
64plt.title("New products and total products each day")
65plt.plot(unique, realCounts, label="new products offered each day")
66plt.plot(unique, globalCount, label="total products in FairMarket each day")
67plt.legend(loc='upper left')
68plt.show()
69
70
71
72
73# now, product categories analytics
74categories = []
75for category in products["Categoría pública/Display Name"]:
76 if isinstance(category, basestring):
77 categories.append(category)
78
79categoriesNames, categoriesCount = np.unique(categories, return_counts=True)
80plt.title("Products categories")
81plt.pie(categoriesCount, labels=categoriesNames, autopct='%1.1f%%', shadow=True, startangle=90)
82plt.axis('equal')
83mpld3.show()