You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.0 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. # coding=utf-8
  2. import sys
  3. reload(sys)
  4. sys.setdefaultencoding('utf8')
  5. import numpy as np
  6. import pandas as pd
  7. import matplotlib.pyplot as plt
  8. from datetime import datetime, date, timedelta
  9. members = pd.read_csv('datasets/BotC.csv')
  10. print members.head(1)
  11. #generate the full set of days from the first date to the last in the dataset
  12. months = []
  13. days = []
  14. dInit = date(2017, 6, 8)
  15. dEnd = date(2017, 1, 9)
  16. delta = dEnd - dInit
  17. for i in range(delta.days+1):
  18. day = dInit + timedelta(days=i)
  19. dayString = day.strftime("%d/%m/%y")
  20. dayDatetime = datetime.strptime(dayString, '%d/%m/%y')
  21. days.append(dayDatetime)
  22. #add the dates of shops creation to the days array
  23. for memberDate in members['Date']:
  24. if isinstance(memberDate, basestring):
  25. memberDay = memberDate
  26. memberDayDatetime = datetime.strptime(memberDay, '%B %d, %Y')
  27. days.append(memberDayDatetime)
  28. #count days frequency in days array
  29. unique, counts = np.unique(days, return_counts=True)
  30. countDays = dict(zip(unique, counts))
  31. realCounts = []
  32. for count in counts:
  33. realCounts.append(count-1)
  34. #count the total acumulation of shops created in each days
  35. totalCount = 0
  36. globalCount = []
  37. for k in realCounts:
  38. totalCount = totalCount + k
  39. globalCount.append(totalCount)
  40. dates = countDays.values()
  41. counts = countDays.values()
  42. #plot the data
  43. plt.title("New members registered each day")
  44. plt.plot(unique, realCounts)
  45. plt.show()
  46. plt.title("Total members each day")
  47. plt.plot(unique, globalCount)
  48. plt.show()
  49. plt.title("New members and total members each day")
  50. plt.plot(unique, realCounts, label="new members registered each day")
  51. plt.plot(unique, globalCount, label="total members each day")
  52. plt.legend(loc='upper left')
  53. plt.show()
  54. # place of the account
  55. places = []
  56. for place in members["Place"]:
  57. if isinstance(place, basestring):
  58. places.append(place)
  59. placesNames, placesCount = np.unique(places, return_counts=True)
  60. plt.title("Membership places")
  61. plt.pie(placesCount, labels=placesNames, autopct='%1.1f%%', shadow=True, startangle=90)
  62. plt.axis('equal')
  63. plt.show()