Skip to content

Latest commit

 

History

History
217 lines (152 loc) · 5.87 KB

nJuliaData.md

File metadata and controls

217 lines (152 loc) · 5.87 KB
author tags
emchateau
julia

Julia Data

Travailler avec des données

Opération courantes pour manipuler des données

Read

  • CSV
  • Parquet
  • SASLibe
  • ReadStat
  • JSON, JSON2, JSON3
  • LightXML, EzXML
  • XLSX, ExcelReaders, Taro
  • PDFIO

Clean, Tidy, Analyse

  • DataFrames
  • DataFramesMeta
  • Query
  • JuliaDB, JuliaDBMeta

Visualize

Nettoyer des fichiers CSV

Les fichiers peuvent être assez librement formé, ils peuvent parfois comporter une ligne d’entête, utiliser des séparateurs différents. En raison de cette hétérogénéité, il peut parfois être difficile de manipuler des fichiers CSV. La librairie CSV.jl offre de nombreuses fonctionnalités facilitant l’utilisation de données au format CSV.

Pour nettoyer les fichiers, il est notamment possible de :

  • de supprimer des colonnes inutiles
  • de supprimer les lignes avec des valeurs nulles
  • renommer les colonnes
  • régler les problèmes de type de données
  • etc.

Opération courantes pour le nettoyage de données avec les DataFrame

# Take a quick overview of data
describe(df)
# Keep good columns or delete bad ones
select!(df, 1:5)
select!(df, Not(["badcol1", "badcol2"]))
# Fix column names
rename!(df, "Region Name" => "region_name")
# Remove rows having missing data
dropmissing!(df)
drompmissing!(df, Between(:x3, :x5))

Tip : utiliser Not et Between pour sélectionner les données

Des données biens structurées présentent un certain nombre de caractéristiques

  • chaque variable forme une colonne
  • chaque observation forme une ligne
  • chaque type d’unité d’observation forme un tableau

Il est donc parfois nécessaire de décomposer des tableaux pour regrouper les informations par ligne de sorte que chaque ligne constitue une observation. Cette transformation des données facilite souvent leur traitement et leur représentation graphique.

Opérations courantes pour la préparation des données

stack et unstackpermettent de modifier la présentation des données

# Stack all date columns into rows, the new column names are stored in a new column Date
sdf = stack(df, Not(:RegionName); variable_name = :Date)
sdf = stack(df, Not(1); variable_name = :Date)
sdf = stack(df, 2:5; variable_name = :Date)
# Date column is a CategoricalArray type, make it a Date type
sdf.Date = [Date(get(x)) for x in sdf.Date]
# How to turn it back to a wide format ?
df2 = unstack(sdf, :Date, :value)
# It may introduce Union{Missing, T} column type, let’s fix it
disallowmissing!(df2, 2:5)

Analyse des données

Opérations courantes pour analyser les données

# Select by column
select(df, :RegionName, 4:5)
# Filter (alors le DataFrame est le 2e argument)
filter(:RegionName => ==("Abilene, TX"), df)
filter("2020-01-31" => >(400_000), df)

L’opérateur => est un opérateur qui forme paire. == est une fonction anonyme, une clôture capture une valeur...

# Sort
sort(df, :RegionName)
sort(df, :RegionName, rev = true)

Une manière d’appliquer une fonction à chacune des cellules

# Transform (add new columns)
transform(df, :RegionName => ByrRow(length) => :RegionNameLength)

Regroupement des données

# Group the row by certain column(s)
groupby(sdf, :Date)
# Summarize the grouped data
combine(groupby(df, :Date), :value => mean => :avg)

Construction de pipelines

@pipe sdf |>
		groupby(_, :Date) |>
		combine(_, :value => mean => :avg)

Jointures

# Let’s say we have a reference data frame
country = DataFrame(Name = ["United States"])
# Joining data
innerjoin(df, counrty, on = [:RegionName => :Name])
leftjoin(df, counrty, on = [:RegionName => :Name])
rightjoin(df, counrty, on = [:RegionName => :Name])
outerjoin(df, counrty, on = [:RegionName => :Name])

semijoin(df, counrty, on = [:RegionName => :Name])
antijoin(df, counrty, on = [:RegionName => :Name])

Visualisation

Toutes ces données manipulées peuvent être visualisées pour les explorer. Il existe de nombreux packets pour la visualisation de données.

Avec Plots.jl, de nombreux graphes standards sont disponibles (plot, scatter, histogramme, heatmap, bar, etc.). StatsPlots.jl (groupbar, corrplot, marginhist, boxplot, violin, etc.).

Mise en pratique

Importation d’un fichier CSV

Exploitation d’un grand tableau de données

Description du tableau

Stack du tableau

possibilité de faire apparaître le type des colonnes

Filtrer pour voir toutes les lignes contennant un... utilisant broadcasting

Divers

YAML.jl

https://github.com/JuliaData/YAML.jl

YAML is a flexible data serialization format that is designed to be easily read and written by human beings. This library parses YAML documents into native Julia types and dumps them back into YAML documents.

Références

https://github.com/JuliaCommunity/YouTubeVideoTimestamps/tree/main/videos