If by "data" directory you mean internal storage, then it doesnt have anything to do much really with system apps. System apps use space from
/system partition which you cannot use for storing normal data anyway. And whatever used/free space in this partition has nothing to do with your space in data partition (or space you can use, in other words).
/data/media/0 is whats used for storing personal files or as internal memory.
Now how to find out whats taking space. First, run the command
adb shell df inside adb. This will list you the total space allotted to every partition. Out of this, you can use the space allotted to
/data (names may change according to android version). Check there the amount of space allocated to data directory. Unless you repartition, you cannot gain any more space than this for storing personal files and downloading apps.
And can we delete files in dalvik cache?
Dont do it. Its useless. Dalvic cache has to be present for sure. Even if you delete it, it will be recreated with almost same size. So deleting this wont gain you much storage.
This leaves you with only two things that can use data, your apps and their cache, and your own data inside internal memory.
What can you try to free up space?
Most mainstream method, delete useless apps.
Try clearing cache (although it will be recreated, but sometimes there is cache of things that no longer exist or are needed, for instance deleted photos or play store cache or even themer apps cache).
Do not use any cleaner apps. They are hoax.
Remove useless files.
You can also try moving apps to external storage using apps like link2sd. But this may not work for Every app.
Hope this helps.