2016-06-20 40 views
0

Pythonのデータ集約に関する助けが必要です。X軸とY軸のPythonデータ集約

私は3列とN行のデータフレームを持っています。最初の2つの列にはインデックス(XY)が含まれ、最後の列には値が含まれます。

ind1 ind2 value 
x1 y1 k1 
x2 y1 k2 
x3 y1 k3 
x1 y2 k4 
x2 y2 k5 
x3 y2 k6 

のいくつかの種類に:タスクが[(x_i,y_j)に対応する]第3列の値のsum()をカルクと(x_i,y_j)

あるいは、simplierの交差点に新しいデータフレームに書き込む、変換することです2d大量

 y1 y2 
    ________ 
x1 |k1 k4 
x2 |k2 k5 
x3 |k3 k6 

私はpandas.groupbyを試しましたが、適切な解決策が見つかりませんでした。では、どうしたらいいですか?

+0

をあなたは 'pivot_table'を使用する必要があり、こちらのドキュメント](http://www.nikgrozev.org/2015/07/01/reshapingを参照してください-in-pandas-pivot-pivot-table-stack-and-unstack-described-with-pictures /)を使用します。 – IanS

答えて

2

データをピボットする必要があります。例:

In [5]: data = {'ind1': ['x1','x2','x3','x1','x2','x3'], 
'ind2': ['y1','y1','y1','y2','y2','y2'], 
'value': ['k1','k2','k3','k4','k5','k6']} 

In [6]: pd.DataFrame(data=data) 
Out[6]: 
    ind1 ind2 value 
0 x1 y1 k1 
1 x2 y1 k2 
2 x3 y1 k3 
3 x1 y2 k4 
4 x2 y2 k5 
5 x3 y2 k6 

In [9]: df.pivot(index='ind1', columns='ind2', values='value') 
Out[9]: 
ind2 y1 y2 
ind1 
x1 k1 k4 
x2 k2 k5 
x3 k3 k6 

あなたがここでより多くの情報を見つけることができます:http://pandas.pydata.org/pandas-docs/stable/reshaping.html

+1

私はOPも重複した値を合計したいと考えています。それは 'pivot_table'の仕事でしょうか? – IanS

+1

うん、私は 'aggfunc'としての' np.sum'がうまくいくはずだと思います。 OPが希望の振る舞いを見やすくするためにOPに数値をいくつか入力しても問題ないでしょう。 –

+0

ありがとうございます、@イアンは正しいです - 私も値を合計する必要があります。データセットは[Kaggle competition](https://www.kaggle.com/c/walmart-recruiting-sales-in-stormy-weather/download/train.csv.zip)のもので、date、store_index、 item_index、items_sold。ですから、私はどの店舗でどの種類の商品がどれくらい売れているのかを把握する必要があります。そして、その店舗のヒートマップを作成したいのです。私はPythonのプロットと何をすべきかを管理しましたが、データ集約に固執しました。 –

関連する問題