質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

866閲覧

データの平均値が.mean()メソッドで正確に集計できない

harapeko

総合スコア13

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/06/01 01:06

整数値からのみなるデータの集計をdf.mean()メソッドで行っているのですが、なぜか出てくる平均値がネピア数になってしまいます。原因として考えられるのはデータ量が大きすぎることぐらいなのですが、何か他の原因があるのでしょうか。ご回答いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2018/06/01 01:11

どのようなデータを集計しているのですか? .mean()を使わずに四則演算だけで求めた平均値は、どうなるのですか?
harapeko

2018/06/01 01:17

詳細についてはお話しできないのですが、数万行×数千列のデータを集計しています。四則演算に関してはまだ行っていません。
magichan

2018/06/01 01:41

ネイピア数になってるというのはどういうことでしょう? 単に少数が指数表記("1.234e5" みたいな形式)で表示されてということはありませんか?
ts-learner

2018/06/01 01:43

一応確認なのですが、「ネイピア数になる」とは浮動小数点数表示のことではないですよね? 具体的にどういう結果が表示されるかを(多少数値を変えても良いので)追記されたほうがいいかと思われます。
harapeko

2018/06/01 01:43

-4.449729e-02のような値が帰ってくる、ということです。
yohhoy

2018/06/01 01:49

出力に文字"e"が含まれる=ネイピア数 と解釈されているようですね? これは「指数表記」とよばれるもので、数学のネイピア数とは直接的な関係はありません。
coco_bauer

2018/06/01 01:50

「ネイピア数」は自然定数の底( 2.718281828459045235360287471352 …)の事だと思っていたのですが、-4.449729e-02は明らかに別物ですね。「ネイピア数(もしくはネピア数)」が何か説明してください。
harapeko

2018/06/01 02:02

出力に文字"e"が含まれる=ネイピア数ということではないのですね。誤解していました。この表記によって表される数の大きさを知りたいのですが、e=2.718281828459045235360287471352 …を代入して計算すれば良いのでしょうか。
coco_bauer

2018/06/01 02:13

「文字"e"が含まれる」=「指数表記で数値が表現されている」です。 問題は『正確に集計できない』というところでしょう? データを少ない個数(例えば100個)の整数から成るグループに分けて、グループでの平均値を求める。グループごとの平均値が求まったら、グループを少ない個数(例えば100個)の平均値から成るグループに分けて、グループでの平均値を求める。1億行x1億列のデータでもグループで平均値を求める作業を8回繰り返せば、平均値が求められます。
coco_bauer

2018/06/01 02:17

-4.449729e-02 は、-0.04449729 と同じ値です。 e-02は、小数点を2桁左に移す(1/100にする)という意味です。 e3は、小数点を3桁右に移す(1000倍にする)という意味です。
guest

回答1

0

ベストアンサー

単なる表記方法の問題です。
データ的には何ら問題はないと思われます。

https://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98

Python

1import pandas as pd 2 3ser = pd.Series([10000, 10, 0, 0.1, 0.000001]) 4print(ser) 5 6# 指数表記 7pd.set_option('display.float_format', '{:e}'.format) 8print(ser) 9#0 1.000000e+04 10#1 1.000000e+01 11#2 0.000000e+00 12#3 1.000000e-01 13#4 1.000000e-06 14#dtype: float64 15 16# 通常の少数表記 17pd.set_option('display.float_format', '{:f}'.format) 18print(ser) 19#dtype: float64 20#0 10000.000000 21#1 10.000000 22#2 0.000000 23#3 0.100000 24#4 0.000001 25#dtype: float64

投稿2018/06/01 02:02

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harapeko

2018/06/01 02:21

ありがとうございます。お手数なのですが。この指数表記されたものを通常の少数表示に変更するツールが掲載されているサイトや変換のためのコードなどを教えていただけないでしょうか。データ量が多いため、できるだけ手早く簡単な方法を教えていただきたいです。
magichan

2018/06/01 02:23

回答のコードに記載しております pd.set_option('display.float_format', '{:f}'.format) の部分が表示方法を変更している箇所になります
harapeko

2018/06/01 02:51

ありがとうございます。 ベストアンサーにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問