import pandas as pd
import seaborn as sns
invoices = pd.DataFrame({'FinYear': [2015, 2015, 2014], 'Amount': [10, 10, 15]})
invYr = invoices.groupby(['FinYear']).sum()[['Amount']]
>>> invYr
Amount
FinYear
2014 15
2015 20
The reason that you are getting the error is that when you created invYr by grouping invoices, the FinYear column becomes the index and is no longer a column. There are a few solutions:
1) One solution is to specify the source data directly. You need to specify the correct datasource for the chart. If you do not specify a data parameter, Seaborn does not know which dataframe/series has the columns 'FinYear' or 'Amount' as these are just text values. You must specify, for example, y=invYr.Amount to specify both the dataframe/series and the column you'd like to graph. The trick here is directly accessing the index of the dataframe.
sns.barplot(x=invYr.index, y=invYr.Amount)
2) Alternatively, you can specify the data source and then directly refer to its columns. Note that the grouped data frame had its index reset so that the column again becomes available.
sns.barplot(x='FinYear', y='Amount', data=invYr.reset_index())
3) A third solution is to specify as_index=False when you perform the groupby, making the column available in the grouped dataframe.
invYr = invoices.groupby('FinYear', as_index=False).Amount.sum()
sns.barplot(x='FinYear', y='Amount', data=invYr)
All solutions above produce the same plot below.

data=invYr.reset_index()to push the index back into a column.DataFramehas no index now and looks good, like a CSV that has just been imported but unfortunately the same error massage remains.invYr.reset_index(). It's not an in-place operation, so it might print to the REPL and look like it "worked" but that's not what you're passing tobarplot.