根据累计值(而不是实际频率)创建Pandas 2d热图?

时间:2013-12-10 15:00:57

标签: python pandas frequency heatmap

感谢您的阅读,我花了3-4个小时搜索示例来解决此问题,但找不到任何解决方案..我尝试的那些似乎没有使用pandas DataFrame对象..任何帮助非常感谢!! :)

好的,这是我的问题。

我有一个包含12列的Pandas DataFrame。 我有500,000行数据。

大多数列都没用。我感兴趣的变量/列称为:x,y和profit

许多x和y点是相同的, 所以我想将它们分组成一个独特的组合,然后将每个独特组合的所有利润加起来。

每个唯一组合都是一个bin(就像直方图中使用的bin一样)

然后我想为每个箱子绘制x,y的二维图表/热图等,并将颜色绘制为总利润。

e.g。

的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

所以最后,我只想绘制:x,y,total_profit_of_bin

e.g。为了帮助说明我正在寻找的东西,我在互联网上找到了它,它与我想要的类似,(忽略轴和数字)

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

非常感谢您花时间阅读:)

1 个答案:

答案 0 :(得分:0)

如果x的值为x的'bin'相等,并且y的值相等,则可以使用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图在一起是没有多大意义的。