Python ou SQL para análise introdutória de dados em 2020? Comparação de sete operações comuns!

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 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 () isna ()  .

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

Pode usar IS NULL 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全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看

Acho que você gosta

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