grep uses regular expressions by default, and “1.0” is a regular expression matching “1” followed by any character followed by “0”. In your example, the line
1EU1 0.8915343915343915
would produce a match for “1 0”.
To accurately count “1.0” occurrences, you should ask grep to search for fixed strings:
grep -Fo 1.0 data_file.txt | wc -l
or “escape” the period so it matches a period:
grep -o '1\.0' data_file.txt | wc -l
If you want to only count 1.0 as values, and not substrings (e.g. in “11.002”), you should ask grep to only match words:
grep -wo '1\.0' data_file.txt | wc -l
You don’t need to involve wc either, since you’re only interested in one match per line, and grep can count lines:
grep -cw '1\.0' data_file.txt
This will still match “-1.0”, since “-” is a non-word character; if that’s a problem, you can extend the pattern and stop looking for words:
grep -c ' 1\.0$' data_file.txt
or use a tool such as AWK to match the numerical value:
awk '$2+0 == 1 { c++ } END { print c }' data_file.txt
(adding 0 forces $2 to be interpreted as a number).