** We provide programming courses which are mostly based on web and mobile development. To increase number of enrollments for the course, we have been allocated some funds for marketing. Our aim in this project is to determine the best markets for advertising. We already have a dataset of survey from an e-learning platform named freeCOdeCamp. We would first analyse whetehr this dataset is appropriate for our analysis.**
import pandas as pd
direct_link="https://github.com/freeCodeCamp/2017-new-coder-survey"
survey=pd.read_csv("2017-fCC-New-Coders-Survey-Data.csv",low_memory=False) #low_memoryis set false to silence dtype error
pd.options.display.max_columns=150
survey.head()
Age | AttendedBootcamp | BootcampFinish | BootcampLoanYesNo | BootcampName | BootcampRecommend | ChildrenNumber | CityPopulation | CodeEventConferences | CodeEventDjangoGirls | CodeEventFCC | CodeEventGameJam | CodeEventGirlDev | CodeEventHackathons | CodeEventMeetup | CodeEventNodeSchool | CodeEventNone | CodeEventOther | CodeEventRailsBridge | CodeEventRailsGirls | CodeEventStartUpWknd | CodeEventWkdBootcamps | CodeEventWomenCode | CodeEventWorkshops | CommuteTime | CountryCitizen | CountryLive | EmploymentField | EmploymentFieldOther | EmploymentStatus | EmploymentStatusOther | ExpectedEarning | FinanciallySupporting | FirstDevJob | Gender | GenderOther | HasChildren | HasDebt | HasFinancialDependents | HasHighSpdInternet | HasHomeMortgage | HasServedInMilitary | HasStudentDebt | HomeMortgageOwe | HoursLearning | ID.x | ID.y | Income | IsEthnicMinority | IsReceiveDisabilitiesBenefits | IsSoftwareDev | IsUnderEmployed | JobApplyWhen | JobInterestBackEnd | JobInterestDataEngr | JobInterestDataSci | JobInterestDevOps | JobInterestFrontEnd | JobInterestFullStack | JobInterestGameDev | JobInterestInfoSec | JobInterestMobile | JobInterestOther | JobInterestProjMngr | JobInterestQAEngr | JobInterestUX | JobPref | JobRelocateYesNo | JobRoleInterest | JobWherePref | LanguageAtHome | MaritalStatus | MoneyForLearning | MonthsProgramming | NetworkID | Part1EndTime | Part1StartTime | Part2EndTime | Part2StartTime | PodcastChangeLog | PodcastCodeNewbie | PodcastCodePen | PodcastDevTea | PodcastDotNET | PodcastGiantRobots | PodcastJSAir | PodcastJSJabber | PodcastNone | PodcastOther | PodcastProgThrowdown | PodcastRubyRogues | PodcastSEDaily | PodcastSERadio | PodcastShopTalk | PodcastTalkPython | PodcastTheWebAhead | ResourceCodecademy | ResourceCodeWars | ResourceCoursera | ResourceCSS | ResourceEdX | ResourceEgghead | ResourceFCC | ResourceHackerRank | ResourceKA | ResourceLynda | ResourceMDN | ResourceOdinProj | ResourceOther | ResourcePluralSight | ResourceSkillcrush | ResourceSO | ResourceTreehouse | ResourceUdacity | ResourceUdemy | ResourceW3S | SchoolDegree | SchoolMajor | StudentDebtOwe | YouTubeCodeCourse | YouTubeCodingTrain | YouTubeCodingTut360 | YouTubeComputerphile | YouTubeDerekBanas | YouTubeDevTips | YouTubeEngineeredTruth | YouTubeFCC | YouTubeFunFunFunction | YouTubeGoogleDev | YouTubeLearnCode | YouTubeLevelUpTuts | YouTubeMIT | YouTubeMozillaHacks | YouTubeOther | YouTubeSimplilearn | YouTubeTheNewBoston | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 27.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | more than 1 million | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15 to 29 minutes | Canada | Canada | software development and IT | NaN | Employed for wages | NaN | NaN | NaN | NaN | female | NaN | NaN | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | NaN | 15.0 | 02d9465b21e8bd09374b0066fb2d5614 | eb78c1c3ac6cd9052aec557065070fbf | NaN | NaN | 0.0 | 0.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | start your own business | NaN | NaN | NaN | English | married or domestic partnership | 150.0 | 6.0 | 6f1fbc6b2b | 2017-03-09 00:36:22 | 2017-03-09 00:32:59 | 2017-03-09 00:59:46 | 2017-03-09 00:36:26 | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | 1.0 | some college credit, no degree | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 34.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | less than 100,000 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | United States of America | United States of America | NaN | NaN | Not working but looking for work | NaN | 35000.0 | NaN | NaN | male | NaN | NaN | 1.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | NaN | 10.0 | 5bfef9ecb211ec4f518cfc1d2a6f3e0c | 21db37adb60cdcafadfa7dca1b13b6b1 | NaN | 0.0 | 0.0 | 0.0 | NaN | Within 7 to 12 months | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | work for a nonprofit | 1.0 | Full-Stack Web Developer | in an office with other developers | English | single, never married | 80.0 | 6.0 | f8f8be6910 | 2017-03-09 00:37:07 | 2017-03-09 00:33:26 | 2017-03-09 00:38:59 | 2017-03-09 00:37:10 | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | 1.0 | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | 1.0 | 1.0 | some college credit, no degree | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 | 21.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | more than 1 million | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 15 to 29 minutes | United States of America | United States of America | software development and IT | NaN | Employed for wages | NaN | 70000.0 | NaN | NaN | male | NaN | NaN | 0.0 | 0.0 | 1.0 | NaN | 0.0 | NaN | NaN | 25.0 | 14f1863afa9c7de488050b82eb3edd96 | 21ba173828fbe9e27ccebaf4d5166a55 | 13000.0 | 1.0 | 0.0 | 0.0 | 0.0 | Within 7 to 12 months | 1.0 | NaN | NaN | 1.0 | 1.0 | 1.0 | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | work for a medium-sized company | 1.0 | Front-End Web Developer, Back-End Web Develo... | no preference | Spanish | single, never married | 1000.0 | 5.0 | 2ed189768e | 2017-03-09 00:37:58 | 2017-03-09 00:33:53 | 2017-03-09 00:40:14 | 2017-03-09 00:38:02 | 1.0 | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | Codenewbie | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | 1.0 | NaN | NaN | 1.0 | NaN | NaN | 1.0 | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | 1.0 | NaN | high school diploma or equivalent (GED) | NaN | NaN | NaN | NaN | 1.0 | NaN | 1.0 | 1.0 | NaN | NaN | NaN | NaN | 1.0 | 1.0 | NaN | NaN | NaN | NaN | NaN |
3 | 26.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | between 100,000 and 1 million | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | I work from home | Brazil | Brazil | software development and IT | NaN | Employed for wages | NaN | 40000.0 | 0.0 | NaN | male | NaN | 0.0 | 1.0 | 1.0 | 1.0 | 1.0 | 0.0 | 0.0 | 40000.0 | 14.0 | 91756eb4dc280062a541c25a3d44cfb0 | 3be37b558f02daae93a6da10f83f0c77 | 24000.0 | 0.0 | 0.0 | 0.0 | 1.0 | Within the next 6 months | 1.0 | NaN | NaN | NaN | 1.0 | 1.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | work for a medium-sized company | NaN | Front-End Web Developer, Full-Stack Web Deve... | from home | Portuguese | married or domestic partnership | 0.0 | 5.0 | dbdc0664d1 | 2017-03-09 00:40:13 | 2017-03-09 00:37:45 | 2017-03-09 00:42:26 | 2017-03-09 00:40:18 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | 1.0 | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | some college credit, no degree | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | 1.0 | 1.0 | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | NaN |
4 | 20.0 | 0.0 | NaN | NaN | NaN | NaN | NaN | between 100,000 and 1 million | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Portugal | Portugal | NaN | NaN | Not working but looking for work | NaN | 140000.0 | NaN | NaN | female | NaN | NaN | 0.0 | 0.0 | 1.0 | NaN | 0.0 | NaN | NaN | 10.0 | aa3f061a1949a90b27bef7411ecd193f | d7c56bbf2c7b62096be9db010e86d96d | NaN | 0.0 | 0.0 | 0.0 | NaN | Within 7 to 12 months | 1.0 | NaN | NaN | NaN | 1.0 | 1.0 | NaN | 1.0 | 1.0 | NaN | NaN | NaN | NaN | work for a multinational corporation | 1.0 | Full-Stack Web Developer, Information Security... | in an office with other developers | Portuguese | single, never married | 0.0 | 24.0 | 11b0f2d8a9 | 2017-03-09 00:42:45 | 2017-03-09 00:39:44 | 2017-03-09 00:45:42 | 2017-03-09 00:42:50 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | NaN | NaN | NaN | NaN | bachelor's degree | Information Technology | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
survey.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 18175 entries, 0 to 18174 Columns: 136 entries, Age to YouTubeTheNewBoston dtypes: float64(105), object(31) memory usage: 18.9+ MB
# Finding typical job role interests
Interested_in=(survey["JobRoleInterest"].value_counts(normalize=True))*100
print(Interested_in)
Full-Stack Web Developer 11.770595 Front-End Web Developer 6.435927 Data Scientist 2.173913 Back-End Web Developer 2.030892 Mobile Developer 1.673341 Game Developer 1.630435 Information Security 1.315789 Full-Stack Web Developer, Front-End Web Developer 0.915332 Front-End Web Developer, Full-Stack Web Developer 0.800915 Product Manager 0.786613 Data Engineer 0.758009 User Experience Designer 0.743707 User Experience Designer, Front-End Web Developer 0.614989 Front-End Web Developer, Back-End Web Developer, Full-Stack Web Developer 0.557780 DevOps / SysAdmin 0.514874 Back-End Web Developer, Front-End Web Developer, Full-Stack Web Developer 0.514874 Back-End Web Developer, Full-Stack Web Developer, Front-End Web Developer 0.514874 Full-Stack Web Developer, Front-End Web Developer, Back-End Web Developer 0.443364 Front-End Web Developer, Full-Stack Web Developer, Back-End Web Developer 0.429062 Front-End Web Developer, User Experience Designer 0.414760 Full-Stack Web Developer, Mobile Developer 0.414760 Back-End Web Developer, Full-Stack Web Developer 0.386156 Full-Stack Web Developer, Back-End Web Developer 0.371854 Back-End Web Developer, Front-End Web Developer 0.286041 Data Engineer, Data Scientist 0.271739 Full-Stack Web Developer, Back-End Web Developer, Front-End Web Developer 0.271739 Front-End Web Developer, Mobile Developer 0.257437 Full-Stack Web Developer, Data Scientist 0.243135 Data Scientist, Data Engineer 0.228833 Mobile Developer, Game Developer 0.228833 ... Data Scientist, Full-Stack Web Developer, Product Manager, Mobile Developer 0.014302 Information Security, DevOps / SysAdmin, Back-End Web Developer, Full-Stack Web Developer, Quality Assurance Engineer, Mobile Developer, Front-End Web Developer, User Experience Designer 0.014302 Data Scientist, Front-End Web Developer, Mobile Developer 0.014302 Full-Stack Web Developer, Game Developer, Front-End Web Developer, User Experience Designer 0.014302 Data Engineer, Game Developer, Mobile Developer, Back-End Web Developer, Data Scientist, Full-Stack Web Developer 0.014302 Full-Stack Web Developer, Game Developer, Data Scientist, Mobile Developer 0.014302 Full-Stack Web Developer, Back-End Web Developer, User Experience Designer, Library Developer 0.014302 Mobile Developer, Game Developer, Front-End Web Developer, DevOps / SysAdmin 0.014302 User Experience Designer, Mobile Developer, DevOps / SysAdmin, Full-Stack Web Developer, UX developer/designer 0.014302 Product Manager, Back-End Web Developer, Information Security 0.014302 Product Manager, User Experience Designer, Mobile Developer, Marketing 0.014302 Information Security, Full-Stack Web Developer, Game Developer, Mobile Developer 0.014302 Full-Stack Web Developer, Product Manager, Back-End Web Developer, Information Security, User Experience Designer, Mobile Developer, Front-End Web Developer 0.014302 Front-End Web Developer, Product Manager, Full-Stack Web Developer, Data Scientist, Data Engineer 0.014302 Information Security, Mobile Developer, Data Engineer 0.014302 Back-End Web Developer, Mobile Developer, Information Security, DevOps / SysAdmin, Full-Stack Web Developer 0.014302 Data Scientist, Information Security, Back-End Web Developer, DevOps / SysAdmin 0.014302 Back-End Web Developer, Product Manager, Front-End Web Developer, Full-Stack Web Developer 0.014302 Data Scientist, Front-End Web Developer, Back-End Web Developer, Mobile Developer, Full-Stack Web Developer 0.014302 Data Engineer, Full-Stack Web Developer, Front-End Web Developer 0.014302 Game Developer, Data Scientist, Back-End Web Developer, Full-Stack Web Developer, Front-End Web Developer 0.014302 DevOps / SysAdmin, Data Engineer, Data Scientist, Game Developer, Full-Stack Web Developer, Mobile Developer, Front-End Web Developer, Back-End Web Developer, User Experience Designer, Information Security 0.014302 Data Scientist, Data Engineer, Back-End Web Developer, Game Developer, Information Security, Full-Stack Web Developer, AI and Machine Learning 0.014302 Data Scientist, Front-End Web Developer, Back-End Web Developer, Data Engineer 0.014302 Full-Stack Web Developer, DevOps / SysAdmin, Quality Assurance Engineer, User Experience Designer, Game Developer, Information Security, Mobile Developer, Product Manager 0.014302 Full-Stack Web Developer, Back-End Web Developer, User Experience Designer, Mobile Developer, Game Developer 0.014302 Full-Stack Web Developer, Game Developer, Mobile Developer, User Experience Designer, Front-End Web Developer 0.014302 Quality Assurance Engineer, Game Developer, Product Manager, Data Engineer 0.014302 Full-Stack Web Developer, User Experience Designer, Mobile Developer, Data Scientist, Front-End Web Developer, Back-End Web Developer 0.014302 Front-End Web Developer, Full-Stack Web Developer, Mobile Developer, Information Security 0.014302 Name: JobRoleInterest, Length: 3213, dtype: float64
As we can see above many people are interested in multiple subjects. People interested in web development have been scattered under various categories. Let us see total number of people interested in web or mobile development.
# Searching for words "Web" or "Mobile" in the Job Role Interest column.
pattern=r"Web|Mobile"
job_interest=(survey["JobRoleInterest"].str.contains(pattern).value_counts(normalize=True))*100
#Plotting percentage of people interested in web or mobile development
import matplotlib.pyplot as plt
%matplotlib inline
job_interest.plot.bar(width=0.25,figsize=(7,4))
plt.title(" Percentage of population interested in web or mobile development",y=1.05,fontsize=12)
plt.ylabel("percentage")
plt.ylim(0,100)
plt.xticks((0,1),("Web or Mobile dev","Others"),rotation=0)
([<matplotlib.axis.XTick at 0x7f094cb44b00>, <matplotlib.axis.XTick at 0x7f094cb65cf8>], <a list of 2 Text xticklabel objects>)
# We will ignore people who have not responded to the above question from our dataset.
survey_clean=survey[survey["JobRoleInterest"].notnull()]
# Finding top 5 countries which have maximum number of potential customers
ab_table=survey_clean["CountryLive"].value_counts(ascending=False)
ab_table
rel_table=(survey_clean["CountryLive"].value_counts(normalize=True,ascending=False))*100
top_5=ab_table[:5]
ax2=top_5.plot.bar(width=0.25,rot=0,figsize=(7,3))
ax2.set_ylabel("Number of customers")
ax2.set_title("Top markets based on absolute number of customers")
plt.show()
ax1=rel_table[:5].plot.bar(width=0.25,rot=0,figsize=(7,3))
ax1.set_ylabel("percentage of customers")
ax1.set_title("Top markets based on % of customers")
plt.show()
Top two countries are USA and India. Since there are lot of free sources for learning it is not necessary that learners would be willing to spend money on a course work. Therefore, we must also consider how much money are the customers ready to spend.
# Creating a column giving information about amount spent per month in top 5 countris.
def new_column(row):
if row["MonthsProgramming"]==0:
return row["MoneyForLearning"]
else:
return row["MoneyForLearning"]/row["MonthsProgramming"]
top_5_list=list(top_5.index)
top_5_list
bool_a=survey_clean["CountryLive"].isin(top_5_list)
top_5=survey_clean[bool_a].copy()
top_5
top_5["spent/month"]=top_5.apply(new_column,axis=1)
top_5.dropna(axis=0,subset=["CountryLive","spent/month"],inplace=True)
grouped=top_5.groupby("CountryLive")
mean_data=grouped["spent/month"].agg("mean")
mean_data
CountryLive Canada 113.510961 India 135.100982 Poland 75.678935 United Kingdom 45.534443 United States of America 227.997996 Name: spent/month, dtype: float64
top_5.boxplot(column="spent/month", by="CountryLive",return_type="axes",figsize=(15,5))
plt.ylim(0,10000)
(0, 10000)
There are many outliers in all the given sets.Canada has one student spending 5000 dollars and India has three students spending in 3000-5000 dollars range. These may have affected the mean value.
# Delete outliers (spending more than 6000 dollars/month) from USA
top_5_c = top_5.drop(top_5[(top_5["CountryLive"] == "United States of America") & (top_5["spent/month"] > 6000)].index)
# Delete outliers (spending more than 3000 dollars/month) from India and Canada.
top_5_clean = top_5_c.drop(top_5_c[(top_5_c["CountryLive"] == "India") & (top_5_c["spent/month"] > 3000)].index)
top_5_clear = top_5_clean.drop(top_5_clean[(top_5_clean["CountryLive"] == "Canada") & (top_5_clean["spent/month"] > 3000)].index)
print("top 1% spenders spend ")
print(top_5_clear.groupby("CountryLive")["spent/month"].quantile(0.99))
print("Number of students are ")
print( top_5_clear.groupby("CountryLive").agg("count")["Age"])
top 1% spenders spend CountryLive Canada 1655.000000 India 1110.000000 Poland 1131.666667 United Kingdom 1044.000000 United States of America 2666.666667 Name: spent/month, dtype: float64 Number of students are CountryLive Canada 238 India 452 Poland 122 United Kingdom 277 United States of America 2888 Name: Age, dtype: int64
top_5_clear.boxplot(column="spent/month", by="CountryLive",return_type="axes",figsize=(15,5))
plt.ylim(0,4000)
(0, 4000)
print( top_5_clear.groupby("CountryLive").agg("mean")["spent/month"])
CountryLive Canada 93.065400 India 65.758763 Poland 75.678935 United Kingdom 45.534443 United States of America 142.654608 Name: spent/month, dtype: float64
The first market for advertisement is clearly the USA. The second market could be either Canada or India. Let's compare the bar graphs of the two countries. The area below the graph would indicate the financial prospects or how large the market is. The distribution would give an idea of spending patterns of this market.
top_India=top_5_clear[top_5_clear["CountryLive"]=="India"]
top_Canada=top_5_clear[top_5_clear["CountryLive"]=="Canada"]
fig,axes =plt.subplots(figsize=(15,12))
ax1=fig.add_subplot(2,1,1)
ax1.set_title("India",fontsize=15)
ax1=top_India["spent/month"].plot.hist(bins=700)
values=[i+1000 for i in range (0,4)]
ax1.set_xlim(0,400)
ax1.set_ylim(0,300)
ax1.set_xticks([0,100,200,300,400])
ax1.tick_params(axis='both', which='major', labelsize=15)
ax1.set_ylabel("Number of students",fontsize=15)
#ax1.set_xlabel("Amount spent per month",fontsize=15)
ax2=fig.add_subplot(2,1,2)
ax2=top_Canada["spent/month"].plot.hist(bins=700)
ax2.set_title("Canada",fontsize=15)
ax2.set_xlim(0,400)
ax2.set_ylim(0,300)
ax2.set_xticks([0,100,200,300,400])
ax2.tick_params(axis='both', which='major', labelsize=15)
ax2.set_ylabel("Number of students",fontsize=15)
ax2.set_xlabel("Amount spent per month",fontsize=15)
<matplotlib.text.Text at 0x7f0949a96278>
Spending patterns is more or less the same. The number of students spending lower amounts is maximum in both countries. However, area below the Indian market curve seems to be larger. Therefore, this is slightly larger than it's Canadian counterpart. I would suggest to choose India as the second market.