Tabla de Contenido
- Introducción
- Pandas
- SQL
- Resumen
Introducción
Ambas herramientas son importantes no sólo para los científicos de datos, sino también para los que ocupan puestos similares como los de análisis de datos e inteligencia empresarial. Dicho esto, ¿cuándo deberían los científicos de datos utilizar específicamente pandas en lugar de SQL y viceversa? En algunas situaciones, puede salirse con la suya utilizando sólo SQL, y otras veces, pandas es mucho más fácil de usar, especialmente para los científicos de datos que se centran en la investigación en un entorno de Jupyter Notebook. A continuación, voy a discutir cuando se debe utilizar SQL y cuando se debe utilizar pandas. Ten en cuenta que ambas herramientas tienen casos de uso específicos, pero hay muchas veces en las que su funcionalidad se solapa, y eso es lo que compararé a continuación también.
Pandas
Pandas [3] es una herramienta de análisis de datos de código abierto en el lenguaje de programación Python. El beneficio de pandas comienza cuando ya se tiene el conjunto de datos principal, generalmente a partir de una consulta SQL. Esta diferencia principal puede significar que las dos herramientas están separadas, sin embargo, también puedes realizar varias de las mismas funciones en cada herramienta respectiva, por ejemplo, puedes crear nuevas características a partir de columnas existentes en pandas, quizás más fácil y rápido que en SQL.
Es importante señalar que no estoy comparando lo que Pandas hace que SQL no puede hacer y viceversa. Estaré escogiendo la herramienta que puede hacer la función de manera más eficiente o preferible para el trabajo de ciencia de datos - en mi opinión, desde la experiencia personal.
Aquí hay momentos en los que el uso de pandas es más beneficioso que SQL - mientras que también tiene la misma funcionalidad que SQL:
- crear campos calculados a partir de características existentes
Cuando se incorpora una consulta SQL más compleja, a menudo se incorporan también subconsultas para dividir valores de diferentes columnas. En pandas se pueden dividir las características de forma mucho más sencilla como la siguiente:
df["new_column"] = df["first_column"]/df["second_column"]
El código anterior muestra cómo se pueden dividir dos columnas separadas, y asignar esos valores a una nueva columna - en este caso, se está realizando la creación de características en todo el conjunto de datos o marco de datos. Puede utilizar esta función tanto en la exploración de características como en la ingeniería de características en el proceso de la ciencia de datos.
- grouping by
También en referencia a las subconsultas, agrupar por en SQL puede llegar a ser bastante complejo y requerir líneas y líneas de código que pueden ser visualmente abrumadoras. En pandas, se puede agrupar simplemente por una línea de código. No me refiero a la agrupación por al final de una simple consulta select from table, sino a una donde hay múltiples subconsultas involucradas.
df.groupby(by="first_column").mean()
El resultado sería devolver la media de la primera columna para cada columna del marco de datos. Hay muchas otras formas de utilizar esta función de agrupación, que se describen muy bien en la documentación de pandas enlazada a continuación.
- checking data types
En SQL, a menudo tendrá que fundir los tipos, pero a veces puede ser un poco más claro ver la forma en que pandas presenta los tipos de datos en un formato vertical, en lugar de desplazarse a través de una salida horizontal en SQL. Algunos ejemplos de tipos de datos devueltos son int64, float64, datetime64[ns], y object.
df.dtypes
Aunque todas estas son funciones bastante simples de pandas y SQL, en SQL son particularmente complicadas, y a veces son mucho más fáciles de implementar en un dataframe de pandas. Ahora, veamos qué es lo que hace mejor SQL.
SQL
SQL es probablemente el lenguaje más utilizado por la mayor cantidad de puestos diferentes. Por ejemplo, un ingeniero de datos puede utilizar SQL, un desarrollador de Tableau o un gestor de productos. Dicho esto, los científicos de datos tienden a utilizar SQL con frecuencia. Es importante tener en cuenta que hay varias versiones diferentes de SQL, por lo general todos tienen una función similar, sólo ligeramente formateado de manera diferente.
Aquí hay momentos en los que el uso de SQL es más beneficioso que el de pandas - mientras que también tiene la misma funcionalidad que pandas
- WHERE clause
Esta cláusula en SQL se utiliza con frecuencia y también se puede realizar en pandas. Sin embargo, en pandas es algo más difícil, o menos intuitivo. Por ejemplo, hay que escribir código redundante, mientras que en SQL basta con el WHERE
SELECT ID FROM TABLE WHERE ID > 100
En pandas, sería algo así como:
df[df["ID"] > 100]["ID"]
Sí, ambos son simples, uno es sólo un poco más intuitivo.
- JOINS
Pandas tiene unas cuantas formas de unir, que pueden ser un poco abrumadoras, mientras que en SQL se pueden realizar uniones simples como las siguientes: INNER, LEFT, RIGHT
SELECT one.column_A, two.column_B FROM FIRST_TABLE one INNER JOIN SECOND_TABLE two on two.ID = one.ID
En este código, la unión es ligeramente más fácil de leer, que en pandas, donde hay que fusionar marcos de datos, y especialmente cuando se fusionan más de dos marcos de datos, puede ser bastante complejo en pandas. SQL puede realizar múltiples uniones ya sea INNER, etc., todo en la misma consulta.
Todos estos ejemplos, ya sea SQL o pandas, se pueden utilizar al menos en la parte de análisis exploratorio de datos del proceso de ciencia de datos, así como en la ingeniería de características, y la consulta de los resultados del modelo una vez que se almacenan en una base de datos.
Resumen
Esta comparación entre pandas y SQL es más bien una preferencia personal. Dicho esto, es posible que opines lo contrario a mi opinión. Sin embargo, espero que siga arrojando luz sobre las diferencias entre pandas y SQL, así como lo que se puede realizar igual en ambas herramientas, utilizando técnicas de codificación ligeramente diferentes y un lenguaje totalmente distinto.
En resumen, hemos comparado las ventajas de usar pandas sobre SQL y viceversa para algunas de sus funciones compartidas:
* creating calculated fields from existing features * grouping by * checking data types * WHERE clause * JOINS
Espero que mi artículo le resulte interesante y útil. No dude en comentar más abajo si está de acuerdo con estas comparaciones: ¿por qué o por qué no? ¿Crees que una herramienta, en particular, es mejor que la otra? ¿Qué otras herramientas de ciencia de datos se te ocurren que tengan una comparación similar? ¿Qué otras funciones de pandas y SQL podríamos comparar?