From d864a2ea6a9b5ad6fce7534297a0f529770015ae Mon Sep 17 00:00:00 2001 From: scottan <33283688+Scottan@users.noreply.github.com> Date: Fri, 14 Nov 2025 10:55:44 +0000 Subject: [PATCH 1/3] Move column rename to earlier in the lesson --- episodes/07-pandas_essential.md | 70 ++++++++++++++++----------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/episodes/07-pandas_essential.md b/episodes/07-pandas_essential.md index a80167c5..a574205a 100644 --- a/episodes/07-pandas_essential.md +++ b/episodes/07-pandas_essential.md @@ -155,6 +155,40 @@ Albania 1601.056136 2760.196931 3630.880722 3193.054604 Belgium 8343.105127 13149.041190 20979.845890 27561.196630 ``` +::::::::::::::::::::::::::::::::::::::: challenge + +## Changing Column Labels + +Note that the x-tick labels have been taken directly from the index values of the transposed DataFrame (which were the original column labels). These don't really need to be more than the year of the GDP values, so we could change the column labels to reflect this. + +First we make a new copy of the DataFrame (in case anything goes wrong): + +```python +gdpPercap = data.copy(deep=True) +``` + +We have given this new dataframe a more appropriate name, replacing the information that will be removed from the column headers. + +Now we will use the inbuilt `str.strip` method to clean up our column labels for the new +dataframe. Which of these commands is correct: + +1. `gdpPercap.columns = data.columns.str.strip('gdpPercap_')` +2. `gdpPercap = data.columns.str.strip('gdpPercap_')` + +::::::::::::::: solution + +## Solution + +The correct answer is 1. We have to pass the new column labels explicitly back to the +array columns, otherwise all we do is replace the data array with a list of the new +column labels. + + +::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::::::::::::: + + ## Masking data Pandas data arrays are based on numpy arrays, and retain some of the numpy tools, such as masked arrays. This enables us to apply selection criteria to the datasets, so that only the values that we require are shown. For example, the following selects all data where the GDP is above $10,000: @@ -247,43 +281,9 @@ fig.savefig('albania-austria-belgium_GDP.png', bbox_inches='tight') ::::::::::::::::::::::::::::::::::::::: challenge -## Changing Column Labels - -Note that the x-tick labels have been taken directly from the index values of the transposed DataFrame (which were the original column labels). These don't really need to be more than the year of the GDP values, so we could change the column labels to reflect this. - -First we make a new copy of the dataframe (in case anything goes wrong): - -```python -gdpPercap = data.copy(deep=True) -``` - -We have given this new dataframe a more appropriate name, replacing the information that will be removed from the column headers. - -Now we will use the inbuilt `str.strip` method to clean up our column labels for the new -dataframe. Which of these commands is correct: - -1. `gdpPercap.columns = data.columns.str.strip('gdpPercap_')` -2. `gdpPercap = data.columns.str.strip('gdpPercap_')` - -::::::::::::::: solution - -## Solution - -The correct answer is 1. We have to pass the new column labels explicitly back to the -array columns, otherwise all we do is replace the data array with a list of the new -column labels. - - - -::::::::::::::::::::::::: - -:::::::::::::::::::::::::::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::: challenge - ## Plotting GDP increases with time -Now that we've cleaned up the column labels, we now want to plot the GDP data for +We now want to plot the GDP data for Sweden and Iceland from 1972 onwards. The code block we will be using is: ```python From c58d79246658e335dbacc0608a89e29939fe736b Mon Sep 17 00:00:00 2001 From: Andrew Gait Date: Fri, 13 Nov 2026 13:31:43 +0000 Subject: [PATCH 2/3] Update end of pandas chapter and figures to deal with move of column label edit --- episodes/06-pandas_essential.md | 66 ++++++++---------- .../fig/albania_austria_belgium_bar_chart.png | Bin 16939 -> 20004 bytes episodes/fig/sweden-pandas-fig1.png | Bin 14151 -> 18830 bytes 3 files changed, 30 insertions(+), 36 deletions(-) diff --git a/episodes/06-pandas_essential.md b/episodes/06-pandas_essential.md index 497837bd..d6886ab6 100644 --- a/episodes/06-pandas_essential.md +++ b/episodes/06-pandas_essential.md @@ -170,7 +170,7 @@ Note that the x-tick labels have been taken directly from the index values of th First we make a new copy of the DataFrame (in case anything goes wrong): ```python -gdpPercap = data.copy(deep=True) +df_gdpPercap = df.copy(deep=True) ``` We have given this new dataframe a more appropriate name, replacing the information that will be removed from the column headers. @@ -178,8 +178,8 @@ We have given this new dataframe a more appropriate name, replacing the informat Now we will use the inbuilt `str.strip` method to clean up our column labels for the new dataframe. Which of these commands is correct: -1. `gdpPercap.columns = data.columns.str.strip('gdpPercap_')` -2. `gdpPercap = data.columns.str.strip('gdpPercap_')` +1. `df_gdpPercap.columns = df.columns.str.strip('gdpPercap_')` +2. `df_gdpPercap = df.columns.str.strip('gdpPercap_')` ::::::::::::::: solution @@ -200,18 +200,18 @@ column labels. Pandas Dataframes are based on numpy arrays, and retain some of the numpy tools, such as masked arrays. This enables us to apply selection criteria to the Dataframes, so that only the values that we require are shown. For example, the following selects all data where the GDP is above $10,000: ```python -subset = df.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972'] +subset = df_gdpPercap.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972'] print(subset[subset>10000]) ``` ```output - gdpPercap_1962 gdpPercap_1967 gdpPercap_1972 -country -Italy NaN 10022.40131 12269.27378 -Montenegro NaN NaN NaN -Netherlands 12790.84956 15363.25136 18794.74567 -Norway 13450.40151 16361.87647 18965.05551 -Poland NaN NaN NaN + 1962 1967 1972 +country +Italy NaN 10022.40131 12269.27378 +Montenegro NaN NaN NaN +Netherlands 12790.84956 15363.25136 18794.74567 +Norway 13450.40151 16361.87647 18965.05551 +Poland NaN NaN NaN ``` ## Plotting from Pandas @@ -219,44 +219,40 @@ Poland NaN NaN NaN Pandas is integrated with matplotlib, and so data can be plotted directly using the integrated `plot` method. For example, to plot the GDP for Sweden: ```python -df.loc['Sweden',:].plot() -plt.xticks(rotation=90) +df_gdpPercap.loc['Sweden',:].plot() ``` -![](fig/sweden-pandas-fig1.png){alt="Line plot of increase in Sweden's GDP from 1952 to 2002, with no axis labels, and awkward x-axis tick labels."} - -Note that we've had to rotate the xtick labels by 90 degrees, because they do not fit neatly under the x-axis. Later we will clean these up properly. +![](fig/sweden-pandas-fig1.png){alt="Line plot of increase in Sweden's GDP from 1952 to 2002, with no axis labels."} Note that, in the case above, we passed a single column of data to the `plot` method - which it automatically transposed in order to make sense of the plot request (because this method usually works on rows of data). If you want to plot more than one column of data you will need to explicitly transpose the DataFrame yourself. For example, we will transpose the GDP data for the first 3 countries in our dataset: ```python -print(df.iloc[0:3,:].T) +print(df_gdpPercap.iloc[0:3,:].T) ``` ```output -country Albania Austria Belgium -gdpPercap_1952 1601.056136 6137.076492 8343.105127 -gdpPercap_1957 1942.284244 8842.598030 9714.960623 -gdpPercap_1962 2312.888958 10750.721110 10991.206760 -gdpPercap_1967 2760.196931 12834.602400 13149.041190 -gdpPercap_1972 3313.422188 16661.625600 16672.143560 -gdpPercap_1977 3533.003910 19749.422300 19117.974480 -gdpPercap_1982 3630.880722 21597.083620 20979.845890 -gdpPercap_1987 3738.932735 23687.826070 22525.563080 -gdpPercap_1992 2497.437901 27042.018680 25575.570690 -gdpPercap_1997 3193.054604 29095.920660 27561.196630 -gdpPercap_2002 4604.211737 32417.607690 30485.883750 -gdpPercap_2007 5937.029526 36126.492700 33692.605080 +country Albania Austria Belgium +1952 1601.056136 6137.076492 8343.105127 +1957 1942.284244 8842.598030 9714.960623 +1962 2312.888958 10750.721110 10991.206760 +1967 2760.196931 12834.602400 13149.041190 +1972 3313.422188 16661.625600 16672.143560 +1977 3533.003910 19749.422300 19117.974480 +1982 3630.880722 21597.083620 20979.845890 +1987 3738.932735 23687.826070 22525.563080 +1992 2497.437901 27042.018680 25575.570690 +1997 3193.054604 29095.920660 27561.196630 +2002 4604.211737 32417.607690 30485.883750 +2007 5937.029526 36126.492700 33692.605080 ``` This data is now ready to be plotted as a histogram - first we set the style of the plot to match that of the ggplot package in R: ```python plt.style.use('ggplot') -df.iloc[0:3,:].T.plot(kind='bar') -plt.xticks(rotation=90) +df_gdpPercap.iloc[0:3,:].T.plot(kind='bar') plt.ylabel('GDP per capita') ``` @@ -278,8 +274,7 @@ axis (`axs`) objects. Pass the axis object to pandas when plotting your figure ```python fig, axs = plt.subplots() -df.loc['Albania':'Belgium',:].T.plot(kind='bar',ax=axs) -plt.xticks(rotation=90) +df_gdpPercap.loc['Albania':'Belgium',:].T.plot(kind='bar',ax=axs) plt.ylabel('GDP per capita') fig.savefig('albania-austria-belgium_GDP.png', bbox_inches='tight') ``` @@ -290,8 +285,7 @@ fig.savefig('albania-austria-belgium_GDP.png', bbox_inches='tight') ## Plotting GDP increases with time -We now want to plot the GDP data for -Sweden and Iceland from 1972 onwards. The code block we will be using is: +We now want to plot the GDP data for Sweden and Iceland from 1972 onwards. The code block we will be using is: ```python df_gdpPercap.T.plot(kind='line') diff --git a/episodes/fig/albania_austria_belgium_bar_chart.png b/episodes/fig/albania_austria_belgium_bar_chart.png index c508209d438282e9f425f83c5d80f0fdc69681fa..e8af2d4d72d601ca2b72598bde27b4d1887135bb 100644 GIT binary patch literal 20004 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 literal 16939 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�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 TKYQUzZwLudX^|Y1&h!5TWoo5g From b55540671e910b57a39868ba6ab14c5d70b08a78 Mon Sep 17 00:00:00 2001 From: Andrew Gait Date: Fri, 13 Nov 2026 14:43:43 +0000 Subject: [PATCH 3/3] Use correct changed column labels --- episodes/06-pandas_essential.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/episodes/06-pandas_essential.md b/episodes/06-pandas_essential.md index d6886ab6..28816191 100644 --- a/episodes/06-pandas_essential.md +++ b/episodes/06-pandas_essential.md @@ -200,7 +200,7 @@ column labels. Pandas Dataframes are based on numpy arrays, and retain some of the numpy tools, such as masked arrays. This enables us to apply selection criteria to the Dataframes, so that only the values that we require are shown. For example, the following selects all data where the GDP is above $10,000: ```python -subset = df_gdpPercap.loc['Italy':'Poland', 'gdpPercap_1962':'gdpPercap_1972'] +subset = df_gdpPercap.loc['Italy':'Poland', '1962':'1972'] print(subset[subset>10000]) ```