The next sexy job
The ability to take data to be able to understand it, to process it, to extract value from it, to visualize it, to communicate it, that’s going to be a hugely important skill.
– Hal Varian, Google
Data science, as it’s practiced, is a blend of Red-Bull-fueled hacking and espresso-inspired statistics.
Data science is the civil engineering of data. Its acolytes possess a practical knowledge of tools & materials, coupled with a theoretical understanding of what’s possible
– Mike Driscoll, CEO of metamarkets
A data scientist is someone who can obtain, scrub, explore, model and interpret data, blending hacking, statistics and machine learning. Data scientists not only are adept at working with data, but appreciate data itself as a first-class product.
– Hilary Mason, chief scientist at bit.ly
Parler de la donnée, c’est aussi évoquer le datascientist, ce mouton à 5 pattes de la data disposant de compétences statistiques, informatiques, comprenant parfaitement les enjeux métier de l’entreprise… Est-il aussi un fantasme du discours ambiant sur le big data ?
S’il peut exister des profils qui s’approchent de cette description, la réalité démontre le plus souvent que la datascience, comme la science en générale, ne se produit pas seule mais en groupe. La bonne question à se poser est donc plutôt celle de la synchronisation des différentes compétences au sein de l’organisation. Nous plaidons davantage pour un datascientism que pour des datascientists.
Une autre réalité méconnue sur le datascientist est qu’il s’agit avant tout d’un métier d’artisan. Chaque problème et chaque jeu de données demande toujours une démarche spécifique qui n’est pas industrialisable, ce que beaucoup de gens ne comprennent pas encore.
Récupérer, mélanger, enrichir, filtrer, nettoyer, vérifier, formater, transformer des données…
Arbre de décision, régression, clustering, Modèle graphique, SVM…
Graphiques, Data visualisation, Cartes…
Récupérer, mélanger, enrichir, filtrer, nettoyer, vérifier, formater, transformer des données…
Arbre de décision, régression, clustering, Modèle graphique, SVM…
Graphiques, Data visualisation, Cartes…
Récupérer, mélanger, enrichir, filtrer, nettoyer, vérifier, formater, transformer des données
Analyse de données traditionnelle
Graphiques, Data visualisation, Cartes…
"id" "mbikestands" 16104 30.5303867403315 15063 5.19337016574586 17010 16.2651933701657 13045 8.48066298342541 10025 9.31491712707182 ...
grep tot fichier.txt
Filtrer toute les lignes contenant un chiffre de 0 à 4 suivi d’un nombre quelconque de caractères et d’un chiffre de 5 à 9
grep '[01234].*[56789]' fichier.txt
Filtrer toute les lignes commençant par un tirer
grep '^-' fichier.txt
options -i, -n et -c,…
sed -e 's/ficheir/fichier/g' fichier.txt > fichier.corrected.txt
supprimer toutes les lignes vides :
sed -e '/^ *$/d' fichier.txt
supprimer les lignes 7 à 9 :
sed '7,9d' fichier.txt
perl -pe 's/last_update":([0-9]*)}/last_update":0000$1}/g'
file -i fichier.txt -o fichier.utf8
iconv : changement d’encodage iso-8859 → utf8
iconv -f ISO-8859-1 -t UTF-8 fichier.txt -o fichier.utf8
data = read.table(...)
data=fromJSON(file="fichier.json")
exporter un objet R en JSON :
toJSON(data)
manipuler :
apply(data,function(x){})
unlist(list)
"id" "mbikestands" "1" 16104 30.5303867403315 "2" 15063 5.19337016574586 "3" 17010 16.2651933701657 "4" 13045 8.48066298342541 ...qui contient les id des stations velib et la moyenne du nombre de bornes disponibles sur la période enregistrée. Pour cela vous utiliserez le fichier ./data/exo2.json qui à la forme suivante : tableau de stations ayant chacune une id (id) et trois tableaux associés; nombre de vélos (available_bikes), nombre de bornes (available_bike_stands), date de la mesures (download_date)
<?xml version='1.0' encoding='UTF-8'?>
<stations lastUpdate="1409819465886" version="2.0">
<station>
<id>2</id>
<name>Dézery/Ste-Catherine</name>
<terminalName>6002</terminalName>
...
</station>
<station>
<id>3</id>
<name>St-Maurice/ St-Henri</name>
<terminalName>6003</terminalName>
...
</station>
</stations>
data = xmlTreeParse("exo3.xml") # parser le fichier
xmltop = xmlRoot(data) # recupérer la racine
child = xmlChildren(xmltop) # les fils
child2 = xmlValue(child) # les valeurs
val2 = xmlValue(child2)
res1 = xmlSapply(xmltop,xmlValue) # appliquer une fonction
library(XML)
data = xmlTreeParse("./data/exo3.xml") # parser le fichier
stations = xmlChildren(xmlRoot(data)) # liste des stations
vars = c('id','lat','long','nbBikes','nbEmptyDocks')
resMatrix=sapply(stations,function(x){
# extraction des variables
clist = lapply(xmlChildren(x),xmlValue)
# sélection des variables
sel = names(clist) %in% vars
# et conversion des variables
as.numeric(unlist(clist[sel]))
})
# mise sous forme de data.frame
res=data.frame(t(resMatrix),row.names = NULL)
names(res)=c('id','lat','long','nbBikes','nbEmptyDocks')