zarque_profiling: 日本語も扱えるPython EDAパッケージ ydata_profiling（旧pandas_profiling）のPolars版


## **目次**  
1. [zarque_profilingの概要](#1-zarque_profilingの概要)  
    1. zarque_profilingとは  
    2. Polarsってなに？  
    3. zarque_profilingのGitHubリポジトリリンク  
2. [pandas_profilingとの比較](#2-pandas_profilingとの比較)  
    1. ydata_profilingへの変更点  
    2. 日本語データでの課題  
    3. zarque_profilingの特徴とメリット  
3. [zarque_profilingの実践](#3-zarque_profilingの実践)  
    1. 日本語対応  
    2. 実際のコード例
4. [まとめ](#4-まとめ)

---

## **1. zarque_profilingの概要**

### **1.1 zarque_profilingとは**  
`zarque_profiling`は、`ydata_profiling`（旧pandas_profiling）の高速版で、Polarsを基盤としてデータプロファイリングを行うPythonライブラリです。  
従来のpandasベースのydata_profilingに比べ、以下の特徴があります：
- **3倍以上の速度**でプロファイリングが可能。（ベンチマーク上）
- **大規模データ**への対応。ydata_profilingでメモリに乗らなかったものも扱える。
- **Polars**を活用した効率的なデータ処理。

### **1.2 Polarsってなに？**  
PolarsはRustで実装された列指向データフレームライブラリです。その性能は非常に高く、大規模データ分析に適しています。  
Polarsの特徴：
- 高速
- メモリ効率がいい。
- 遅延評価が出来る。

Polarsについては他の記事で多くの方がまとめてくださっているので、詳しくはそちらをご参照ください。

https://gihyo.jp/article/2023/02/monthly-python-2302

https://qiita.com/_jinta/items/fac13f09e8e8a5769b79

### **1.3 zarque_profilingのGitHubリポジトリ**  
公式リポジトリはこちら：[https://github.com/crescendo-medix/zarque-profiling](https://github.com/crescendo-medix/zarque-profiling)

---

## **2. pandas_profilingとの比較**

### **2.1 ydata_profilingへの変更点**  
pandas_profilingは、EDA（Exploratory Data Analysis）のツールとして人気がありましたが、現在は`ydata_profiling`という名前に変更されました。
このツールはpythonコード1行でデータのEDAが出来るため、とても便利なツールでした。
こちらについても、説明されている方のリンクを添付させていただきます。
https://datatechlog.com/how-to-use-pandas-profiling/

公式の説明はこちら：[https://docs.profiling.ydata.ai/latest/](https://docs.profiling.ydata.ai/latest/)

### **2.2 日本語データでの課題**  
`ydata_profiling`では、以下のような日本語データ特有の問題が報告されています：  
- **カラム名やデータが豆腐化（文字化け）する**: 日本語がHTMLレポート内で適切に表示されないケースがあります。

この記事では下記データを扱います。（vscode上で行っています。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2332816/e650c703-a13b-9f56-4603-58a922bae21e.png)



以下は`ydata_profiling`で日本語カラム名を含むデータを扱った場合のサンプル出力です：

```python
from ydata_profiling import ProfileReport
# pandas-profilingレポートの作成
profile = ProfileReport(df, title="Pandas Profiling Report")

# レポートの表示
profile.to_notebook_iframe()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2332816/bc5e71c6-da04-182f-50f1-c00d2e5cc5d5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2332816/59de9c35-1770-8877-f285-45206a834d74.png)

ヒートマップの「年収」が文字化けしています。

この問題は、`zarque_profiling`ではフォントファミリーを指定することで回避できます。また、Polarsのパフォーマンスを活用することで、日本語データでもスムーズに分析が可能です。

### **2.3 zarque_profilingの特徴とメリット**  
1. **Polarsベース**: Pandasの代わりにPolarsを採用することで、大規模データの処理速度が向上。  
2. **日本語対応が容易**: `font_family`オプションで日本語フォントを設定するだけで、豆腐化を回避可能。  
3. **同様の機能**: pandas_profilingと同じレポートや分析機能を提供。  
4. **プロファイリングモード**:
   - **minimal=True (デフォルト)**: 必要最低限の分析。  
   - **minimal=False**: 最大限の詳細分析（大規模データには非推奨）。  

## **3. zarque_profilingの実践**

### **3.1 日本語対応**  
`zarque_profiling`では、日本語を含むデータセットを適切に表示するため、`font_family`オプションを使用します。以下の設定例では、IPAexGothicフォントを指定しています。

```python
ProfileReport(
    df,
    minimal=True,
    font_family="IPAexGothic"  # 日本語フォントの指定
)
```

### **3.2 実際のコード例**  

```python
# ライブラリのインポート
import polars as pl
from zarque_profiling import ProfileReport

# プロファイリングレポートを生成
profile = ProfileReport(df, minimal=False,title="Polars Profiling Report",font_family="IPAexGothic")
# レポートの表示
profile.to_notebook_iframe()
```
以下はサンプル出力です：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2332816/23b755fb-c4d5-2452-881a-b5e74bc8f71a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2332816/035cf275-2df0-f058-c483-47dd8e03c1ea.png)

文字化けせずにできました。


## **4. まとめ**  
`zarque_profiling`は、大規模データセットのプロファイリングを高速かつ簡単に実現するツールです。日本語データ対応やPolarsの高速性を活かし、これまで`pandas_profiling`では扱いづらかったデータもスムーズに分析可能です。以下を活用してください：
- **日本語対応**でストレスフリーなEDA。  
- **大規模データ**でも迅速にレポート生成。  

**リンク**: [zarque_profiling GitHub](https://github.com/ydataai/zarque_profiling)