Code Monkey home page Code Monkey logo

python-datascientist's Introduction

Python pour la data science

build-doc Actions Status

Download nbviewer Onyxia
Binder Open In Colab githubdev

DOI

Ce dépôt Github stocke les fichiers sources ayant permis de construire le site https://pythonds.linogaliana.fr/.

Il s'agit de l'ensemble du cours Python pour la data science que je donne en deuxième année (Master 1) de l'ENSAE.

Syllabus

Le syllabus est disponible sur le site de l'ENSAE et sur le site web du cours.

Globalement, il propose un contenu très complet pouvant autant satisfaire des débutants en data science que des personnes à la recherche de contenu plus avancé :

  1. Manipulation de données : manipulation de données standards (Pandas), données géographiques (Geopandas), récupération de données (webscraping, API)...
  2. Visualisation de données : visualisations classiques (Matplotlib, Seaborn), cartographie, visualisations réactives (Plotly, Folium)
  3. Modélisation : machine learning (Scikit), économétrie
  4. Traitement de données textuelles (NLP): découverte de la tokenisation avec NLTK et SpaCy, modélisation...
  5. Introduction à la data science moderne : cloud computing, ElasticSearch, intégration continue...

L'ensemble du contenu de ce site s'appuie sur des données ouvertes, qu'il s'agisse de données françaises (principalement issues de la plateforme centralisatrice data.gouv ou du site web de l'Insee) ou de données américaines.

Un bon complément du contenu du site web est le cours que nous donnons avec Romain Avouac (@avouacr) en dernière année de l'ENSAE plus tourné autour de la mise en production de projets data science : https://ensae-reproductibilite.github.io/website/

Tester les codes Python

Il est possible d'utiliser une installation personnelle de Python ou des serveurs partagés. Sur le site web, une série de boutons sont mis à disposition pour faciliter les tests des exemples sur des notebooks Jupyter dans la configuration qui vous sied le mieux.

Voici, par exemple, ces boutons pour le tutoriel numpy

Download nbviewer Onyxia
Binder Open In Colab githubdev

Utilisation de l'image Docker

[![Docker Pulls](https://img.shields.io/docker/pulls/linogaliana/python-datascientist)](https://hub.docker.com/repository/docker/linogaliana/python-datascientist/general)

Pour améliorer la reproductibilité des exemples, une image Docker est automatiquement construite et mise à disposition depuis DockerHub.

Construction du site web

Le site est construit de manière automatique grâce à Quarto à partir d'un environnement conteneurisé Docker La reproductibilité des exemples et des exercices est testée avec Github Actions (build-doc Actions Status). Les notebooks sont générés de manière à être cohérente avec le site web et sont maintenant stockés sur un dépôt à part.

L'environnement Conda nécessaire pour faire tourner l'ensemble du cours est disponible dans un fichier environment.yml. Il est recommandé d'utiliser la conda-forge afin de bénéficier de versions récentes des packages.

python-datascientist's People

Contributors

antoine-palazz avatar antuki avatar avouacr avatar expressso avatar jblaval avatar jpramil avatar konkinit avatar lbaudin avatar linogaliana avatar raphaeleadjerad avatar romanegajdos avatar taminemelissa avatar thomasfaria avatar tomseimandi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

python-datascientist's Issues

Plan partie visualisation

Le parti-pris est d'utiliser les données de compteur de vélo

Graphiques traditionnels:

  • matplotlib
  • seaborn
  • plotly

Cartographie:

  • geoplot
  • contextily

Quel package pour la carto dynamique ?

Ressources

https://r4ds.had.co.nz/data-visualisation.html#introduction-1
http://vita.had.co.nz/papers/layered-grammar.pdf
https://jakevdp.github.io/PythonDataScienceHandbook/04.00-introduction-to-matplotlib.html
https://linogaliana.gitlab.io/documentationR/faire-des-graphiques-avec-ggplot2.html

Choix des bases de données d'exemple

Essai de lister les pros/cons des différentes sources de données

openfoodfacts

Données ici

openfood = pd.read_csv("C:/Users/W3CRK9/Downloads/en.openfoodfacts.org.products.csv",
                       nrows = 1000, sep = "\t")
openfood.head()
Pros Cons
Données de nature différente Données pas très propre
Sympa pour le NLP Volumineux pour une découverte de pandas

velib

Données ici: pour la partie API ?

Données ici pour la partie carto ?

Réseau cyclable

Données du réseau cyclable

Données ademe

Il y a ces données qui ont une structure pas mal (url datagouv et site ademe)

url de requête: https://data.ademe.fr/datasets/igt-pouvoir-de-rechauffement-global

Compteurs de vélo

https://opendata.paris.fr/explore/dataset/comptage-velo-donnees-compteurs/map/?disjunctive.id_compteur&disjunctive.nom_compteur&disjunctive.id&disjunctive.name&basemap=jawg.dark&location=14,48.85493,2.35223
Exemple d'exo: refaire ça

Voies d'amélioration du cours

Quelques remarques des élèves:

  • parfois des temps morts en classe: trouver une manière d'éviter d'être bloqué (cf. #137)
  • proposer des exercices complémentaires pour s'entraîner
  • passer moins de temps sur les parties 1 et 2 pour passer plus de temps sur les parties 3 et 4

Licence

Chantier prioritaire: licence. Creative commons ?

Évolution du programme du cours

Voici un plan un peu enrichi pour la future version 2 du cours

Manipulation

  1. Numpy puis Pandas
  2. Geopandas
  3. Données plus volumineuses: postgre, dask, spark
  4. Import de données à la structure plus complexe : webscraping, API

Visualisation et communication

C'est la partie qui mérite le plus d'enrichissement

  1. Matplotlib et seaborn
  2. Cartographie
  3. Sites web : Django etc.
  4. Jupyterbook et R Markdown

modélisation

  • Ajouter un peu de deep learning à la partie déjà faite
  • Evoquer fasttext

Image docker

Il va falloir songer à préparer une image docker car il va y avoir beaucoup de dépendances dans ce cours

Mettre à jour le README

Plusieurs modifs à envisager:

  • Mieux expliquer la structure du cours et du dépôt
  • Mieux expliquer la manière dont on peut contribuer

Intégration des figures matplotlib dans le site

En local, la compilation en .md me permet de voir l'output des chunks utilisant matplotlib. Mais sur le site construit par hugo, via netlify, ce n'est pas le cas. C'est parce que Rmarkdown stocke les figures dans un dossier _files que je ne git pas.

Comment gérer cette affaire ?

Mise en forme des TPs 4

Les TP 4 ont été intégrés de manière un peu sauvage. Il faut les mettre en forme un peu

Tutoriel git

Une partie spécifique à git avec l'explication du principe et les commandes de base à faire

Le plus naturel est de le mettre dans un onglet à part

Tutoriel SQL

Il faut préparer un tutoriel minimal SQL: select, join, etc.

Test automatique des liens pour détecter les erreurs 404

💡 Tester, avec un script python, les liens donnés pour vérifier qu'ils ne soient pas morts (erreur 404). Utiliser de beautiful soup possible.

Pas prioritaire car compliqué à mettre en place:

  1. screen tous les .md pour extraire les liens (structure ![]())
  2. check que la page propose un contenu (d'abord data (ex: csv), ensuite html)

Des box plus esthétiques

Les box du thème techdoc ne sont pas très belles. Il faudrait les faire ressembler plutôt aux box des jupyterbook, plus esthétiques

Utilisation du css pour les .ipynb

#58 a permis de créer des box très esthétiques pour le site web, à la manière de jupyterbook. Il faudrait pouvoir utiliser les mêmes éléments css dans les .ipynb

Plan partie modélisation

Après le premier SVM et les premières régression (linéaire, logistique)

I - Suite Machine Learning standard:

  1. Réduction dimension
    • ACP
    • Lasso
  2. Clustering
    • kmeans

II - NLP

III - Intro au deep learning

OLD

Les plans qu'on peut trouver sur internet

Des jeux de données intéressants:
https://medium.com/towards-artificial-intelligence/best-datasets-for-machine-learning-data-science-computer-vision-nlp-ai-c9541058cf4f
https://elitedatascience.com/datasets
Prédiction: https://medium.com/@nicholasutikal/predict-football-results-with-random-forest-c3e6f6e2ee58

Cours Andrew Ng

https://www.coursera.org/learn/machine-learning

Cours edX by IBM

https://www.edx.org/course/machine-learning-with-python-a-practical-introduct

Module 1 - Introduction to Machine Learning
Applications of Machine Learning
Supervised vs Unsupervised Learning
Python libraries suitable for Machine Learning

Module 2 - Regression
Linear Regression
Non-linear Regression
Model evaluation methods

Module 3 - Classification
K-Nearest Neighbour
Decision Trees
Logistic Regression
Support Vector Machines
Model Evaluation

Module 4 - Unsupervised Learning
K-Means Clustering
Hierarchical Clustering
Density-Based Clustering

Module 5 - Recommender Systems
Content-based recommender systems
Collaborative Filtering

Livre Machine Learning avec Python

Dépôt Github: https://github.com/amueller/introduction_to_ml_with_python

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.