Can someone explain how these 3 methods of slicing are different? I've seen the docs (http://pandas.pydata.org/pandas-docs/stable/indexing.html), and I've seen these answers (pandas loc vs. iloc vs. at vs. iat?, Is .ix() always better than .loc() and .iloc() since it is faster and supports integer and label access?) but I still find myself unable to explain how the three are different. To me they seem interchangeable in large part because they are at the lower levels of slicing.
For example, say we want to get the first 5 rows of a dataframe. How is it that all three of these work?
df.loc[:5]
df.ix[:5]
df.iloc[:5]
Can someone present three cases where the distinction in uses are clearer?