For data sets of any (relational) complexity I have generally been in the habit of using a full-featured database engine (usu., Postgres) to develop a highly normalized schema, and impose lots of integrity constraints.
But for an exploratory analysis I’m undertaking now, I’ve found GNU recutils — plus Emacs rec-mode — to be really right-sized. I think the issue is that I need to explore the available data and their relationships freely and organically, on my way toward a focused data set for analysis. So I’m finding something in recutils akin to the freedom often sought in scripting languages, from the rigorous plodding involved in working with strongly typed programming languages. Indeed, just as scripting languages may optionally allow type-checking, recutils does have fairly rich facilities for imposing constraints on record sets; a single keypress in Emacs rec-mode lets you run an integrity check after editing.
One additional benefit of recutils text-file-basedness, as noted here, is that the record sets can be version controlled.
What software do you all use for work of this kind?