What is the difference between single and double colon in this situation?
data[0:,4] vs data[0::,4]
women_only_stats = data[0::,4]
No, there is no difference.
See the Python documentation for slice:
From the docs: a[start:stop:step]
The start and step arguments default to None. Slice objects have read-only data attributes start, stop and step which merely return the argument values (or their default).
In this case, you are including an empty step parameter.
>>> a = [1,2,3,4]
>>> a[2:]
[3,4]
>>> a[2::]
[3,4]
>>> a[2:] == a[2::]
True
And to understand what the step parameter actually does:
>>> b = [1,2,3,4,5,6,7,8,9,10]
>>> b[0::5]
[1, 6]
>>> b[1::5]
[2, 7]
So by leaving it to be implicitly None (i.e., by either a[2:] or a[2::]), you are not going to change the output of your code in any way.
Hope this helps.