Autor | Liu Zaoqi
Fonte | Python inicial (ID: zaoqi-python)
Imagem principal | Download CSDN do Oriental IC
SQL e Python são quase duas linguagens que os analistas de dados atuais devem entender. Qual é a diferença entre eles no processamento de dados? Este artigo usará MySQL e pandas para mostrar sete operações comumente usadas em análise de dados. Espero que possa ajudar os leitores que dominam uma dessas linguagens a compreender rapidamente o outro método !
Antes de ler este artigo, você pode visitar o site abaixo para baixar os dados de amostra usados neste artigo e importá-los para o MySQL e pandas e ler enquanto digita o código!
https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/io/data/csv/tips.csv
selecionar
Em SQL, podemos usar a instrução SELECT para selecionar dados de uma tabela, e os resultados são armazenados em uma tabela de resultados, a sintaxe é a seguinte:
SELECT column_name,column_name
FROM table_name;
Se você não quiser exibir todos os registros , pode usar TOP ou LIMIT para limitar o número de linhas. Portanto, para selecionar algumas colunas na tabela de dicas, você pode usar a seguinte instrução
SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;
No pandas, podemos completar a seleção da coluna passando a lista dos nomes das colunas para o DataFrame
No SQL, você também pode realizar cálculos enquanto seleciona, como adicionar uma coluna
SELECT *, tip/total_bill as tip_rate
FROM tips
LIMIT 5;
Isso também pode ser feito usando DataFrame.assign () no pandas
Encontrar
Pesquisa de condição única
Em SQL, a cláusula WHERE é usada para extrair registros que atendam às condições especificadas, a sintaxe é a seguinte
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
Por exemplo, encontre o registro de tempo = jantar nos dados de amostra
SELECT *
FROM tips
WHERE time = 'Dinner'
LIMIT 5;
Nos pandas, a pesquisa de acordo com as condições pode ter várias formas, por exemplo, você pode passar um objeto Series contendo True / False para um DataFrame e retornar todas as linhas com True
Pesquisa multi-condição
Em SQL, a pesquisa de múltiplas condições pode ser feita usando AND / OR
SELECT *
FROM tips
WHERE time = 'Dinner' AND tip > 5.00;
Existem operações semelhantes em pandas
Encontre valores vazios
A verificação de valores nulos em pandas é feita usando os métodos notna () e isna () .
frame[frame['col1'].notna()]
Pode usar IS NULL e IS NOT NULL para concluir em SQL
SELECT *
FROM frame
WHERE col2 IS NULL;
SELECT *
FROM frame
WHERE col1 IS NOT NULL;
Atualizar
Use UPDATE em SQL
UPDATE tips
SET tip = tip*2
WHERE tip < 2;
Nos pandas, existem muitas maneiras, como usar a função loc
tips.loc[tips['tip'] < 2, 'tip'] *= 2
excluir
Use DELETE em SQL
DELETE FROM tips
WHERE tip > 9;
Nos pandas, escolhemos as linhas que devem ser mantidas em vez de excluí-las
tips = tips.loc[tips['tip'] <= 9]
Agrupamento
Nos pandas, use o método groupby () para obter o agrupamento. groupby () geralmente se refere a um processo no qual queremos dividir o conjunto de dados em vários grupos, aplicar certas funções (geralmente agregação) e, em seguida, agrupar os grupos.
Uma operação SQL comum é obter o número de registros em cada grupo em todo o conjunto de dados. Por exemplo, agrupando e consultando o gênero
SELECT sex, count(*)
FROM tips
GROUP BY sex;
A operação equivalente no pandas é
observar que no código acima, usamos size () em vez de count (). Isso ocorre porque count () aplica a função a cada coluna e retorna o número de registros não vazios em cada coluna!
conexão
No pandas, você pode usar join () ou merge () para conectar.Cada método possui parâmetros, permitindo que você especifique o tipo de junção (LEFT, RIGHT, INNER, FULL) ou a coluna a ser unida.
Agora vamos recriar dois conjuntos de dados de amostra e usar o código para demonstrar conexões diferentes
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)})
Conexão interna
As junções internas usam operadores de comparação para combinar linhas em duas tabelas com base nos valores das colunas compartilhadas por cada tabela. As junções internas são implementadas em SQL usando INNER JOIN
SELECT *
FROM df1
INNER JOIN df2
ON df1.key = df2.key;
No pandas você pode usar merge () merge () fornece alguns parâmetros para juntar as colunas de um DataFrame com o índice de outro DataFrame ????
Junção externa esquerda / direita
Para obter junções externas esquerda / direita no SQL, você pode usar LEFT OUTER JOIN e 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 podem ser usados para conseguir o mesmo na mesclagem () e especificar como as palavras-chave para esquerda ou direita para
Totalmente conectado
A junção completa retorna todas as linhas nas tabelas à esquerda e à direita, independentemente de corresponderem ou não, mas nem todos os bancos de dados suportam. Por exemplo, o mysql não suporta . FULL OUTER JOIN pode ser usado para implementar junção completa em SQL
SELECT *
FROM df1
FULL OUTER JOIN df2
ON df1.key = df2.key;
Nos pandas, você também pode usar merge () e especificar a palavra-chave how como outer
fundir
A operação UNION em SQL é usada para mesclar os conjuntos de resultados de duas ou mais instruções SELECT.UNION é semelhante a UNION ALL , mas UNION excluirá linhas duplicadas. O código de amostra é o seguinte
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
*/
Você pode usar concat () para implementar UNION ALL em pandas
O acima é UNION ALL para reter valores duplicados, se você deseja excluir você pode usar drop_duplicates ()
O texto acima é todo o conteúdo deste artigo. Você pode ver que diferentes idiomas têm diferentes características em diferentes cenários. Se quiser saber mais sobre isso, você pode ler os documentos oficiais e praticar mais!
Fonte: documento oficial do pandas
https://pandas.pydata.org/docs/getting_started/comparison/comparison_with_sql.html
Compilação: Liu Zaoqi (com exclusão e modificação)
更多精彩推荐
☞北京 10 年,难说再见!
☞致敬所有的程序员们~ | 每日趣闻
☞腾讯否认微信测试语音消息进度调节;监证会同意蚂蚁集团科创板IPO注册;React 17 正式版发布|极客头条
☞韩辉:国产操作系统的最大难题在于解决“生产关系”
☞蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看