This should do it
df['value_grp'] = (df.Values.diff(1) != 0).astype('int').cumsum()
value_grp will increment by one whenever Value changes. Below, you can extract the group results
pd.DataFrame({'BeginDate' : df.groupby('value_grp').Date.first(),
'EndDate' : df.groupby('value_grp').Date.last(),
'Consecutive' : df.groupby('value_grp').size(),
'No' : df.groupby('value_grp').No.first()}).reset_index(drop=True)