¿Python o SQL para el análisis de datos introductorio en 2020? ¡Comparación de siete operaciones comunes!

Autor | Liu Zaoqi

Fuente | Python temprano (ID: zaoqi-python)

Imagen de la cabeza | Descarga de CSDN de Oriental IC

SQL y Python son casi dos lenguajes que los analistas de datos actuales deben entender ¿Cuál es la diferencia entre ellos a la hora de procesar datos? Este artículo utilizará  MySQL pandas  para mostrar siete operaciones de uso común en el análisis de datos. Espero que pueda ayudar a los lectores que dominan uno de estos lenguajes a comprender rápidamente el otro método .

Antes de leer este artículo, puede visitar el sitio web a continuación para descargar los datos de muestra utilizados en este artículo, importarlos a MySQL y pandas, y leer mientras escribe el código.

https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/io/data/csv/tips.csv

Seleccione

En SQL, podemos usar la   instrucción SELECT para seleccionar datos de una tabla, y los resultados se almacenan en una tabla de resultados, la sintaxis es la siguiente:

SELECT column_name,column_name
FROM table_name;

Si no desea mostrar todos los registros , puede usar  TOP  o  LIMIT  para limitar el número de filas. Por lo tanto, para seleccionar algunas columnas en la tabla de sugerencias, puede usar la siguiente declaración

SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;

En pandas, podemos completar la selección de columnas pasando la lista de nombres de columnas al DataFrame 

En SQL, puede realizar cálculos mientras selecciona, como agregar una columna

SELECT *, tip/total_bill as tip_rate
FROM tips
LIMIT 5;

Esto también se puede hacer usando DataFrame.assign ()  en pandas 

  

Encontrar

Búsqueda de condición única

En SQL, la cláusula WHERE  se usa para extraer registros que cumplen con las condiciones especificadas, la sintaxis es la siguiente

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

Por ejemplo, busque el registro de tiempo = cena  en los datos de muestra 

SELECT *
FROM tips
WHERE time = 'Dinner'
LIMIT 5;

En pandas, la búsqueda según las condiciones puede tener muchas formas, por ejemplo, puede pasar un objeto Series que contenga  True / False  a un DataFrame y devolver todas las filas con True

Búsqueda de múltiples condiciones

En SQL, la búsqueda de múltiples condiciones se puede realizar usando AND / OR

SELECT *
FROM tips
WHERE time = 'Dinner' AND tip > 5.00;

Hay operaciones similares en pandas.

Encuentra valores vacíos

La verificación de valores nulos en pandas se realiza mediante los  métodos notna () isna ()  .

frame[frame['col1'].notna()]

Puede usar IS NULL IS NOT NULL para  completar en SQL 

SELECT *
FROM frame
WHERE col2 IS NULL;


SELECT *
FROM frame
WHERE col1 IS NOT NULL;

  Actualizar

Utilice UPDATE en SQL 

UPDATE tips
SET tip = tip*2
WHERE tip < 2;

En pandas, hay muchas formas, como usar la   función loc

tips.loc[tips['tip'] < 2, 'tip'] *= 2

Eliminar

Utilice DELETE en SQL 

DELETE FROM tips
WHERE tip > 9;

En pandas, elegimos las filas que se deben mantener en lugar de eliminarlas

tips = tips.loc[tips['tip'] <= 9]

  Agrupamiento

En pandas, use el   método groupby () para lograr la agrupación. groupby ()  generalmente se refiere a un proceso en el que queremos dividir el conjunto de datos en varios grupos, aplicar ciertas funciones (generalmente agregación) y luego agrupar los grupos.

Una operación SQL común es obtener el número de registros de cada grupo en todo el conjunto de datos. Por ejemplo, agrupando y consultando el género

SELECT sex, count(*)
FROM tips
GROUP BY sex;

La operación equivalente en pandas es tener en cuenta que en el código anterior usamos size () en  lugar de count (). ¡   Esto se debe a que count () aplica la función a cada columna y devuelve el número de registros no vacíos en cada columna!

conexión

En pandas, puede usar  join ()  o  merge ()  para conectarse. Cada método tiene parámetros, lo que le permite especificar el tipo de unión (LEFT, RIGHT, INNER, FULL) o la columna a unir.

Ahora recreemos dos conjuntos de datos de muestra y usemos código para demostrar diferentes conexiones

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
   ....:                     'value': np.random.randn(4)})
   ....: 


df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
   ....:                     'value': np.random.randn(4)})

Conexión interna

Las uniones internas utilizan operadores de comparación para hacer coincidir filas en dos tablas según los valores de las columnas compartidas por cada tabla. Las uniones internas se implementan en SQL mediante  INNER JOIN

SELECT *
FROM df1
INNER JOIN df2
  ON df1.key = df2.key;

En pandas puedes usar  merge () merge ()  proporciona algunos parámetros para unir las columnas de un DataFrame con el índice de otro DataFrame ????

Unión externa izquierda / derecha

Para lograr uniones externas izquierda / derecha en SQL, puede usar  LEFT OUTER JOIN  y  RIGHT OUTER JOIN

SELECT *
FROM df1
LEFT OUTER JOIN df2
  ON df1.key = df2.key;


SELECT *
FROM df1
RIGHT OUTER JOIN df2
  ON df1.key = df2.key;

Pandas se pueden utilizar para lograr lo mismo en el  merge ()  y especificar cómo las palabras clave para la  izquierda  o  la derecha  para

Totalmente conectado

La unión completa devuelve todas las filas en las tablas izquierda y derecha, independientemente de si coinciden o no, pero no todas las bases de datos lo admiten. Por ejemplo, mysql no lo admite . FULL OUTER JOIN se puede utilizar para implementar la unión completa en SQL 

SELECT *
FROM df1
FULL OUTER JOIN df2
  ON df1.key = df2.key;

En pandas, también puede usar  merge ()  y especificar la palabra clave how como  externa

  unir

La operación UNION en SQL se utiliza para fusionar los conjuntos de resultados de dos o más sentencias SELECT. UNION es  similar a  UNION ALL  , pero UNION eliminará las filas duplicadas. El código de muestra es el siguiente

SELECT city, rank
FROM df1
UNION ALL
SELECT city, rank
FROM df2;
/*
         city  rank
      Chicago     1
San Francisco     2
New York City     3
      Chicago     1
       Boston     4
  Los Angeles     5
*/

En pandas, puede usar  concat () para  lograr  UNION ALL


Lo anterior es  UNION ALL para  retener valores duplicados, si desea eliminar puede usar   drop_duplicates ()

Lo anterior es todo el contenido de este artículo. Puedes ver que diferentes idiomas tienen diferentes características en diferentes escenarios. Si quieres aprender más sobre esto, puedes leer los documentos oficiales y practicar más!

Fuente: documento oficial de pandas

https://pandas.pydata.org/docs/getting_started/comparison/comparison_with_sql.html

Compilación: Liu Zaoqi (con eliminación y modificación)


更多精彩推荐
☞北京 10 年,难说再见!
☞致敬所有的程序员们~ | 每日趣闻
☞腾讯否认微信测试语音消息进度调节;监证会同意蚂蚁集团科创板IPO注册;React 17 正式版发布|极客头条
☞韩辉:国产操作系统的最大难题在于解决“生产关系”
☞蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看

Supongo que te gusta

Origin blog.csdn.net/csdnsevenn/article/details/109233553
Recomendado
Clasificación