2013-12-10 41 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