¿Qué es una buena heurística para detectar si una columna en un pandas.DataFrame es categórica?

He estado desarrollando una herramienta que preprocesa automáticamente los datos en formato pandas.DataFrame. Durante este paso de preprocesamiento, quiero tratar los datos continuos y categóricos de manera diferente. En particular, quiero poder aplicar, por ejemplo, un OneHotEncoder parasolamente Los datos categóricos.

Ahora, supongamos que se nos proporciona un pandas.DataFrame y no tenemos otra información sobre los datos en el DataFrame. ¿Cuál es una buena heurística para determinar si una columna en los pandas.DataFrame es categórica?

Mis pensamientos iniciales son:

1) Si hay cadenas en la columna (por ejemplo, el tipo de datos de la columna esobject), es muy probable que la columna contenga datos categóricos

2) Si algún porcentaje de los valores en la columna es único (por ejemplo,> = 20%), entonces la columna probablemente contenga datos continuos

He encontrado1) para trabajar bien, pero2) no ha funcionado muy bien. Necesito mejores heurísticas. Como resolverías este problema?

Editar: Alguien me pidió que explicara por qué2) No funcionó bien. Hubo algunos casos de prueba en los que todavía teníamos valores continuos en una columna, pero no había muchos valores únicos en la columna. La heurística en2) obviamente fracasó en ese caso. También hubo problemas en los que teníamos una columna categórica que tenía muchos, muchos valores únicos, por ejemplo, nombres de pasajeros en el conjunto de datos del Titanic. El mismo problema de clasificación errónea del tipo de columna allí.

Respuestas a la pregunta(5)

Su respuesta a la pregunta