This sounds like you've chosen an inappropriate key to hash on.
Generally hash partitions will be evenly populated because the hash key will have many distinct values.
eg (in this case, 8 hash values for 100,000 distinct rows)
SQL> select ora_hash(rownum,7), count(*)
2 from dual
3 connect by level <= 100000
4 group by ora_hash(rownum,7)
5 order by 1;
ORA_HASH(ROWNUM,7) COUNT(*)
------------------ ----------
0 12603
1 12575
2 12581
3 12508
4 12342
5 12381
6 12628
7 12382
But if the hash key source is not like that, eg, not many distinct values, then you could have skew, eg
SQL> select ora_hash(mod(rownum,6),7), count(*)
2 from dual
3 connect by level <= 100000
4 group by ora_hash(mod(rownum,6),7)
5 order by 1;
ORA_HASH(MOD(ROWNUM,6),7) COUNT(*)
------------------------- ----------
2 16666
3 33334
5 16666
6 16667
7 16667