Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
7a1e14c
Merge pull request #6 from Hirototensho/develop
Hirototensho Dec 31, 2025
691e5df
Merge pull request #7 from Hirototensho/develop
Hirototensho Dec 31, 2025
fca396f
Merge pull request #8 from Hirototensho/develop
Hirototensho Dec 31, 2025
1a3c966
Merge pull request #9 from Hirototensho/develop
Hirototensho Jan 1, 2026
2a7cf2b
Merge pull request #10 from Hirototensho/develop
Hirototensho Jan 1, 2026
2873115
Merge pull request #11 from Hirototensho/develop
Hirototensho Jan 1, 2026
b83da88
Merge pull request #12 from Hirototensho/develop
Hirototensho Jan 6, 2026
a1e8990
Merge pull request #13 from Hirototensho/develop
Hirototensho Jan 8, 2026
49d5a47
Merge pull request #15 from Hirototensho/develop
Hirototensho Jan 9, 2026
74ae277
Merge pull request #16 from Hirototensho/develop
Hirototensho Jan 11, 2026
7ed0918
Merge pull request #17 from Hirototensho/develop
Hirototensho Jan 11, 2026
e5dd759
Merge pull request #18 from Hirototensho/develop
Hirototensho Jan 12, 2026
1f73fee
Merge pull request #19 from Hirototensho/develop
Hirototensho Jan 12, 2026
83f307c
Merge pull request #20 from Hirototensho/develop
Hirototensho Jan 12, 2026
f0e9d8c
Merge pull request #21 from Hirototensho/develop
Hirototensho Jan 12, 2026
fa8372d
Merge pull request #22 from Hirototensho/develop
Hirototensho Jan 16, 2026
f71f1c6
Merge pull request #23 from Hirototensho/develop
Hirototensho Jan 16, 2026
d726d4a
Merge pull request #24 from Hirototensho/develop
Hirototensho Jan 16, 2026
ed50a48
Merge pull request #25 from Hirototensho/develop
Hirototensho Jan 19, 2026
b1bc22a
Merge pull request #27 from Hirototensho/develop
Hirototensho Jan 23, 2026
b01d4f5
Merge pull request #28 from Hirototensho/develop
Hirototensho Jan 23, 2026
402c5d3
quarto の作成に向けたディレクトリ構造の変更
Hirototensho Jan 23, 2026
348439f
quarto book によるドキュメントの作成
Hirototensho Jan 23, 2026
a8cc6e3
README.md のリンク修正
Hirototensho Jan 23, 2026
dbe332a
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
4107032
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
f4cc07c
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
2b9a66b
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
aacc877
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
5dbefd0
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
75b5f43
README.md のリンクを再度修正
Hirototensho Jan 23, 2026
fd34886
docs のディレクトリ構成を修正しました。
Hirototensho Jan 23, 2026
5265481
README.md を修正しました。
Hirototensho Jan 23, 2026
5fbb877
README.md を調整中です。
Hirototensho Jan 23, 2026
d65291a
README.md を調整中です。
Hirototensho Jan 23, 2026
703e0a4
Quarto Book にリポジトリへのリンクを追加しました。
Hirototensho Jan 23, 2026
1276afe
リポジトリへのリンクを修正しました。
Hirototensho Jan 23, 2026
0582873
Quarto Book に scaling_up_regression.qmd を追加しました。
Hirototensho Jan 23, 2026
2eea12d
章タイトルを中心に Quarto book の体裁を修正しました。
Hirototensho Jan 24, 2026
7cb3690
introduction.qmd の微調整
Hirototensho Jan 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ venv/
# packaging/build artifacts
*.egg-info/
build/
dist/
dist/
/.quarto/
**/*.quarto_ipynb
21 changes: 15 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# `Py4Stats`

 `Py4Stats` は、主に実証研究で用いられる、探索的データ分析および回帰結果レポート用のユーティリティライブラリで、回帰分析を中心とする分析でよく使われるR言語の機能を、Python で実装しています。本ライブラリの主な機能は [**Get started**](./INTRODUCTION.md) を、実装されている関数の一覧は [**Function reference**](./reference.md) を参照してください。
`Py4Stats` は、主に実証研究で用いられる、探索的データ分析および回帰結果レポート用のユーティリティライブラリです。回帰分析を中心とする分析でよく使われるR言語の機能を Python で実装しています。

## 📚 Documentation

Explore the full documentation (Quarto Book) at:

- [🏠 **Full Docs**](https://hirototensho.github.io/Py4Stats/)
- [🚀 **Get Started**](https://hirototensho.github.io/Py4Stats/introduction.html)
- [📖 **API Reference**](https://hirototensho.github.io/Py4Stats/reference.html)

## Installation

Expand All @@ -22,7 +30,7 @@
import py4stats as py4st
```

[`py4stats.diagnose()`](man/diagnose.md) 関数はデータの全般的な状態についての要約を提供します。
[`py4stats.diagnose()`](docs/docs/man/diagnose.html) 関数はデータの全般的な状態についての要約を提供します。

``` python
import pandas as pd
Expand All @@ -41,7 +49,7 @@ print(py4st.diagnose(penguins).round(4))
#> 7 year int64 0 0.0000 3 0.8721
```

[`py4stats.compare_ols()`](man/compare_ols.md) 関数は、計量経済学の実証論文でよく用いられる、回帰分析の結果を列方向に並べて比較する表を作成します。
[`py4stats.compare_ols()`](docs/docs/man/compare_ols.html) 関数は、計量経済学の実証論文でよく用いられる、回帰分析の結果を列方向に並べて比較する表を作成します。


``` python
Expand Down Expand Up @@ -75,9 +83,10 @@ compare_tab1
| df | 3 | 4 | 5 |


詳細は、[`py4stats.compare_ols()`](man//compare_ols.md) を参照してください。 
詳細は、[`py4stats.compare_ols()`](docs/docs/man/compare_ols.html) を参照してください。 

***
[Jump to **Function Get started**.](./INTRODUCTION.md)
[Jump to **Function reference**.](./reference.md)
[Jump to **Full Docs**.](https://hirototensho.github.io/Py4Stats/)
[Jump to **Get started**.](https://hirototensho.github.io/Py4Stats/introduction.html)
[Jump to **Function reference**.](https://hirototensho.github.io/Py4Stats/reference.html)

75 changes: 75 additions & 0 deletions _quarto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
project:
type: book
output-dir: docs
book:
title: "Py4Stats"
chapters:
- index.qmd
- introduction.qmd
- reference.qmd
- part: "**EDA**"
chapters:
- man/diagnose.qmd
- man/tabyl.qmd
- man/freq_table.qmd
- man/Pareto_plot.qmd
- man/plot_category.qmd
- man/diagnose_category.qmd
- man/point_range.qmd
- man/remove_empty_constant.qmd
- man/filtering_out.qmd
- man/relocate.qmd
- man/compare_df_cols.qmd
- man/compare_group_stats.qmd
- man/plot_miss_var.qmd
- man/set_miss.qmd
- man/scale_wmean.qmd
- man/predicate_str.qmd
- man/is_dummy.qmd
- man/varidate.qmd
- part: "**Regression**"
chapters:
- man/compare_ols.qmd
- man/compare_mfx.qmd
- man/coefplot.qmd
- man/tidy.qmd
- man/tidy_test.qmd
- man/glance.qmd
- man/Blinder_Oaxaca.qmd
- part: "**heckit_helper**"
chapters:
- man/tidy_heckit.qmd
- man/Heckit_from_formula.qmd
- man/heckitmfx_compute.qmd
- part: "**building_block**"
chapters:
- man/arg_match.qmd
- man/assert_dtype.qmd
- man/is_dtype.qmd
- man/miscellaneous.qmd
- man/style_pvalue.qmd
- man/oxford_comma.qmd
- part: "**Articles**"
chapters:
- articles/release_notes.qmd
- articles/scaling_up_regression.qmd
- articles/narwhals_in_py4stats.qmd
- articles/eda_tools_development_status.qmd
- articles/narwhalsについての考察.qmd
site-url: https://github.com/Hirototensho/Py4Stats
repo-url: https://github.com/Hirototensho/Py4Stats
# repo-branch: main # main に変更したら、こちらを使います。
repo-branch: experiment/quarto
repo-actions: [source]
format:
html:
theme: cosmo
css: theme.scss
code-link: true
callout-appearance: default # callout については https://quarto.org/docs/authoring/callouts.html を参照
grid:
sidebar-width: 250px # サイドバー幅の最大値
body-width: 1000px # メイン本文幅の最大値
margin-width: 150px # 余白幅の最大値

number-sections: false
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
## eda_toolsの開発状況
2026年1月22日
# eda_toolsの開発状況
2026年1月24日

## 関数の実装状況一覧

**eda_toolsの開発状況**
| functions | Input | Pandas | Polars | Pyarrow | 補足 |
|:---------------------|:-----------------|:---------|:---------|:----------|:------------------------------------------|
| Mean | pd.Series | ✅ | ❌ | ❌ | pd.DataFrame.eval() での使用を想定した関数 |
Expand Down Expand Up @@ -42,6 +43,8 @@
| tabyl | DataFrame | ✅ | ⭕️ | ⭕️ | 一部の処理が Pandas 依存 |
| weighted_mean | Series | ✅ | ✅ | ✅ | |

: 関数の実装状況一覧 {.striped .hover}

## 凡例

- ✅ 実装済/テスト済
Expand Down
Binary file added articles/eda_tools開発状況.xlsx
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

本ライブラリの動作確認は、基本的に `pandas.DataFrame` を用いて実施しています。そのため、`polars` や `pyarrow` を使用した場合には、バックエンド固有の仕様差や未検証の挙動により、一部の関数でエラーが発生する可能性があります。そのような挙動が確認された場合は、**Issue 等での報告を歓迎**します。

 また、バックエンド別の実装状況については [eda_tools開発状況](eda_tools開発状況.md) も参照して下さい。
 また、バックエンド別の実装状況については [eda_tools開発状況](eda_tools_development_status.qmd) も参照して下さい。

## narwhals を用いた関数の返り値の型について

`py4stats.eda_tools` モジュールの関数のうち、[`py4stats.diagnose()`](../man/diagnose.md) など、第一引数にデータフレームを取る関数の返り値の型は、`to_native` 引数の値によって変化します。<br>
`py4stats.eda_tools` モジュールの関数のうち、[`py4stats.diagnose()`](../man/diagnose.qmd) など、第一引数にデータフレームを取る関数の返り値の型は、`to_native` 引数の値によって変化します。<br>
 初期設定である `to_nativ = True` の場合には、第一引数に入力されたデータフレームと同じ型のデータフレームが出力され、`to_nativ = False` の場合には `narwhals.DataFrame` 型のデータフレームが出力されます。`to_nativ = False` のオプションは、主にライブラリ内部での利用や、データフレームのバックエンドに依存しない後続処理を行いたい場合を想定したオプションです。

``` python
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Pandas の場合、2つのデータフレーム `df1` と `df2` が共通の col

Pandas の場合、`df.loc[i, j] = x` という形でデータフレーム `df` の i, j 要素に値 `x` を代入することができますが、narwhals ではこれに相当する演算 `df[i, j] = x` は禁止されています。

異なるデータフレーム間の二項演算に制約があること、そしてデータフレームへの値の代入が難しいことから、[`tabyl()`](../man/tabyl.md) 関数では、集計後の作表処理の一部を Pandas に依存しています。
異なるデータフレーム間の二項演算に制約があること、そしてデータフレームへの値の代入が難しいことから、[`tabyl()`](../man/tabyl.qmd) 関数では、集計後の作表処理の一部を Pandas に依存しています。

### 任意の関数でグループ別集計を行う

Expand All @@ -28,8 +28,8 @@ data_nw.group_by(nw.col(group)).agg(nw.col('x').my_func())
data_nw.group_by(nw.col(group)).agg(my_func(nw.col('x')))
````

例えば Py4Stats では、[`Pareto_plot()`](../man/Pareto_plot.md) 関数の内部実装に使用している [`make_rank_table()`](../py4stats/eda_tools/_nw.py) 関数において、任意の `aggfunc()` 関数をグループ別集計に使うために、サブセッティングを使って `group_by()` メソッドの使用を回避するという変則的(かつ、おそらく非効率な)な実装を行なっています。

例えば Py4Stats では、[`Pareto_plot()`](../man/Pareto_plot.qmd) 関数の内部実装に使用している [`make_rank_table()`](../py4stats/eda_tools/_nw.py) 関数において、任意の関数をグループ別集計に使うために、サブセッティングを使って `group_by()` メソッドの使用を回避するという変則的(かつ、おそらく非効率 )な実装を行なっています。
``` python
stat_values = [
aggfunc(
Expand Down Expand Up @@ -63,8 +63,8 @@ result = data_nw.to_native() # -> pd.DataFrame が出力される
```python
data_nw = nw.from_native(input_pd) # ここで backend が記録される
data_nw2 = nw.from_native(data_nw.to_polars()) # ここで backend が上書きされる
data_nw2.implementation # -> polars
result = data_nw2.to_native() # -> pl.DataFrame が出力される
data_nw2.implementation # -> polars
result = data_nw2.to_native() # -> pl.DataFrame が出力される
```

従って、`result` が `input_pd` と同じ型をもつことを保証するには、`data_nw` を nw.DataFrame クラスのまま維持する(≒ narwhals ベースのメソッドだけで処理を書く)必要があり、これが narwhals ベースの実装としてのあるべき姿だと思われます。
Expand Down
95 changes: 95 additions & 0 deletions articles/release_notes.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Release Notes

## Py4Stats v0.3.0 2026-01-23

### 概要(Summary)

このリリースでは Pyt4Stats に幾つかの関数の追加を行いました。
関数のリファクタリングとバグ修正を行いました。今回のリリースでは機能の追加や変更はありません。

### ✨ 主な新機能 (New Features)

- [`diagnose_category()`](../man/diagnose_category.qmd) 関数の追加
- データフレームのカテゴリー変数の要約を提供する関数です。
- [`set_miss()`](../man/set_miss.qmd) 関数の追加
- Series の非欠測要素のうち、指定された個数または割合を欠測値に置き換えます。

### 🛠 修正と改善(Fixes /Improvements)

- [`compare_group_means(), compare_group_median()`](../man/compare_group_stats.qmd), [`compare_df_cols(), compare_df_stats()`](../man/compare_df_cols.qmd): コードをリファクタリングし、引数と同じクラスのデータフレームを出力できるようにしました。この変更により、返り値が `pd.DataFrame` である場合でも、index が自動では設定されなくなりました。



- [`diagnose()`](../man/diagnose.qmd): dtype 列が、polars や pyarrow における列のクラスの表記に対してより忠実になるように修正しました。
- [`relocate()`](../man/relocate.qmd) 関数に、指定した列を最後列に配置する機能を追加し、エラーメッセージを改善しました。
- [`assert_character()`](../man/assert_dtype.qmd) および [`assert_numeric()`](../man/assert_dtype.qmd) 系関数のエラーメッセージを改善しました。
- その他、いくつかの関数のエラーメッセージを改善しました。

## Py4Stats v0.2.2 2026-01-19

### 概要(Summary)

型ヒントに関する若干の修正と、バグ修正を行いました。今回のリリースでは機能の追加や変更はありません。

### 🛠 修正と改善(Fixes /Improvements)

- [`building_block.assert_numeric`](../man/assert_dtype.qmd) 系関数のリファクタリングを行いました。この変更でメインモジュールの関数の動作に変更はありません。
- [`compare_group_means()`, `compare_group_median()`](../man/compare_group_stats.qmd) のテストコードを実装しました。
- [`tabyl()`](../man/tabyl.qmd): 第一引数 `data` と同じオブジェクト型をもつ DataFrame を出力できるように実装を修正しました。
- [`check_that(), check_viorate()`](../man/varidate.qmd) : 第一引数 `data` と同じオブジェクト型をもつ DataFrame を出力できるように実装を修正しました。引き続きロジックのコア部分には `pd.DataFrame.eval()` を使用しており、使用方法に大きな変更はありません。
- [`is_number()`](../man/predicate_str.qmd) 関数を修正し、pyarrow.lib.ChunkedArray オブジェクトを代入すると生じるエラーを解消しました。

## Py4Stats v0.2.1 2026-01-16

### 概要(Summary)

このリリースでは Pyt4Stats の各モジュールに幾つかの関数の追加を行いました。

### ✨ 主な新機能 (New Features)

- [`plot_category()`](../man/plot_category.qmd) 関数の追加
- カテゴリ変数の回答分布を 100% 積み上げ横棒グラフとして描画する関数です。
- [`plot_miss_var()`](../man/plot_miss_var.qmd) 関数の追加
- データフレームの各変数について欠測値の量を横棒グラフとして可視化します。
- [`relocate()`](../man/relocate.qmd) 関数の追加
- データフレームの列を、削除することなく並べ替えます。
- [`weighted_mean()`, `scale()`, `min_max()`](../man/scale_wmean.qmd) 関数の追加
- それぞれ Series オブジェクトの加重平均の計算と、標準化を行う関数です。

### 🛠 修正と改善(Fixes /Improvements)

- `eda_tools` の Pandas ベース実装 `eda_tools/_pands.py` に、`FutureWarning` を実装しました。
- ユーザビリティ向上のため、[`freq_table()`](../man/freq_table.qmd) 関数に `sort_by` 引数を導入しました。
- `sort_by = 'frequency'` なら度数分布表を頻度に応じてソートし(従来の `sort = True` に相当)、`sort_by = 'values'` なら `subset` で指定した列の値に応じてソートします(従来の `sort = False` に相当)。
- この変更に合わせて、`sort` 引数は非推奨扱いに変更されています。
- [`Pareto_plot()`](../man/Pareto_plot.qmd) の `aggfunc` 引数に、`np.mean` など `values` 列を1次元配列として受け取って単一の数値を返す任意の関数を使用できるように改良を行いました。
- その他、`py4stats` ライブラリ全体のエラーメッセージ改善
- [`building_block.assert_*`](../man/assert_dtype.qmd) 系関数の改良を行い、与えられた引数の要素数に関するアサーションと、None やリストを拒否する機能を追加しました。
- [`cmpare_ols()`](../man/compare_ols.qmd) および [`cmpare_mfx()`](../man/compare_mfx.qmd) に stars 引数を追加し、有意性のアスタリスクの表示形式を変更できる機能を追加しました。また、その他エラーメッセージの改善を行なっています。

### ⚠️ 既知の制限・注意点(Notes)

- `pyarrow.Table` を使用する場合、[`plot_category()`](../man/plot_category.qmd) 関数の一部機能が制限されます。

## Py4Stats v0.1.0 2026-01-11

### 概要(Summary)

このリリースでは EDA モジュールの narwhals ベース実装を統合し、パフォーマンスと互換性を大幅に改善しました。いくつかの既知の挙動も修正されています。

### ✨ 主な新機能 (New Features)

- `py4stats.eda_tools` が Pandas ベースの実装から narwhals ベース実装へ移行しました。
- この変更により、複数バックエンド(pandas / polars / pyarrow)をサポートしました。
- Pandas ベースの実装は、当面 `py4stats` ライブラリのサブモジュール `eda_tools._pandas` として維持されますが、将来的に廃止される予定です。

### 🛠 修正と改善(Fixes /Improvements)

- `bilding_block` モジュールの名称を `building_block` に修正
- `Py4Stats.building_block` モジュールの [`assert_*` 系関数](../man/assert_dtype.qmd)の出力を `AssertionError` から `ValueError` に変更しました。
- `Py4Stats.eda_tools` モジュールの関数の bool 値の引数を中心に、型の不一致があった場合のエラーメッセージを改善しました。

### ⚠️ 既知の制限・注意点(Notes)

- バックエンドの変更に伴い、[`py4st.freq_table()`](../man/freq_table.qmd)、[`py4st.diagnose()`](../man/diagnose.qmd)、[`py4st.tabyl()`](../man/tabyl.qmd) など、従来はインデックス(Index)付きの `pandas.DataFrame` データフレームが出力されていた関数で、インデックスのない `pandas.DataFrame` が出力されるように変更されました。
- polars / pyarrow のサポートは experimental であり、一部のエッジケースで動作に違いが出る可能性があります。詳細は [Technical Notes](./narwhals_in_py4stats.qmd) および [eda_tools開発状況](./eda_tools_development_status.qmd) を参照してください。
Loading