Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Reductions

オープン
#11 コメント 4 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
python
領域
api, data

調査の方向性

まず、提案されている削減リストと、シグネチャ、NA の扱い、軸、API の配置に関する質問を確認します。完了には、Series、DataFrame、groupby、window、resample の各操作で一貫した削減を実現するための合意済みの設計が必要です。この issue では実装ファイルやテストは指定されていません。

索引モデルが issue の本文から書いたものです。

説明

Next are listed the reductions over numerical types defined in pandas. These can be applied:

  • To Series
  • To N columns of a DataFrame
  • To group by operations
  • As window functions (window, rolling, expanding or ewm)
  • In resample operations

pandas is not consistent, in letting any reduction to be applied to any of the above. Each method is
independent (Series.sum, GroupBy.sum, Window.sum...). Some reductions are not implemented for
some of the classes. And the signatures can change (e.g. Series.var(ddof) vs EWM.var(bias))

I propose to have standard signatures for the reductions, and have all reductions available to all classes.

Reductions for numerical data types and proposed signatures

  • all()
  • any()
  • count()
  • nunique() # may be the name could be count_unique, count_distinct...?
  • mode() # what to do if there is more than one mode? Ideally we would like all reductions to return a scalar
  • min()
  • max()
  • median()
  • quantile(q, interpolation='linear') # in pandas q is by default 0.5, but I think it's better to require it; interpolation can be {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}
  • sum()
  • prod()
  • mean()
  • var(ddof=1) # delta degrees of freedom (for some classes bias is used)
  • std(ddof=1)
  • skew()
  • kurt() # pandas has also the alias kurtosis
  • sem(ddof=1) # standard error of the mean
  • mad() # mean absolute deviation
  • autocorr(lag=1)
  • is_unique() # in pandas is a property
  • is_monotonic() # in pandas is a property
  • is_monotonic_decreasing() # in pandas is a property
  • is_monotonic_increasing() # in pandas is a property

Reductions that may depend on row labels (and could potentially return a list, like mode):

  • idxmax() / argmax()
  • idxmin() / argmin()

These need an extra column other:

  • cov(other, ddof=1)
  • corr(other, method='pearson') # method can be {‘pearson’, ‘kendall’, ‘spearman’}

Questions

  • Allow reductions over rows, or only over columns?
  • What to do with NA?
  • pandas has parameters (bool_only, numeric_only) to let only apply the operation over columns of certain types only. Do we want it?
    • I think something like df.select_columns_by_dtype(int).sum() would be preferrable than a parameter to all or some reductions
  • pandas has a level parameter in many reductions, for MultiIndex. If Indexing/MultiIndexing is part of the API, do we want to have it?
  • pandas has a min_count/min_periods parameter in some reductions (e.g. sum, min), to return NA if less than min_count values are present. Do we want to keep it?
  • How should reductions be applied?
    • In the top-level namespace, as pandas (e.g. df[col].sum())
    • Using an accessor (e.g. df[col].reduce.sum())
    • Having a reduce function, and passing the specific functions as a parameter (e.g. df[col].reduce(sum))
    • Other ideas
  • Would it make sense to have a third-party package implementing reductions that can be reused by projects?

Frequency of usage

pandas_reductions

主要言語
Python
スター
106
フォーク
22
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

data-apis/dataframe-api のほかの issue

data-apis/dataframe-api の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。