Before throwing rows away, it's worth knowing how many you'd keep.
Write rows_kept(replies, needed). replies is a list of dictionaries (one per row, with None for a blank box). needed is a list of the column names your analysis actually uses.
Return a dictionary with two whole numbers:
"drop_any": how many rows are left if you drop every row with a blank anywhere"drop_needed": how many rows are left if you only drop rows with a blank in one of the needed columnsreplies always has at least one row, and needed always names at least one column.