Created
July 25, 2023 09:28
-
-
Save kururu-abdo/a5047f359fa7ef7490f56e031a917cd1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| df_can.sort_values(['Total'], ascending=False, axis=0, inplace=True) | |
| # get the top 5 entries | |
| df_top5 = df_can.head() | |
| # transpose the dataframe | |
| df_top5 = df_top5[years].transpose() | |
| df_top5.head() | |
| df_top5.index = df_top5.index.map(int) | |
| df_top5.plot(kind='area', | |
| stacked=False, | |
| figsize=(20, 10)) # pass a tuple (x, y) size | |
| plt.title('Immigration Trend of Top 5 Countries') | |
| plt.ylabel('Number of Immigrants') | |
| plt.xlabel('Years') | |
| plt.show() | |
| # Artist Layer | |
| df_least5 = df_can.tail(5) | |
| # transpose the dataframe | |
| df_least5 = df_least5[years].transpose() | |
| df_least5.head() | |
| df_least5.index = df_least5.index.map(int) # let's change the index values of df_least5 to type integer for plotting | |
| ax=df_least5.plot(kind='area', alpha=0.45, figsize=(20, 10)) | |
| ax.set_title('Immigration Trend of 5 Countries with Least Contribution to Immigration') | |
| ax.set_ylabel('Number of Immigrants') | |
| ax.set_xlabel('Years' | |
| # 'bin_edges' is a list of bin intervals | |
| count, bin_edges = np.histogram(df_can['2013']) | |
| df_can['2013'].plot(kind='hist', figsize=(8, 5), xticks=bin_edges) | |
| plt.title('Histogram of Immigration from 195 countries in 2013') # add a title to the histogram | |
| plt.ylabel('Number of Countries') # add y-label | |
| plt.xlabel('Number of Immigrants') # add x-label | |
| plt.show() | |
| df_iceland.plot(kind='bar', figsize=(10, 6), rot=90) # rotate the xticks(labelled points on x-axis) by 90 degrees | |
| plt.xlabel('Year') | |
| plt.ylabel('Number of Immigrants') | |
| plt.title('Icelandic Immigrants to Canada from 1980 to 2013') | |
| # Annotate arrow | |
| plt.annotate('', # s: str. Will leave it blank for no text | |
| xy=(32, 70), # place head of the arrow at point (year 2012 , pop 70) | |
| xytext=(28, 20), # place base of the arrow at point (year 2008 , pop 20) | |
| xycoords='data', # will use the coordinate system of the object being annotated | |
| arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='blue', lw=2) | |
| ) | |
| plt.show() | |
| df_iceland.plot(kind='bar', figsize=(10, 6), rot=90) | |
| plt.xlabel('Year') | |
| plt.ylabel('Number of Immigrants') | |
| plt.title('Icelandic Immigrants to Canada from 1980 to 2013') | |
| # Annotate arrow | |
| plt.annotate('', # s: str. will leave it blank for no text | |
| xy=(32, 70), # place head of the arrow at point (year 2012 , pop 70) | |
| xytext=(28, 20), # place base of the arrow at point (year 2008 , pop 20) | |
| xycoords='data', # will use the coordinate system of the object being annotated | |
| arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='blue', lw=2) | |
| ) | |
| # Annotate Text | |
| plt.annotate('2008 - 2011 Financial Crisis', # text to display | |
| xy=(28, 30), # start the text at at point (year 2008 , pop 30) | |
| rotation=72.5, # based on trial and error to match the arrow | |
| va='bottom', # want the text to be vertically 'bottom' aligned | |
| ha='left', # want the text to be horizontally 'left' algned. | |
| ) | |
| plt.show() | |
| df_top15.plot(kind='barh', figsize=(12, 12), color='steelblue') | |
| plt.xlabel('Number of Immigrants') | |
| plt.title('Top 15 Conuntries Contributing to the Immigration to Canada between 1980 - 2013') | |
| # annotate value labels to each country | |
| for index, value in enumerate(df_top15): | |
| label = format(int(value), ',') # format int with commas | |
| # place text at the end of bar (subtracting 47000 from x, and 0.1 from y to make it fit within the bar) | |
| plt.annotate(label, xy=(value - 47000, index - 0.10), color='white') | |
| plt.show() | |
| colors_list = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue', 'lightgreen', 'pink'] | |
| explode_list = [0.1, 0, 0, 0, 0.1, 0.1] # ratio for each continent with which to offset each wedge. | |
| df_continents['Total'].plot(kind='pie', | |
| figsize=(10, 6), | |
| autopct='%1.1f%%', | |
| startangle=90, | |
| shadow=True, | |
| labels=None, # turn off labels on pie chart | |
| pctdistance=1.12, # the ratio between the center of each pie slice and the start of the text generated by autopct | |
| #colors=colors_list, # add custom colors | |
| #explode=explode_list # 'explode' lowest 3 continents | |
| ) | |
| # scale the title up by 12% to match pctdistance | |
| plt.title('Immigration to Canada by Continent [1980 - 2013]', y=1.12, fontsize = 15) | |
| plt.axis('equal') | |
| # add legend | |
| plt.legend(labels=df_continents.index, loc='upper left', fontsize=7) | |
| plt.show() | |
| df_japan.plot(kind='box', figsize=(8, 6)) | |
| plt.title('Box plot of Japanese Immigrants from 1980 - 2013') | |
| plt.ylabel('Number of Immigrants') | |
| plt.show() | |
| #sub plots | |
| fig = plt.figure() # create figure | |
| ax0 = fig.add_subplot(1, 2, 1) # add subplot 1 (1 row, 2 columns, first plot) | |
| ax1 = fig.add_subplot(1, 2, 2) # add subplot 2 (1 row, 2 columns, second plot). See tip below** | |
| # Subplot 1: Box plot | |
| df_china.plot(kind='box', color='blue', vert=False, figsize=(20, 6), ax=ax0) # add to subplot 1 | |
| ax0.set_title('Box Plots of Immigrants from China and India (1980 - 2013)') | |
| ax0.set_xlabel('Number of Immigrants') | |
| ax0.set_ylabel('Countries') | |
| # Subplot 2: Line plot | |
| df_china.plot(kind='line', figsize=(20, 6), ax=ax1) # add to subplot 2 | |
| ax1.set_title ('Line Plots of Immigrants from China and India (1980 - 2013)') | |
| ax1.set_ylabel('Number of Immigrants') | |
| ax1.set_xlabel('Years') | |
| plt.show() | |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
#bubble