2017-04-02 11 views
0

私はパンダのデータフレームから作成したヒストグラムを、データセットの平均を表す垂直の破線をプロットしたいと思います。matplotlibでヒストグラムに点線として平均をプロットする

:私はこのエラーを受信して​​しまう

import pandas as pd 
import matplotlib.pyplot as plt 

#import csv file into pandas dataframe 
df = pd.read_csv('/path/to/my/file') 

#calculating mean 
m = df.mean() 
#print(m) 

#plotting histogram 
df.plot(kind='hist') 
#plt.axvline(m, color = 'r', linestyle = 'dashed', linewidth = 2) 

:私はまさに私が探していたスタイルである、this thread検討している、しかし、私はそれは(下)私のコードで動作するようにする方法を見つけ出すことはできません

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

これが何を意味するのか分かりませんが、何か助けていただければ幸いです。

EDIT:私のデータファイルは1列のcsvで、最初の行はヘッダー(文字列)で、その後の107行はappからの値です。代わりメートルの1.0E + 11


11 + 4.0Eに偽のデータ(パイソン2.7)

import io 
import numpy as np 
a = np.linspace(1, 4, num = 20) 
s = 'E11\n'.join(map(str, a)) 
s += 'E11' 
#print(s) 
df = pd.read_csv(io.BytesIO(s)) 
+0

あなたのデータファイルのサンプルを投稿することができますか? – Shaunak

+0

上記の説明を投稿してください。それは役に立ちますか? – NaN

+0

どのラインが例外をスローしていますか?、完全なトレースバックを投稿できますか? – wwii

答えて

0

mはパンダシリーズである、それはインデックスと値を持っている - matplotlibのは、それを処理する方法を知ってはいけません。

>>> print m 
1.0E11 2.578947e+11 
dtype: float64 
>>> type(m) 
<class 'pandas.core.series.Series'> 
>>> 

平均の値はそう、m[0]またはm.valuesです:

plt.axvline(m[0], color = 'r', linestyle = 'dashed', linewidth = 2) 
#or 
plt.axvline(m.values, color = 'r', linestyle = 'dashed', linewidth = 4) 
+0

これは私のために働いてくれてありがとう! – NaN

-1

私はあなたがm.allを(使うべきだと思います)。 pltはplt.show()を使ってヒストグラムを描画します。そのコードは次のようになります。

#plotting histogram 
# df.plot(kind='hist') 
plt.axvline(m.all(), color = 'r', linestyle = 'dashed', linewidth = 2) 
plt.show() 
+0

それはあなたのために働いたのですか? – wwii

+0

はい、私はこの方法でプロットを得ました。 – ida

関連する問題