Auteur | Liu Zaoqi
Source | Early Python (ID: zaoqi-python)
Image de tête | Téléchargement CSDN d'Oriental IC
SQL et Python sont presque deux langages que les analystes de données actuels doivent comprendre. Quelle est la différence entre eux lors du traitement des données? Cet article utilisera MySQL et pandas pour montrer sept opérations couramment utilisées dans l'analyse de données. J'espère qu'il pourra aider les lecteurs qui maîtrisent l'un de ces langages à comprendre rapidement l'autre méthode !
Avant de lire cet article, vous pouvez visiter le site Web ci-dessous pour télécharger les exemples de données utilisés dans cet article, et les importer dans MySQL et pandas, et lire en tapant le code!
https://raw.githubusercontent.com/pandas-dev/pandas/master/pandas/tests/io/data/csv/tips.csv
sélectionner
En SQL, nous pouvons utiliser l' instruction SELECT pour sélectionner des données dans une table, et les résultats sont stockés dans une table de résultats, la syntaxe est la suivante:
SELECT column_name,column_name
FROM table_name;
Si vous ne souhaitez pas afficher tous les enregistrements , vous pouvez utiliser TOP ou LIMIT pour limiter le nombre de lignes. Par conséquent, pour sélectionner certaines colonnes dans le tableau des astuces, vous pouvez utiliser l'instruction suivante
SELECT total_bill, tip, smoker, time
FROM tips
LIMIT 5;
Dans les pandas, nous pouvons compléter la sélection de colonnes en passant la liste des noms de colonnes au DataFrame
Dans SQL, vous pouvez effectuer des calculs lors de la sélection, comme l'ajout d'une colonne
SELECT *, tip/total_bill as tip_rate
FROM tips
LIMIT 5;
Cela peut également être fait en utilisant DataFrame.assign () dans les pandas
Trouver
Recherche de condition unique
En SQL, la clause WHERE est utilisée pour extraire les enregistrements qui remplissent les conditions spécifiées, la syntaxe est la suivante
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
Par exemple, recherchez l'enregistrement de temps = dîner dans les données d'exemple
SELECT *
FROM tips
WHERE time = 'Dinner'
LIMIT 5;
Dans les pandas, la recherche en fonction des conditions peut prendre plusieurs formes, par exemple, vous pouvez passer un objet Series contenant True / False à un DataFrame, et renvoyer toutes les lignes avec True
Recherche multi-conditions
En SQL, la recherche multi-conditions peut être effectuée à l'aide de AND / OR
SELECT *
FROM tips
WHERE time = 'Dinner' AND tip > 5.00;
Il y a des opérations similaires chez les pandas
Rechercher des valeurs vides
La vérification des valeurs nulles dans les pandas se fait à l'aide des méthodes notna () et isna () .
frame[frame['col1'].notna()]
Peut utiliser IS NULL et IS NOT NULL pour terminer en SQL
SELECT *
FROM frame
WHERE col2 IS NULL;
SELECT *
FROM frame
WHERE col1 IS NOT NULL;
Mise à jour
Utiliser UPDATE dans SQL
UPDATE tips
SET tip = tip*2
WHERE tip < 2;
Dans les pandas, il existe de nombreuses façons, comme l'utilisation de la fonction loc
tips.loc[tips['tip'] < 2, 'tip'] *= 2
effacer
Utiliser DELETE dans SQL
DELETE FROM tips
WHERE tip > 9;
Dans les pandas, nous choisissons les lignes à conserver au lieu de les supprimer
tips = tips.loc[tips['tip'] <= 9]
Regroupement
Dans les pandas, utilisez la méthode groupby () pour effectuer le regroupement. groupby () fait généralement référence à un processus dans lequel nous voulons diviser l'ensemble de données en plusieurs groupes, appliquer certaines fonctions (généralement l'agrégation), puis regrouper les groupes.
Une opération SQL courante consiste à obtenir le nombre d'enregistrements dans chaque groupe dans l'ensemble de données. Par exemple, en regroupant et en interrogeant le sexe
SELECT sex, count(*)
FROM tips
GROUP BY sex;
L'opération équivalente chez pandas est de noter que dans le code ci-dessus, nous utilisons size () au lieu de count (). C'est parce que count () applique la fonction à chaque colonne et renvoie le nombre d'enregistrements non vides dans chaque colonne!
lien
Dans les pandas, vous pouvez utiliser join () ou merge () pour vous connecter. Chaque méthode a des paramètres, vous permettant de spécifier le type de jointure (GAUCHE, DROITE, INTÉRIEURE, PLEINE) ou la colonne à joindre.
Maintenant, recréons deux ensembles d'exemples de données et utilisons du code pour démontrer différentes connexions
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)})
Connexion interne
Les jointures internes utilisent des opérateurs de comparaison pour faire correspondre les lignes de deux tables en fonction des valeurs des colonnes partagées par chaque table. Les jointures internes sont implémentées dans SQL à l'aide de INNER JOIN
SELECT *
FROM df1
INNER JOIN df2
ON df1.key = df2.key;
Dans les pandas, vous pouvez utiliser merge () merge () fournit des paramètres pour joindre les colonnes d'un DataFrame avec l'index d'un autre DataFrame ????
Jointure externe gauche / droite
Pour obtenir des jointures externes gauche / droite en SQL, vous pouvez utiliser LEFT OUTER JOIN et 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;
Les pandas peuvent être utilisés pour obtenir la même chose dans la fusion () et spécifier comment les mots-clés pour gauche ou droite pour
Entièrement connecté
La jointure complète renvoie toutes les lignes des tables de gauche et de droite, qu'elles correspondent ou non, mais toutes les bases de données ne la prennent pas en charge. Par exemple, mysql ne la prend pas en charge . FULL OUTER JOIN peut être utilisée pour implémenter une jointure complète dans SQL
SELECT *
FROM df1
FULL OUTER JOIN df2
ON df1.key = df2.key;
Dans les pandas, vous pouvez également utiliser merge () et spécifier le mot-clé how comme externe
fusionner
L'opération UNION dans SQL est utilisée pour fusionner les jeux de résultats d'au moins deux instructions SELECT. UNION est similaire à UNION ALL , mais UNION supprimera les lignes en double. L'exemple de code est le suivant
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
*/
Dans les pandas, vous pouvez utiliser concat () pour atteindre UNION ALL
Ce qui précède est UNION ALL pour conserver les valeurs en double, si vous souhaitez supprimer, vous pouvez utiliser drop_duplicates ()
Ce qui précède est tout le contenu de cet article. Vous pouvez voir que différentes langues ont des caractéristiques différentes dans différents scénarios. Si vous voulez en savoir plus à ce sujet, vous pouvez lire les documents officiels et pratiquer davantage!
Source: document officiel pandas
https://pandas.pydata.org/docs/getting_started/comparison/comparison_with_sql.html
Compilation: Liu Zaoqi (avec suppression et modification)
更多精彩推荐
☞北京 10 年,难说再见!
☞致敬所有的程序员们~ | 每日趣闻
☞腾讯否认微信测试语音消息进度调节;监证会同意蚂蚁集团科创板IPO注册;React 17 正式版发布|极客头条
☞韩辉:国产操作系统的最大难题在于解决“生产关系”
☞蓝色巨人IBM全力奔赴的混合云之旅能顺利吗?
☞区块链赋能供应链金融|应用优势与四类常见模式
点分享点点赞点在看