Analyse exploratoire des données en SQL
Christina Maimone
Data Scientist
SELECT * FROM naics;
id | category | businesses
--------+---------------------------------------------+------------
111110 | Agriculture: Soybean Farming | 4788
111130 | Agriculture | Dry Pea and Bean Farming | 3606
111140 | Agriculture: Wheat Farming | 6393
111150 | Agriculture - Corn Farming | 26469
111160 | Agriculture: Rice Farming | 949
111199 | Agriculture - All Other Grain Farming | 15035
111211 | Agriculture | Potato Farming | 617
611110 | Education - Elementary and Secondary | 187859
611210 | Education | Junior Colleges | 3961
611310 | Education: Colleges and Universities | 29148
-- Cas pour chacun de :, -, et |SELECT CASE WHEN category LIKE '%: %' THEN split_part(category, ': ', 1)WHEN category LIKE '% - %' THEN split_part(category, ' - ', 1)ELSE split_part(category, ' | ', 1)END AS major_category, -- alias du résultatsum(businesses) -- sélectionner aussi le nombre d'entreprises FROM naics GROUP BY major_category; -- Regrouper par les catégories créées ci-dessus
major_category | sum
----------------+--------
Education | 220968
Agriculture | 57857
Valeurs d'origine : table fruit
customer | fav_fruit
----------+-----------
349 | apple
874 | Apple
703 | apple
667 | bannana
622 | banana
387 | BANANA
300 | APPLES
313 | apple
499 | banana
418 | apple
841 | BANANA
300 | APPLE
754 | apple
Valeurs normalisées : table recode
original | standardized
----------+--------------
APPLES | apple
apple | apple
Apple | apple
bannana | banana
apple | apple
banana | banana
banana | banana
APPLE | apple
apple | apple
BANANA | banana
CREATE TEMP TABLE recode AS
SELECT DISTINCT fav_fruit AS original, -- valeurs d'origine, hétérogènes
fav_fruit AS standardized -- nouvelles valeurs normalisées
FROM fruit;
SELECT *
FROM recode;
original | standardized
----------+--------------
APPLES | APPLES
apple | apple
Apple | Apple
bannana | bannana
apple | apple
banana | banana
banana | banana
APPLE | APPLE
apple | apple
BANANA | BANANA
(10 rows)
UPDATE table_name
SET column_name = new_value
WHERE condition;
-- Toutes les lignes : mettre en minuscules, retirer les espaces aux extrémités
UPDATE recode
SET standardized=trim(lower(original));
-- Lignes ciblées : corriger une faute d'orthographe
UPDATE recode
SET standardized='banana'
WHERE standardized LIKE '%nn%';
-- Toutes les lignes : retirer tout s final
UPDATE recode
SET standardized=rtrim(standardized, 's');
SELECT *
FROM recode;
original | standardized
----------+--------------
APPLES | apple
apple | apple
Apple | apple
apple | apple
banana | banana
banana | banana
APPLE | apple
apple | apple
BANANA | banana
bannana | banana
(10 rows)
Valeurs d'origine seulement
SELECT fav_fruit, count(*)
FROM fruit
GROUP BY fav_fruit;
fav_fruit | count
-----------+-------
APPLES | 1
apple | 1
apple | 3
banana | 1
BANANA | 2
apple | 1
APPLE | 1
bannana | 1
banana | 1
Apple | 1
(10 rows)
Avec les valeurs recodées
SELECT standardized,
count(*)
FROM fruit
LEFT JOIN recode
ON fav_fruit=original
GROUP BY standardized;
standardized | count
--------------+-------
apple | 8
banana | 5
(2 rows)
CREATE TEMP TABLE avec les valeurs d'origineUPDATE pour créer les valeurs normaliséesJOIN des données d'origine aux données normaliséesAnalyse exploratoire des données en SQL