Q&A
解決済
2回答
5530閲覧
総合スコア2321
NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。
Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。
Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。
Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。
0グッド
0クリップ
投稿2019/11/15 02:05
0
下記の実行結果が異なるのですが、なぜでしょうか
python1import pandas as pd 2import numpy as np 3 4print(np.array([1,2,3,4,5,6]).std()) 5> 1.707825127659933 6print(pd.DataFrame([1,2,3,4,5,6],columns=["a"]).std()) 7> 1.870829
python
1import pandas as pd 2import numpy as np 3 4print(np.array([1,2,3,4,5,6]).std()) 5> 1.707825127659933 6print(pd.DataFrame([1,2,3,4,5,6],columns=["a"]).std()) 7> 1.870829
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答2件
デフォルトの自由度の設定が違うからです。
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>) https://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html#numpy.std
numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html#numpy.std
Series.std(self, axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs) https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.std.html
Series.std(self, axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.std.html
numpyのddof=0の設定では自由度n、pandasのddof=1の設定では自由度n-1が使われます。
なお、どちらも分散の平方根が返るので、これで不偏推定量になったりはしません。ddof=1の方がマシですが、程度問題だと思ってください。厳密なことをやるときは注意が必要です。
標準偏差 - Wikipedia
投稿2019/11/15 02:30
総合スコア30939
ベストアンサー
当然ドキュメントを真っ先に見ますよね。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.std.html
Normalized by N-1 by default. This can be changed using the ddof argument ddof : int, default 1 Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements.
Normalized by N-1 by default. This can be changed using the ddof argument
ddof : int, default 1 Delta Degrees of Freedom. The divisor used in calculations is N - ddof, where N represents the number of elements.
>>> print(pd.DataFrame([1,2,3,4,5,6],columns=["a"]).std(ddof=0)) a 1.707825 dtype: float64
投稿2019/11/15 02:24
総合スコア11357
回答へのコメント
2019/11/15 02:27
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
pandasとnumpyの標準偏差の出力結果が異なる