Software engineers do computer programming and are expected to know a lot about a programming language (stereotypically Ruby) and are not expected to know any math or statistics.
Data scientists are expected to both know how to program (typically Python or R) and to know a lot of statistics (and some math), but generally are not expected to know how to program nearly as well as software engineers.
Data engineers (my profession) are in the middle ground and are expected to know how to program just as well as a software engineer, just in a data-relevant language (typically Python or R). Data engineers are also expected to know some stats (much more than a software engineer) but not nearly as much stats as a data scientist.
Software engineers do computer programming and are expected to know a lot about a programming language (stereotypically Ruby) and are not expected to know any math or statistics.
Data scientists are expected to both know how to program (typically Python or R) and to know a lot of statistics (and some math), but generally are not expected to know how to program nearly as well as software engineers.
Data engineers (my profession) are in the middle ground and are expected to know how to program just as well as a software engineer, just in a data-relevant language (typically Python or R). Data engineers are also expected to know some stats (much more than a software engineer) but not nearly as much stats as a data scientist.