2013-12-10 39 views
1

感謝您的閱讀,我花了3-4個小時尋找例子來解決這個問題,但找不到任何解決方案..我嘗試過的那些似乎沒有與熊貓DataFrame對象一起工作..任何幫助將非常感謝!! :)基於累計值(而不是實際頻率)創建熊貓2D熱圖?

好吧,這是我的問題。

我有一個包含12列的熊貓數據框。 我有500,000行數據。

大多數列都是無用的。我感興趣的變量/列被稱爲:x,y和利潤

許多x和y點是相同的,所以我想將它們組合成一個獨特的組合,然後加起來所有的利潤爲每個獨特的組合。

每個唯一組合是倉(如在直方圖中使用的槽)

然後我想繪製2D圖表/熱圖等的x,y表示每個bin和顏色要總利潤。

例如

X,Y,利潤

7,4,230.0

7,5,162.4

6,8,19.3

7,4,-11.6

7,4,180.2

7,5,15.7

4,3,121.0

7,4,1162.8

注意如何值x = 7,Y = 4,有3行符合此條件..以及總利潤應該是: 230.0 - 11.6 +1162.8 = 1381.2 所以在bin x = 7,y = 4時,利潤是1381.2

值得注意的是x = 7,y = 5,有2個實例..總利潤應該是:162.4 + 15.7 = 178.1 所以在bin x = 7,y = 5時,利潤是178.1

所以最後,我只想能夠plot:x,y,total_profit_of_bin

例如爲了幫助說明什麼我尋找,我發現這個互聯網上,它類似於想我,(忽略軸&號)

http://2.bp.blogspot.com/-F8q_ZcI-HJg/T4_l7D0C7yI/AAAAAAAAAgE/Bqtx3eIHzRk/s1600/heatmap.jpg

感謝你這麼多的服用時間閱讀:)

+0

但是x和y可能不會有相同數量的箱子嗎?這將如何看圖表?缺少的價值觀,你會怎麼表達呢?圖上的每個勾號代表什麼?當然,你會想要大小相同的垃圾箱嗎?我問的原因是,因爲groupby傳遞一個函數,你想要做的事很容易,但是你不能將這些數據聚合成等長的bin。你可以將它們分開,但是我仍然沒有真正看到它如何在圖上起作用。 –

回答

0

如果對於x值相等且x值相等的x'bin',則可以使用groupby.agg。這將是這個樣子

import pandas as pd 
import numpy as np 

df = YourData 

AggDF = df.groupby('x').agg({'y' : 'max', 'profit' : 'sum'}) 

AggDF 

這將讓你我想你想要的數據,那麼,你認爲合適,你可以繪製。你還需要幫助嗎?

注意,如果在每個「bin」中,即按照x的值分組的數據,y的值相等,則只會按照您希望的方式工作。我認爲這一定是這種情況,否則我認爲嘗試將x和y一起繪製是沒有多大意義的。

+0

嗨,謝謝你的快速回復..幾乎完美!我在一個數據樣本上測試了這個,Y值很好。例如,可能有幾個X具有相同的Y值。但問題是,X值是獨一無二的,從不重複。例如x從1到350線性地變化..實際上可以有例如x = 50,y = 62.2和x = 50,y = 84.16 ..但是這個信息已經消失。附:如果你還可以幫忙進行情節,那將是驚人的......我在講O'Reilly的Pandas書時,這個情節似乎超出了本書的範圍。非常感謝 – user3087320

+0

因此,在你提到的x = 50組中,你想聚合的y值是多少?問題是我認爲你設置問題的方式沒有意義。你不想要一張圖,你想要兩張。一個繪製利潤的x箱,一個繪製y。是對的嗎?你不能同時清理垃圾箱。合理? –

+0

嗨,嗯..也許我沒有解釋清楚:)在上面的例子中,在位置(7,4),利潤z(或圖的顏色)的值是1381.2,在位置(7 ,5)z(利潤)的價值是178.1 ..也可能有一個(6,4)和一個(6,5)有不同的利潤值。我只想採取x和y並找到唯一的配對。然後是獨特配對的利潤。在一天結束時,我只是列出了獨特的x和y對,以及與它們相關的總利潤。例如(2,4)不同於(4,2)等 – user3087320