2017-06-22 16 views
0

データを含むcsvファイルがあります。正と負の値を含む列があり、この列の平均をプロットする必要があります2つの小節、1つは負の値、もう1つは正の値です。 私のデータで見てみましょう:csvファイルの正負の値の棒グラフのパンダプロット

timestamp,heure,lat,lon,ampl,type 
2006-01-01 00:00:00,13:58:43,33.837,-9.205,10.3,1 
2006-01-02 00:00:00,00:07:28,34.5293,-10.2384,17.7,1 
2007-02-01 00:00:00,23:01:03,35.0617,-1.435,-17.1,2 
2007-02-02 00:00:00,01:14:29,36.5685,0.9043,36.8,1 
.... 
2011-12-31 00:00:00,05:03:51,34.1919,-12.5061,-48.9,1 

私は私のデータをプロットするために、このコードを使用しています:

そう
names =["timestamp","heure","lat","lon","ampl","type"] 
data = pd.read_csv('flash.txt',names=names, parse_dates=['timestamp'],index_col=['timestamp'], dayfirst=True) 
data['ampl'] = data['ampl'].abs() 
yearly = data.groupby(data.index.month)['ampl'].count() 
ax = yearly.plot(kind='bar') 

を、私は、問題の列の値の関連付けを解除し、代わりに2つのバーを持っている必要があります私はどのように進むことができますか?

+0

が、それは少し問題があるが、変更する場合は、 '毎年= data.groupby(データcount()。unstack(fill_value) '() ')'に設定します。それは動作するはずです。 – jezrael

+0

動作しない場合は、4-5行のサンプルデータを追加できますか? – jezrael

+0

私は自分の質問を編集したばかりです。私のデータを今見てみることができます。 –

答えて

1

最初に新しい列signnumpy.signmapdictで作成します。

はその後unstackによってsizeによってgroupby、集計に新しい列名を追加し、再構築:データなし

data['sign'] = np.sign(data['ampl']).map({1:'+', -1:'-', 0:'0'}) 
data['ampl'] = data['ampl'].abs() 
yearly = data.groupby([data.index.month, 'sign'])['ampl'].size().unstack() 
yearly.plot(kind='bar') 

What is the difference between size and count in pandas?

+0

あなたが言ったように、私はこれを得ました:KeyError: 'type' –

+0

'print(df.columns.tolist())とは何ですか? – jezrael

+0

これは次のようになります:['heure'、 'lat'、 'lon'、 'ampl'] –

関連する問題