arnaucube
arnaucube/faircoopDataAnalyticsPublic Self-hosted repository
faircoopDataAnalytics/fairmarket-shopsAnalytics.py
fairmarket-shopsAnalytics.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
 9from datetime import datetime, date, timedelta
10
11shops = pd.read_csv('datasets/fairMarket-shops.csv')
12
13print shops.tail(1)
14
15#generate the full set of days from the first date to the last in the dataset
16months = []
17days = []
18dInit = date(2015, 5, 04)
19dEnd = date(2017, 8, 31)
20delta = dEnd - dInit
21for i in range(delta.days+1):
22    day = dInit + timedelta(days=i)
23    dayString = day.strftime("%d/%m/%y")
24    dayDatetime = datetime.strptime(dayString, '%d/%m/%y')
25    days.append(dayDatetime)
26
27#add the dates of shops creation to the days array
28for shopDate in shops['Created on']:
29    if isinstance(shopDate, basestring):
30        shopDay = str.split(shopDate)[0]
31        shopDayDatetime = datetime.strptime(shopDay, '%d/%m/%y')
32        days.append(shopDayDatetime)
33
34#count days frequency in days array
35unique, counts = np.unique(days, return_counts=True)
36countDays = dict(zip(unique, counts))
37realCounts = []
38for count in counts:
39    realCounts.append(count-1)
40
41#count the total acumulation of shops created in each days
42totalCount = 0
43globalCount = []
44for k in realCounts:
45    totalCount = totalCount + k
46    globalCount.append(totalCount)
47
48dates = countDays.values()
49counts = countDays.values()
50
51#plot the data
52plt.title("New shops opened each day")
53plt.plot(unique, realCounts)
54plt.show()
55
56plt.title("Total shops each day")
57plt.plot(unique, globalCount)
58plt.show()
59
60plt.title("New shops and total shops each day")
61plt.plot(unique, realCounts, label="new shops opened each day")
62plt.plot(unique, globalCount, label="total shops each day")
63plt.legend(loc='upper left')
64plt.show()