Académique Documents
Professionnel Documents
Culture Documents
IMPORTING DATA
IN R
Description du cours
Dans ce cours, vous plongerez plus profondément dans le large éventail de
formats de données disponibles. Plus précisément, vous apprendrez comment
importer des données à partir de bases de données relationnelles et comment
importer et utiliser des données provenant du Web. Enfin, vous acquerrez une
expérience pratique de l'importation de données à partir de progiciels statistiques
tels que SAS, STATA et SPSS.
2. Jusqu'à présent
Le cours précédent traitait de l'accès aux données stockées dans des fichiers
plats ou des fichiers Excel. Dans un cadre professionnel, vous rencontrerez
également des données stockées dans des bases de données relationnelles.
4. entreprise
Prenez cette base de données, appelée entreprise. Il contient trois tableaux,
5. entreprise
des employés,
6. entreprise
produits et
7. entreprise
Ventes. Comme un fichier plat, les informations sont affichées sous forme de
tableau. La table des employés contient 5 enregistrements et trois champs, à
savoir id, name et start_at. L'identifiant sert ici de clé unique pour chaque ligne
ou enregistrement. Ensuite, le tableau des produits contient les détails de quatre
produits. Nous avons affaire aux données d'une entreprise de
télécommunications qui vend à la fois avec et sans contrat. Ici aussi, chaque
produit a un identifiant. Enfin, il y a la table des ventes. Il répertorie quels
produits ont été vendus par qui, quand et à quel prix. Notez ici que les
identifiants dans
8. entreprise
id_employé et
9. entreprise
product_id correspond aux identifiants que vous pouvez trouver dans la table
des employés et des produits respectivement.
10. entreprise
La troisième vente par exemple, a été faite par l'employé avec l'identifiant 6,
donc Julie. Elle a vendu le produit avec l'identifiant 9, donc le contrat Biz
Unlimited.
11. entreprise
Ces relations rendent cette base de données très puissante. Vous ne stockez
toutes les informations nécessaires qu'une seule fois dans des tableaux bien
séparés, mais vous pouvez relier les points entre différents enregistrements pour
modéliser ce qui se passe.
15. Entraînons-nous !
Avant de faire cela, familiarisons-nous avec cet objet de connexion dans les
exercices !
Si la base de données MySQL est une base de données distante hébergée sur un
serveur, vous devrez également préciser les arguments suivants dbConnect():
dbname, host, port, useret password. La plupart de ces détails ont déjà été
fournis.
Instructions
Chargez la DBI bibliothèque, qui est déjà installée sur les serveurs de
DataCamp.
Modifiez l' dbConnect() appel pour vous connecter à la base de données
MySQL. Modifiez l' portargument ( 3306) et l' userargument ( "student").
Inspecter la connexion
Maintenant que vous avez créé avec succès la connexion à la base de données,
examinons-la de plus près. Avec l'objet condisponible dans votre espace de
travail, pouvez-vous dire laquelle des affirmations suivantes est vraie ?
Instructions
Des réponses possibles
Con est un MySQLConnection objet.
Importer les données du tableau
1. Importer les données du tableau
Après avoir réussi à vous connecter à une base de données,
2. inconvénient
comme ça, vous voudrez probablement voir ce qu'il y a dedans.
4. Entraînons-nous !
place aux exercices maintenant !
Commençons par importer les données sur les utilisateurs dans votre session R.
Vous le faites avec la dbReadTable()fonction. Passez-lui simplement l'objet de
connexion ( con), suivi du nom de la table que vous souhaitez importer. L'objet
résultant est une trame de données R standard.
Instructions
Ajoutez du code qui importe la "users"table à partir de la base de données
tweater et stockez la trame de données résultante au format users.
Imprimez le bloc de users données.
Si vous regardez de plus près ces tables, vous verrez que la tweats table, par
exemple, contient une colonne user_id. Les identifiants dans la colonne font
référence aux utilisateurs qui ont posté le tweat. De même, les
commentscontiennent à la fois a user_idet une tweat_idcolonne. Il précise quel
utilisateur a posté un commentaire sur quel tweat.
Avec cette nouvelle connaissance, pouvez-vous dire qui a posté le tweat sur
lequel quelqu'un a commenté "super ! merci !" (commentaire 1012) ?
Instructions
Des réponses possibles
L'utilisateur avec user_id 5, donc Oliver
2. dbLitTable()
Cependant, avec dbReadTable,
3. dbLitTable()
vous importez une table entière. Pour l'exemple d'une entreprise qui avait peu de
données, ce n'est pas un problème, mais que se passe-t-il si vous avez affaire à
une base de données contenant des tables avec des millions d'enregistrements ?
Vous devrez importer l'intégralité du tableau dans R avant de pouvoir effectuer
une analyse qui pourrait n'avoir besoin que d'une fraction de ces données.
4. dbLitTable()
S'il y avait un moyen d'effectuer une grande partie du travail de sélection de
données
5. dbLitTable()
côté base de données,
6. dbLitTable()
vous n'avez qu'à importer les éléments dont vous avez réellement besoin dans R.
Cela a beaucoup plus de sens, n'est-ce pas ?
7. Importation sélective
Je suis heureux de vous dire que c'est possible, tout cela depuis l'intérieur de R !
N'oubliez pas que les bases de données relationnelles utilisent généralement
SQL comme langage d'interrogation ? Eh bien, vous allez écrire des requêtes
SQL pour récupérer des données en fonction de critères spécifiques. Vous
pouvez envoyer ces requêtes via les fonctions R spécifiées par le package DBI et
implémentées par un package R qui dépend de la base de données que vous
utilisez. Comme nous travaillons avec des bases de données MySQL, c'est
RMySQL ici. L'écriture de requêtes SQL est un sujet à part entière, je ne
traiterai donc que quelques exemples de base afin que vous ayez une idée.
8. entreprise
Jetons à nouveau un coup d'œil à la base de données de l'entreprise, qui
contenait des informations sur les ventes de produits de télécommunications
réalisées par différents employés.
9. entreprise
Supposons que nous voulions avoir les noms des employés qui ont commencé
après le premier septembre 2012. Comment s'y prendre ?
11. Exemple 1
Pour résoudre la tâche à accomplir, vous pouvez lire l'intégralité de la table des
employés, puis la sous-ensemble à l'aide de la fonction de sous-ensemble. Mais
il y a un autre chemin. Jetez un œil à cet appel de la fonction dbGetQuery. Le
résultat est exactement le même. L'étrange syntaxe à l'intérieur de la chaîne ici
est en fait une requête SQL très courante, qui utilise trois mots-clés SQL :
SELECT, FROM et WHERE. Le mot clé SELECT spécifie la colonne à
sélectionner et correspond à l'argument select dans la fonction de sous-
ensemble. Le mot clé FROM spécifie la table à partir de laquelle vous souhaitez
obtenir des données et correspond au premier argument de la fonction de sous-
ensemble. Enfin, le mot clé WHERE spécifie une condition qu'un
enregistrement de la table doit remplir. Si vous lisez cette phrase à voix haute
avec quelques ajouts ici et là, cela semble assez naturel : "Sélectionnez la
colonne name dans la table des employés,
12. Exemple 1
Dans le premier cas,
13. Exemple 1
vous importez toute la table des employés,
14. Exemple 1
puis faites quelques sous-ensembles dans R. Dans le second cas,
15. Exemple 1
vous envoyez une requête SQL à la base de données,
16. Exemple 1
cette requête est exécutée du côté de la base de données, et
17. Exemple 1
seuls les résultats sont importés dans R. Si vous avez affaire à des tables
volumineuses, la deuxième approche est bien plus efficace. Essayons un autre
exemple.
18. entreprise
Supposons que vous vouliez sélectionner les produits qui impliquent un contrat,
19. entreprise
donc où le contrat est un. Pour ces produits, nous nous intéressons à toutes les
variables. L'ancienne approche consistant à lire l'ensemble du tableau puis à
sous-ensemble
20. Exemple 2
ressemblerait à ça. La nouvelle approche consistant à envoyer une requête SQL
à la base de données et à récupérer le résultat ressemble à ceci. Les résultats sont
à nouveau exactement les mêmes. Remarquez comment l'étoile après le mot-clé
SELECT spécifie de conserver toutes les colonnes de la table des produits.
Notez également que dans la requête SQL, vous devez utiliser un seul signe égal
pour spécifier une condition pour le mot clé WHERE, au lieu d'un double signe
égal, comme vous en avez l'habitude dans R.
21. Entraînons-nous !
Après ce cours accéléré sur la syntaxe SQL, voyons comment vous vous
comportez dans certains exercices. Bonne chance!
dbGetQuery()est ce dont vous avez besoin. Comme d'habitude, vous lui passez
d'abord l'objet de connexion. Le deuxième argument est une requête SQL sous
forme de chaîne de caractères. Cet exemple sélectionne la agevariable dans l'
peopleensemble de données où genderest égal à"male" :
Internes DBI
1. Les internes de DBI
Revenons à un appel de fonction dbGetQuery d'avant.
2. dbRequête()
C'était incroyablement facile à utiliser. Passez simplement l'objet de connexion
et une requête SQL, et vous obtenez un résultat. Ce qu'il fait réellement dans les
coulisses, c'est d'envoyer une requête, avec dbSendQuery, comme celle-ci. Cette
fonction renvoie un résultat, mais celui-ci ne contient en fait aucun
enregistrement que vous vouliez importer. Pour cela, vous devez utiliser la
fonction dbFetch. Enfin, vous devez effacer manuellement le résultat. La
combinaison de dbSendQuery, dbFetch et dbClearResult donne exactement le
même résultat que dbGetQuery, alors pourquoi faire cela ? Eh bien, les appels
de requête dbFetch vous permettent de spécifier un nombre maximum
d'enregistrements à récupérer par extraction. Cela peut être utile lorsque vous
devez charger des tonnes d'enregistrements, mais que vous souhaitez le faire
morceau par morceau. Supposons, par exemple,
3. dbFetch() un par un
vous voulez obtenir le résultat de la requête précédente, enregistrement par
enregistrement. Vous pouvez utiliser cette construction pour cela, avec la même
requête SQL que précédemment. Ce code envoie d'abord une requête à la base
de données, puis entre dans une boucle while qui vérifie si le résultat de la
requête contient toujours des données qui n'ont pas encore été récupérées. S'il y
a encore des données disponibles, les morceaux sont récupérés enregistrement
par enregistrement, et ce morceau est imprimé à chaque itération. La sortie
montre en effet les deux enregistrements, imprimés séparément, l'un après
l'autre. Dans cet exemple de jouet, cette approche n'est pas vraiment utile, mais
si vous travaillez sur un algorithme super compliqué qui implique des millions
d'enregistrements de base de données, vous voudrez peut-être envisager un
traitement des données par morceaux, n'est-ce pas ? Après tout votre travail
acharné sur la base de données,
4. Déconnectez-vous
n'oubliez pas de vous en déconnecter. Essayez ces fonctions DBI de bas niveau
dans les exercices.
5. Entraînons-nous !
Dans le prochain chapitre, je reviendrai pour vous en dire plus sur l'importation
de données depuis le Web. On se voit là-bas!
Dans notre exemple de jouet, découper les récupérations n'a pas beaucoup de
sens, mais assurez-vous de vous souvenir de cette technique lorsque vous êtes
aux prises avec d'énormes bases de données !
Le code qui vous connecte à la base de données est déjà disponible, pouvez-vous
terminer le script ?
Instructions
En utilisant la technique que vous préférez, créez un bloc de données
long_tweats. Il sélectionne les post et date colonnes à partir des observations
dans tweats lequel la longueur de caractère de la post variable dépasse 40.
Imprimer long_tweats.
Déconnectez-vous de la base de données à l'aide de dbDisconnect().
Ceci conclut le chapitre sur les bases de données. Bien sûr, il y a beaucoup plus
à apprendre sur l'interfaçage avec les bases de données et à travailler avec elles
aussi efficacement que possible, mais c'est quelque chose pour les cours plus
avancés.
3- Importation de données depuis le Web (Partie 1)
De plus en plus d'informations utilisées par les data scientists se trouvent sur le
Web. L'importation de ces données dans R nécessite une compréhension des
protocoles utilisés sur le Web. Dans ce chapitre, vous obtiendrez un cours
accéléré sur HTTP et apprendrez à exécuter vos propres requêtes HTTP depuis
R.
http
1. HTTP
De plus en plus d'informations avec lesquelles vous travaillerez en tant que data
scientist se trouvent sur le Web.
3. HTTP
abréviation de HyperText Transfer Protocol. Il s'agit essentiellement d'un
système de règles sur la façon dont les données doivent être échangées entre les
ordinateurs. Bref, HTTP est le langage du web. Si vous naviguez vers une page
Web par exemple, votre ordinateur, le client, envoie en fait un
4. HTTP
requête HTTP au
5. HTTP
serveur. Le serveur renvoie ensuite
6. HTTP
des données représentant la page Web, il envoie donc une réponse et la page
Web s'affiche sur votre écran. Il existe plusieurs méthodes HTTP, comme on les
appelle. Pour obtenir simplement une page Web à partir d'un serveur,
7. HTTP
vous utilisez la méthode GET, par exemple. En dehors de GET, il existe
également d'autres méthodes HTTP, mais ne nous plongeons pas dans celles-ci
ici. Au lieu de cela, jetons un coup d'œil à quelques exemples dont vous vous
souviendrez peut-être dans les chapitres précédents, mais cette fois, toutes les
données résideront sur le Web.
8. Exemple : CSV
Commençons par exemple par le fichier states-dot-csv, qui se trouve sur ce lien.
Le flux de travail typique consisterait à télécharger manuellement le fichier via
votre navigateur Web préféré, puis à pointer vers le chemin à l'intérieur de read
dot csv. cependant,
9. Exemple : CSV
cela peut être fait beaucoup plus facile! Jetez un œil à cette ligne, où nous
passons simplement l'URL sous forme de chaîne de caractères. Le résultat est
exactement le même : une base de données avec 5 observations et 4 variables.
Comment cela peut-il être si facile ? Eh bien, dans les coulisses, R découvre que
vous avez fait référence à une URL et la demande à l'aide d'une requête HTTP
GET. Le serveur répond avec le fichier csv, que R peut alors lire comme il le
faisait auparavant. Plutôt sympa, hein ? De nos jours, de nombreux sites Web
n'acceptent que les connexions sécurisées. Vous pouvez uniquement visiter ces
sites Web ou télécharger leurs fichiers avec le préfixe http_S_. R sait-il aussi
comment gérer cela? Eh bien, découvrons avec le même fichier CSV, mais cette
fois
10. Exemple : CSV
avec le préfixe HTTPS. Cela fonctionne de la même manière, génial. La prise en
charge HTTPS est intégrée à R depuis la version R 3 point 2 point 2.
Expérimentez avec l'importation de données à partir du Web
11. Entraînons-nous !
vous-même dans les exercices
Importation sécurisée
Dans les exercices précédents, vous avez travaillé avec des URL commençant
toutes par http://. Il existe cependant une alternative plus sûre à HTTP, à savoir
HTTPS, qui signifie HypterText Transfer Protocol Secure. N'oubliez pas ceci :
HTTPS est relativement sûr, HTTP ne l'est pas.
Heureusement pour nous, vous pouvez utiliser les fonctions d'importation
standard avec des https://connexions depuis la version R 3.2.2.
Instructions
Jetez un œil à l'URL dans url_csv. Il utilise une connexion sécurisée, https://.
Utilisez read.csv() pour importer le fichier au format url_csv. Le .csv fichier
auquel il fait référence contient des noms de colonnes dans la première ligne.
Appelez-le pools1.
Chargez le readr paquet. Il est déjà installé sur les serveurs de DataCamp.
Utilisez read_csv() pour lire dans le même .csv fichier au format url_csv.
Appelez-le pools2.
Imprimez la structure de pools1et pools2. On dirait que l'import s'est aussi bien
passé qu'avec une http connexion normale !
Téléchargement de fichiers
1. Téléchargement de fichiers
Semblable à ce que nous avons fait dans la vidéo précédente,
2. Exemple : Excel
utilisons maintenant le package readxl pour importer les données Excel
stockées à cette URL. Le read_excel fonctionnera-t-il hors de la boîte ici ?
Apparemment, readxl ne sait pas comment gérer les fichiers Excel stockés
sur le Web, bien que je m'attende à ce que Hadley Wickham ajoute cette
fonctionnalité dans les prochaines versions. Cela signifie-t-il que nous
devrons télécharger manuellement le fichier, puis pointer vers le fichier
local comme vous le feriez auparavant ? Pas du tout!
3. download.file()
Vous pouvez utiliser le fichier dot download ici, une fonction du package
utils. Définissons d'abord l'URL et le chemin de destination, donc où nous
voulons placer le fichier téléchargé sur notre système. Je vais appeler le
fichier local_cities dot xlsx et le placer dans mon répertoire personnel. Si
vous utilisez maintenant le fichier dot de téléchargement avec l'URL
comme premier argument et le chemin de destination comme deuxième
argument, vous êtes prêt à partir. Parfait. Ce que le fichier de points de
téléchargement a fait est simple. Il a effectué une requête GET à l'URL que
vous avez spécifiée et a stocké le contenu de la réponse à l'emplacement
que vous avez spécifié. La dernière étape consiste à utiliser la fonction
read_excel d'avant pour importer les données Excel du fichier local cette
fois. Nous pouvons à nouveau utiliser la variable dest_path ici.
4. Pourquoi download.file() ?
Vous vous demandez peut-être pourquoi l'utilisation du fichier dot de
téléchargement est utile. La réponse est encore : la reproductibilité. Vous
pouvez spécifier des URL dans vos scripts R et les télécharger via les
fonctions R au lieu de naviguer manuellement sur le Web, ce qui nécessite
plusieurs clics de souris. Il y a beaucoup plus à apprendre sur l'exécution
de requêtes GET et d'autres requêtes HTTP depuis R. Dans certains cas,
vous devrez vous authentifier avant de pouvoir télécharger des fichiers et
transmettre des paramètres supplémentaires à votre requête GET. Si vous
voulez en savoir plus à ce sujet, je vous suggère de consulter le package
httr de Hadley Wickham.
5. Entraînons-nous !
Dirigez-vous vers les exercices pour un peu plus de pratique maintenant,
amusez-vous!
load("https://s3.amazonaws.com/assets.datacamp.com/production/
course_1478/datasets/wine.RData")
Vérité! Vous ne pouvez pas utiliser directement une chaîne d'URL à
l'intérieur load()pour charger des RDatafichiers distants . Vous devez
d'abord utiliser url()ou télécharger le fichier en utilisant download.file().
Vous découvrirez les API Web et JSON dans la vidéo et les exercices qui
suivent, mais certaines expérimentations ne font jamais de mal, n'est-ce pas
?
Instructions
Utilisez GET()pour obtenir le urlqui a déjà été spécifié dans l'exemple de
code. Stockez la réponse en tant que resp.
Imprimer resp. Quel est le type de contenu ?
Utilisez content()pour obtenir le contenu de resp. Définissez l' asargument
sur "text". Imprimez simplement le résultat. Que vois-tu?
Utilisez content()pour obtenir le contenu de resp, mais cette fois, ne
spécifiez pas de deuxième argument. R détermine automatiquement que
vous avez affaire à un JSON et convertit le JSON en une liste R nommée.
Génial! Le fait de httrconvertir automatiquement le corps de la réponse
JSON en une liste R est très pratique.
4- Importation de données depuis le Web (Partie 2)
Importer des données depuis le Web est une chose ; être capable d'extraire
des informations utiles en est une autre. Apprenez-en plus sur le format
JSON pour vous rapprocher de la domination du Web.
API et JSON
1. API & JSON
Dans la vidéo et les exercices précédents,
3. API
Qu'est-ce qu'une API, je vous entends demander ? Eh bien, c'est l'abréviation de
Application Programming Interface. En termes très généraux, il s'agit d'un
ensemble de routines et de protocoles permettant de construire des composants
logiciels. C'est un moyen par lequel différents composants logiciels
interagissent. Cela peut se produire de milliers de façons, mais nous nous
concentrerons uniquement sur l'API Web. En règle générale, il s'agit d'une
interface permettant d'obtenir des données et des informations traitées à partir
d'un serveur ou d'ajouter des données à un serveur, via les méthodes HTTP que
vous avez apprises précédemment.
4. Twitter
Prenons par exemple Twitter. Ils ont également une API, que vous pouvez
consulter ici. Après authentification, vous pouvez simplement demander des
URL particulières à Twitter avec la requête GET, ce qui vous permet d'obtenir
les tweets d'une personne en particulier par exemple. Twitter fait tout le travail
pour vous sur ses serveurs et crache les informations dont vous avez besoin.
Vous pouvez également utiliser l'API pour placer par programme des
commentaires sur les tweets de quelqu'un, par exemple. Les applications
possibles sont infinies. Supposons que vous soyez un tweeter passionné et que
vous vouliez savoir quels tweets ont eu le plus d'impact. Peut-être que certains
de vos tweets les plus controversés ont provoqué beaucoup de retweets et de
réactions ? Avec les données brutes de l'API de Twitter, vous pouvez rechercher
cela. Mais pourquoi les API et JSON sont-ils utiles en premier lieu ? Toutes les
informations sont déjà disponibles sur la page Web, n'est-ce pas ?
7. jsonlite
vous pouvez utiliser le package jsonlite de Jeroen Ooms. Le package est une
amélioration des packages R antérieurs pour gérer les JSON, où la conversion de
et vers JSON est plus cohérente et robuste, de sorte qu'elle fonctionne bien dans
tous les cas d'utilisation.
9. Entraînons-nous !
Je vous suggère de faire quelques exercices avant de plonger plus profondément
dans le format JSON. Prendre plaisir!
De JSON à R
Dans le cadre le plus simple, fromJSON()peut convertir des chaînes de
caractères qui représentent des données JSON en une liste R bien
structurée. Essaie!
Instructions
Chargez le jsonlitepaquet. Il est déjà installé sur les serveurs de DataCamp.
wine_jsonreprésente un JSON. Utilisez fromJSON()pour le convertir en
une liste, nommée wine.
Afficher la structure de wine
API Quandl
Comme Filip l'a montré dans la vidéo, cela fromJSON()fonctionne
également si vous transmettez une URL sous forme de chaîne de caractères
ou le chemin d'accès à un fichier local contenant des données JSON.
Essayons cela sur l'API Quandl, où vous pouvez récupérer toutes sortes de
données financières et économiques.
Instructions
quandl_url représente une URL. Utilisez fromJSON() directement sur cette URL
et stockez le résultat au format quandl_data.
Afficher la structure de quandl_data.
Génial! Vous avez importé avec succès des données JSON directement depuis le
Web. Si vous examinez de près la structure de quandl_data, vous verrez que l'
data élément est une matrice.
API OMDb
Dans la vidéo, vous avez vu à quel point il est facile d'interagir avec une API
une fois que vous savez formuler des requêtes. Vous avez également vu
comment récupérer toutes les informations sur Rain Man depuis OMDb.
Effectuez simplement un GET()appel, puis demandez le contenu avec la
content()fonction. Cette content()fonction, qui fait partie du httrpackage, utilise
jsonliteen coulisses pour importer les données JSON dans R.
Cependant, à présent, vous savez également qu'il jsonlite peut gérer lui-même
les URL. Il vous suffit de transmettre l'URL de la demande à fromJSON() vos
données dans R. Dans cet exercice, vous utiliserez cette technique pour
comparer l'année de sortie de deux films dans la base de données Open Movie.
Instructions
Deux URL sont incluses dans l'exemple de code, ainsi qu'un fromJSON() appel
à build sw4. Ajoutez un appel similaire à build sw3.
Imprimez l'élément nommé à la Title fois sw4 et sw3. Vous pouvez utiliser l'
$opérateur. De quels films traitons-nous ici ?
Écrivez une expression qui évalue TRUE si a sw4été publiée plus tard que sw3.
Ces informations sont stockées dans l' Year élément des listes nommées.
Bien fait! Le quatrième épisode de la saga Star Wars est sorti avant le
troisième ! Assez de fromJSON()maintenant. Essayons maintenant de convertir
certaines données R au format JSON.
3. Objet JSON
Convertissons ce JSON en chaîne R en l'enveloppant entre guillemets. J'utilise
des guillemets simples ici pour ne pas avoir à échapper à chaque guillemet
double. Passons maintenant cette chaîne à la fonction fromJSON de jsonlite, qui
convertit un code JSON en code R, et demandons la structure du résultat. Le
résultat est une liste nommée dans R, qui contient les mêmes informations. Vous
pouvez également voir que les éléments ont des classes différentes : nous avons
des caractères, des entiers et des logiques.
4. Tableau JSON
Ensuite, il existe également des tableaux JSON. Il s'agit d'une séquence
ordonnée de zéro ou plusieurs valeurs, comme celle-ci. L'appel de JSON sur
cette structure JSON donne un vecteur entier. Cependant, il s'agit en fait d'une
simplification, car les tableaux JSON, tout comme les objets JSON, sont
hétérogènes ; ils peuvent contenir des éléments de différents types. Ce tableau
JSON, par exemple, est également parfaitement valide. En essayant de convertir
ce JSON en R, donnez le résultat suivant. Les nombres ont été contraints à des
caractères, tout comme la valeur logique. Le mot-clé null a été converti en NA
dans R. Cela a dû être fait car les vecteurs R ne peuvent contenir qu'un seul type
de base, vous vous souvenez ? L'objet JSON comme le tableau JSON peuvent
contenir d'autres objets et tableaux JSON, comment cela fonctionnerait-il ?
5. Imbrication JSON
Supposons que nous ajoutions des informations à l'objet JSON d'avant. Cette
fois, j'ai formaté le JSON de manière à ce qu'il devienne plus lisible. Nous
pouvons l'étendre comme suit.
6. Imbrication JSON
Partons de JSON et voyons ce que nous obtenons. Nous obtenons une liste de
noms imbriquée, c'est parfaitement logique si vous me demandez.
9. Entraînons-nous !
vers JSON()
En plus de convertir JSON en R avec fromJSON(), vous pouvez également
utiliser toJSON()pour convertir les données R au format JSON. Dans son
utilisation la plus basique, vous passez simplement à cette fonction un objet R à
convertir en JSON. Le résultat est un objet R de la classe json, qui est
essentiellement une chaîne de caractères représentant ce JSON.
Minifier et embellir
Les JSON peuvent se présenter sous différents formats. Prenez ces deux JSON,
qui sont en fait exactement les mêmes : le premier est dans un format minifié, le
second est dans un joli format avec indentation, espace et nouvelles lignes :
# Mini
{"a":1,"b":2,"c":{"x":5,"y":6}}
# Pretty
{
"a": 1,
"b": 2,
"c": {
"x": 5,
"y": 6
}
}
À moins que vous ne soyez un ordinateur, vous préférez sûrement la deuxième
version. Cependant, la forme standard qui toJSON()revient est la version
minifiée, car elle est plus concise. Vous pouvez adapter ce comportement en
définissant l' prettyargument inside toJSON()sur TRUE. Si vous avez déjà une
chaîne JSON, vous pouvez utiliser prettify()ou minify()pour rendre le JSON
aussi joli ou aussi concis que possible.
Instructions
Convertissez le mtcarsjeu de données, disponible par défaut dans R, en un joli
fichier JSON . Appelez le JSON résultant pretty_json.
Imprimez pretty_json. Pouvez-vous comprendre la sortie facilement?
Convertissez pretty_jsonen une version minimale en utilisant minify(). Stockez
cette version sous une nouvelle variable, mini_json.
Imprimez mini_json. Quelle version préférez-vous, la jolie ou la minifiée ?
Génial! J'espère que vous conviendrez que le joli format est bien plus facile à
lire et à comprendre que le format minifié ! Cet exercice conclut le cours sur
l'import de données !
Havre
1. havre de paix
Une chose dont nous n'avons pas encore discuté, ce sont les données d'autres
2. Progiciels statistiques
progiciels statistiques. Le plus commun
3. Progiciels statistiques
ceux-ci sont SAS, abréviation de Statistical Analysis Software, STATA, qui
signifie statistiques et données, et SPSS, ou le progiciel statistique pour les
sciences sociales. Le logiciel que les gens utilisent dépend du domaine d'études
ou de leurs préférences personnelles.
4. Progiciels statistiques
SAS, par exemple, est l'un des outils logiciels d'analyse commerciale les plus
répandus et est également couramment utilisé en biostatistique ou en sciences
médicales. D'autre part, STATA est un outil typique pour les économistes. SPSS
est souvent utilisé en sciences sociales, d'où son nom.
5. Progiciels statistiques
En fin de compte, chaque logiciel utilise et produit ses propres types de fichiers.
Les extensions les plus courantes sont répertoriées ici.
7. paradis
Donc, le paquet paradis. Ce package peut traiter les fichiers de données SAS,
STATA et SPSS. Pour ce faire, il utilise la bibliothèque ReadStat C d'Evan
Miller. Tout comme readr et readxl, le package est extrêmement simple à
utiliser. Vous passez le chemin d'accès au fichier de données et une trame de
données R en résulte. Après avoir installé Haven avec install-dot-packages, vous
pouvez le charger avec la fonction de bibliothèque.
8. Données SAS
Commençons par charger d'abord un fichier de données SAS. Supposons que
vous ayez un fichier 'ontime dot sas7bdat' dans votre répertoire de travail actuel.
Il contient des données sur le pourcentage de vols arrivés à temps pour plusieurs
compagnies aériennes aux États-Unis. Pour importer ces données sous forme de
trame de données à temps, il vous suffit d'utiliser la fonction read_sas et de
transmettre le chemin d'accès au fichier de données :
9. Données SAS
Si vous imprimez sa structure, vous verrez que chaque variable du bloc de
données possède également un attribut label. Si vous connaissez bien SAS, vous
savez que vous pouvez étiqueter des variables dans des ensembles de données
SAS. Eh bien, ce sont ces mêmes étiquettes qui sont également disponibles dans
R maintenant.
17. as_factor()
Au lieu de la fonction standard en tant que facteur de point, de base R, vous
aurez besoin de 'haven's comme facteur de soulignement pour cela. C'est le type
de variables catégorielles auxquelles nous sommes habitués. Dans ce cas, il
serait peut-être encore mieux d'avoir des caractères simples pour les noms de
compagnies aériennes, car ce ne sont pas vraiment des catégories. La fonction de
base R en tant que caractère de point peut le faire pour vous. Plaçons-le autour
de l'appel précédent.
18. as_factor()
Si vous attribuez à nouveau ce résultat à la colonne Airline of ontime, vous avez
préparé le bloc de données ontime pour une analyse supplémentaire, avec les
noms sous forme de simples chaînes de caractères.
21. Entraînons-nous !
Maintenant, allez-y et entraînez-vous !
SAS : read_sas()
STATA : read_dta()(ou read_stata(), qui sont identiques)
SPSS : read_sav()ou read_por(), selon le type de fichier.
Toutes ces fonctions prennent un argument clé : le chemin d'accès à votre fichier
local. En fait, vous pouvez même passer une URL ; haventéléchargera alors
automatiquement le fichier pour vous avant de l'importer.
Vous travaillerez avec des données sur l'âge, le sexe, le revenu et le niveau
d'achat (0 = faible, 1 = élevé) de 36 personnes (Source : SAS ). Les informations
sont stockées dans un fichier SAS, sales.sas7bdat, qui est disponible dans votre
répertoire de travail actuel. Vous pouvez également télécharger les données ici .
Instructions
Chargez le havenpaquet ; il est déjà installé sur les serveurs de DataCamp.
Importez le fichier de données "sales.sas7bdat". Appelez le bloc de données
importé sales.
Afficher la structure de salesavec str(). Certaines colonnes représentent des
variables catégorielles, elles devraient donc être des facteurs.
Toutes nos félicitations! Comme vous pouvez le voir, read_sas()vous permet
d'importer facilement des fichiers de données SAS .
Après avoir importé le bloc de données, vous devez tracer deux de ses variables,
Importcontre Weight_I, et décrire leur relation ! havenest déjà chargé dans votre
session R, vous pouvez donc commencer à importer immédiatement.
Instructions
Des réponses possibles
Les chiffres d'importation en USD et les chiffres d'importation en poids sont
plutôt positivement corrélés.
Corriger. Vous pouvez repérer une tendance à la hausse parmi les points de
données. Cela a bien sûr du sens : plus le sucre est échangé, plus le poids
échangé est élevé.
Dans cet exercice, vous travaillerez avec des données sur quatre des traits de
personnalité des Big Five pour 434 personnes (Source : University of Bath ). Le
Big Five est un concept psychologique comprenant, à l'origine, cinq dimensions
de la personnalité pour classer la personnalité humaine. Le jeu de données SPSS
est appelé person.sav et est disponible dans votre répertoire de travail.
Instructions
Utilisez read_sav() pour importer les données SPSS au format "person.sav".
Nommez le bloc de données importé traits.
Traits contient plusieurs valeurs manquantes, ou NAs. Exécutez summary()
dessus pour savoir combien de NAs sont contenus dans chaque variable.
Imprimez un sous-ensemble des individus qui ont obtenu un score élevé en
extraversion et en amabilité, c'est-à-dire un score supérieur à 40 pour chacune de
ces deux catégories. Vous pouvez utiliser subset() pour cela.
http://s3.amazonaws.com/assets.datacamp.com/production/course_1478/
datasets/employee.sav
Instructions
Importez les données SPSS directement à partir de l'URL et stockez la trame de
données résultante au format work.
Affichez le résumé de la GENDER colonne de work. Cette information ne vous
donne pas beaucoup d'informations utiles, n'est-ce pas ?
Convertissez la GENDER colonne en work un facteur, la classe pour désigner
les variables catégorielles dans R. Utilisez as_factor().
Affichez à nouveau le résumé de la GENDER colonne. Cette fois, l'impression
est beaucoup plus logique.
Etranger
1. étranger
Vous savez déjà importer vos données à l'aide du package Wickham's Haven,
génial !
2. étranger
Cependant, je vous ai également dit qu'il existe une autre alternative, le package
étranger, écrit par l'équipe principale de R. Bien qu'il soit un peu moins cohérent
dans la dénomination et l'utilisation, c'est un outil très complet qui peut
fonctionner avec toutes sortes de formats de données étrangers. En plus
d'importer des fichiers SAS, STATA et SPSS, il peut également gérer des
formats encore plus exotiques, de Systat et Weka par exemple. Il est également
capable d'exporter à nouveau des données vers différents formats. Je ne parlerai
cependant que de l'importation de données SAS, STATA et SPSS. Avant d'y
arriver, laissez-moi installer et charger le package étranger.
3. SAS
Commençons d'abord par SAS. Eh bien, ici apparaît le premier inconvénient de
l'étranger par rapport au paradis. L'étranger ne peut pas importer de fichiers de
données SAS uniques, tels que les fichiers dot sas7bdat. Avec l'étranger, seules
les bibliothèques dites SAS peuvent être lues. Ces bibliothèques sont
généralement au format dot-xport. Si vous cherchez vraiment une alternative au
refuge ici, vous pouvez consulter un package appelé sas7bdat.
4. STATUTS
En ce qui concerne STATA, l'étranger peut être utilisé pour lire les fichiers dot
dta des versions 5 à 12 de Stata aujourd'hui. Vous pouvez le faire avec la
fonction read dot dta. Comme vous l'avez vu précédemment, les packages de
l'équipe principale R tels que utils et ce package étranger utilisent des points
dans leurs noms de fonction, tandis que les packages de Wickham utilisent des
traits de soulignement. Jetez un œil à cette utilisation simplifiée de la fonction
read dot dta. Comme vous vous en doutez probablement, vous devez d'abord
définir un chemin de fichier. Il peut s'agir d'un fichier local ou d'une URL.
5. read.dta()
Fondamentalement, cela est déjà suffisant pour importer un ensemble de
données, comme le montre cet appel à importer l'ensemble de données de
ponctualité des compagnies aériennes américaines.
6. read.dta()
Jetez un œil à la structure de cette trame de données. La variable Compagnie
aérienne est déjà un facteur. Cela est dû au fait que l'argument convert dot factor
de la fonction read dot dta est TRUE par défaut. Cela crée ensuite
automatiquement des facteurs à partir des valeurs STATA étiquetées. C'est
quelque chose que vous deviez faire manuellement dans le package Haven avec
as_factor, vous vous souvenez ?
7. read.dta() - convert.factors
Voyons ce qui se passe si nous définissons les facteurs de points de conversion
sur FALSE. La colonne Compagnie aérienne est maintenant entière. Ces
informations sur les compagnies aériennes sont-elles alors perdues ? Pas du tout.
Notez toutes les informations stockées dans les attributs du bloc de données. À
partir de l'attribut version, par exemple, vous pouvez dire que nous avons affaire
à un fichier STATA 7. L'attribut de table de points d'étiquette contient un
mappage entre les codes de compagnies aériennes entiers et leurs noms réels.
Pour travailler facilement avec l'ensemble de données, vous voudrez cependant
vous en tenir à l'argument par défaut des facteurs de points de conversion, qui
est VRAI.
9. SPSS
L'importation de fichiers SPSS à l'étranger fonctionne de la même manière.
Cette fois cependant, vous aurez besoin de la fonction read dot spss. Pas très
surprenant n'est-ce pas ? Jetez un autre coup d'œil à une version réduite de son
utilisation. Comme d'habitude, le chemin du fichier vient en premier. Pour le
reste, tous les noms d'arguments sont différents lorsque vous les comparez à la
fonction read dta d'avant. C'est ce que je voulais dire par pas vraiment cohérent
avant "utiliser des étiquettes de points de valeur de point", qui est VRAI par
défaut, spécifie si les variables qui sont des vecteurs étiquetés dans SPSS
doivent être converties en facteurs R. Cet argument est donc similaire à
l'argument du facteur de point converti à partir des données lues. L'argument 'to
dot data dot frame' indique à R s'il faut ou non renvoyer les données SPSS sous
forme de trame de données. Étrangement, c'est FALSE par défaut, qui a une liste
étrangère contenant toutes les colonnes différentes. Mais vous savez déjà qu'un
bloc de données est simplement un type spécial de liste, donc la différence n'est
pas si grande. A côté de ces deux arguments, il y en a beaucoup d'autres, tels que
les noms de facteurs de rognage, les valeurs de rognage et l'utilisation des
manquants. Leur objectif est souvent similaire à ce que vous avez vu pour la
fonction read dot dta, mais pas toujours. Foreign vise un traitement spécifique
des différents types de fichiers de données. Cela ne profite pas à la cohérence,
mais offre un contrôle total sur la manière dont les fichiers de données sont
réellement importés. Pour en savoir plus sur l'import de données avec l'étranger,
vous pouvez toujours consulter la documentation. Mais garde ça pour plus tard,
Leur objectif est souvent similaire à ce que vous avez vu pour la fonction read
dot dta, mais pas toujours. Foreign vise un traitement spécifique des différents
types de fichiers de données. Cela ne profite pas à la cohérence, mais offre un
contrôle total sur la manière dont les fichiers de données sont réellement
importés. Pour en savoir plus sur l'import de données avec l'étranger, vous
pouvez toujours consulter la documentation. Mais garde ça pour plus tard, Leur
objectif est souvent similaire à ce que vous avez vu pour la fonction read dot dta,
mais pas toujours. Foreign vise un traitement spécifique des différents types de
fichiers de données. Cela ne profite pas à la cohérence, mais offre un contrôle
total sur la manière dont les fichiers de données sont réellement importés. Pour
en savoir plus sur l'import de données avec l'étranger, vous pouvez toujours
consulter la documentation. Mais garde ça pour plus tard,
10. Entraînons-nous !
dirigez-vous d'abord vers les exercices interactifs pour vous entraîner. Vous y
verrez comment différents arguments influencent la façon dont les données sont
importées.
Dans cet exercice, vous importerez des données sur les élections présidentielles
américaines de l'an 2000. Les données dans florida.dta contiennent le nombre
total de votes pour chacun des quatre candidats ainsi que le nombre total de
votes par zone électorale dans l'État de Floride (Source : Département d'État de
Floride ). Le fichier est disponible dans votre répertoire de travail, vous pouvez
le télécharger ici si vous souhaitez en expérimenter davantage.
Instructions
Chargez le foreign paquet ; il est déjà installé sur les serveurs de DataCamp.
Importez les données sur les élections en Floride "florida.dta", et nommez le
bloc de données résultant florida. À utiliser read.dta() sans spécifier d'arguments
supplémentaires.
Découvrez les 6 dernières observations de florida with tail()
Par exemple, vous pouvez vous demander combien d'observations (par exemple
combien de personnes) ont une valeur agesupérieure à 40 et sont literate? Quand
vous appelez
str(edu_equal_1)
Vous verrez qu'il ages'agit d'un nombre entier et d' literateun facteur, avec les
niveaux "oui" et "non". L'expression suivante répond donc à la question :
Excursion : Corrélation
Si vous êtes familier avec les statistiques, vous avez entendu parler de la
corrélation de Pearson. C'est une mesure pour évaluer la dépendance linéaire
entre deux variables, disons et . Il peut aller de -1 à 1 ; s'il est proche de 1, cela
signifie qu'il existe une forte association positive entre les variables. Si est élevé,
aussi a tendance à être élevé. S'il est proche de -1, il existe une forte association
négative : Si est haut, a tendance à être faible. Lorsque la corrélation de Pearson
entre deux variables est de 0, ces variables sont éventuellement indépendantes :
il n'y a pas d'association entre et .
cor(size$height, size$width)
Les données avec lesquelles vous avez travaillé dans l'exercice précédent,
international.sav , sont à nouveau disponibles dans votre répertoire de travail. A
vous maintenant de l'importer et d'effectuer les bons calculs pour répondre à la
question suivante :
Quel est le coefficient de corrélation pour les deux variables numériques gdpet
f_illit(taux d'analphabétisme féminin) ?
Instructions
Des réponses possibles
La corrélation est d'environ -0,45. Il y a une corrélation négative, mais elle est
plutôt faible.
La valeur du coefficient de corrélation est égale à -0,4476856, pour être précis.
Cela indique une association négative entre le PIB et l'analphabétisme féminin.