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 y 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 () e isna () .
frame[frame['col1'].notna()]
Puede usar IS NULL y 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全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看