Dotnet Interactive で分析する

· Read in about 2 min · (622 words) ·

本稿は基本的には執筆中のC#とJupyter Notebookによるデータ分析クックブックからの抜粋になります。フルバージョンは技術書典で。

.NET Interactive とは

.NET Interactiveはデータサイエンティスト向けにJupyter Notebook上に.NETの所謂REPLを提供してくれる仕組みです。

基本的には、以下の構造からなります。

  • Notebooks: Jupyter, nteract, and Visual Studio Code
  • Code bots
  • Devices like Raspberry Pi
  • Embeddable script engines
  • REPLs

環境の構築

本稿ではWindows 10 (201909)上に構築された、WSL上のUbuntu 18.04に環境を構築することを前提としている。 環境が異なる場合には、異なる設定がいるかもしれないことをあらかじめ記述しておきます。202010で現在、再検証中です。

Anaconda環境の構築

pyenvをインストールする

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

Anacondaをインストールする

pyenv install -l | grep ana
pyenv install anaconda3-yyyy.MM
pyenv rehash
pyenv global anaconda3-yyyy.MM
conda update conda
conda init bash
source ~/.bashrc

.NET 5環境の構築

wget -nv https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt update
sudo apt install apt-transport-https -y
sudo apt install dotnet-sdk-5.0 -y

.NET InteractiveとJupyter Kernelのインストール

dotnet tool install -g --add-source "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" Microsoft.dotnet-interactive
dotnet interactive jupyter install

Jupyterでの分析の実施

パッケージのロード

まず、nugetから必要なパッケージを導入します。

#r "nuget:Microsoft.Data.Analysis, 0.2.0"
#r "nuget:MathNet.Numerics,4.9.0"
#r "nuget:XPlot.Plotly"

Installing package Microsoft.Data.Analysis, version 0.2.0……………done!
Successfully added reference to package Microsoft.Data.Analysis, version
Installing package MathNet.Numerics, version 4.9.0…..done!
Successfully added reference to package MathNet.Numerics, version
Installing package XPlot.Plotly……done!
Successfully added reference to package XPlot.Plotly, version

導入したパッケージの名前空間を取り込みます。

using MathNet.Numerics;
using Microsoft.Data.Analysis;
using System;
using XPlot.Plotly;

静的メソッドである、LoadCsvを使ってCSVを読み込みます。

var df = Microsoft.Data.Analysis.DataFrame.LoadCsv("Data/german.csv");