I am only interested in promotions where the promotion piece is not taken on the next move. It should be easy to filter out these automatically.
Many engines pick the promotion piece randomly, if they see they are going to lose it anyway. I guess you see a predominance of Rook underpromotions because in many cases promoting to a minor pieces might be worse, because the opponent is better of not taking it. E.g. the very common situation of promotion in a Rook ending. The opponent will have to give its Rook for the new Queen. If you promote to Rook, he will still do that, or have the (score-wise equivalent) option of leaving both Rooks on the board. (Of course it is still stupid to give him the extra option, but minimax will not realize that.) But after promotion to Bishop or Knight, he will not sac the exchange, and will be off much better. So the engine will then exclude those.
Of course you wil still be left with the cases where the promoted piece was doomed through a longer tactic. These are the cases that make uMax resign if the opponent promotes to Knight.

The mostly occur when, after promotion, the opponent has a skewer on King + promotion piece. It happens reasonably often that uMax is already a Queen ahead (obtained through promotion), busy gobbling up the opponent's remaining Pawns, and giving that priority over stopping a promotion doomed because of a skewer. The opponent than very often chooses a Knight, and after the uMax search then plays the skewer, the interface resigns for it. (Because the skewer might be illegal, as the Knight, which uMax sees as a Queen, might be delivering check.)
So it might still be worth filtering the cases where the (under-)promotion piece survived to the next move further. But my guess is that there will be so few of those (if any at all) that it can be easily done by hand.