Python: ¿Cuántos encuestados indicaron que trabajan únicamente en MySQL?

CorePress2024-01-24  8

Tengo un marco de datos que se tomó de una encuesta. Tengo dos columnas: el número de identificación del encuestado y la base de datos con la que trabajó.

    Respondent  DatabaseWorkedWith
0   4   MySQL
1   4   SQLite
2   9   DynamoDB
3   9   PostgreSQL
4   9   SQLite
... ... ...
31370   25137   MySQL
31371   25138   PostgreSQL
31372   25141   Microsoft SQL Server
31373   25141   Redis
31374   25142   PostgreSQL

31375 rows × 2 columns

La pregunta está en el título. Me gustaría contar el número de encuestados que solo tienen MySQL en la segunda columna. No estoy seguro de si debo usar un método único, grupal u otro.

¡Gracias!

Cuando dice "sólo", ¿quiere decir que las filas con el mismo número de encuestado corresponden al mismo encuestado? Entonces desea encontrar filas que tengan MySQL, de modo que haya¿No hay tampoco otras filas con el mismo demandado? Sí, parece que quieres considerar las filas en grupos según el encuestado, que es lo que hace groupby. ¿Qué pasó cuando intentaste usar .groupby y miraste el resultado? ¿Pareció algo que te acercó a una solución?

- Karl Knechtel

26/03/2021 a las 23:55

¡Hola @KarlKnechtel! ¡Sí, estás en lo correcto! Quiero recuperar la cantidad de encuestados que solo tienen MySQL, lo que significa que el encuestado número 1 no tendrá una fila con MySQL y una fila con MongoDB. Usando groupby y contando puedon ver el número de idiomas de cada encuestado.

-pedrolorandi

27 de marzo de 2021 a las 0:01

Está bien. Para los encuestados que le interesan, los que solo usaron MySQL, ¿cuántos idiomas usaron? ¿Sabes cómo filtrar el resultado de groupby para obtener esos encuestados? Luego puedes filtrarlos nuevamente según quién respondió realmente con MySQL, ¿no? Otra cosa que podrías intentar hacer es combinar todos los nombres de las bases de datos que usaron y buscar combinaciones que solo contengan MySQL.

- Karl Knechtel

27 de marzo de 2021 a las 0:06

Quizás también quieras consultar la documentación.

- Karl Knechtel

27 de marzo de 2021 a las 0:07



------------------------------------

Se me ocurrió una solución que tal vez no sea la más práctica, pero funcionó.

Primero, creé un marco de datos que suma la columna 'DatabaseWorkedWith':

resp_sum = df.groupby('Respondent').sum()

Respondent DatabaseWorkedWith
4   MySQLSQLite
9   DynamoDBPostgreSQLSQLite
13  CouchbaseDynamoDBFirebaseMySQL
16  MongoDBMicrosoft SQL ServerMySQL
17  MongoDBPostgreSQL
... ...
25136   Microsoft SQL Server
25137   MySQL
25138   PostgreSQL
25141   Microsoft SQL ServerRedis
25142   PostgreSQL

10945 rows × 1 column

Usando el nuevo marco de datos, conté por la columna 'DatabaseWorkedWith' donde el valor era 'MySQL'.

resp_sum[resp_sum['DatabaseWorkedWith']=='MySQL'].count()

DatabaseWorkedWith    474
dtype: int64

Si pudieran presentarUna solución más elegante, ¡te lo agradecería! ¡Gracias!

2

Esto corre el riesgo de encontrar a alguien que afirme haber trabajado, digamos, tanto con "MyS" como. y "QL". Estoy bastante seguro de que hay una manera de obtener una lista de los valores del grupo en lugar de concatenar las cadenas, pero en realidad no uso Pandas con regularidad; Simplemente soy bueno (creo) para decirle a la gente cómo resolver problemas y usar motores de búsqueda y documentación.

- Karl Knechtel

27 de marzo de 2021 a las 0:21

¡De hecho, existe este riesgo, @KarlKnechtel! ¡Intentaré encontrar una solución mejor y la publicaré! ¡Gracias por tu apoyo!

-pedrolorandi

27 de marzo de 2021 a las 0:25



------------------------------------

Tengo una solución que puede hacer el trabajo. Puede eliminar todas las filas con valores duplicados en la columna 'Encuestado' y luego filtrar la base de datosWorkedWith con MySQL.

Aquí está el código

Compartir mejorar esta respuesta Seguir respondido el

13 de abril de 2022 a las 1:44

Yiran Zhu

Yiran Zhu

1

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare