2014-05-12 49 views
0

我想使用熊貓數據框來創建二維表格。該表應該將第三個值與alphaepsilon這兩個值相關聯。 alphaepsilon來自可變範圍,如:(目標是找出哪些的alphaepsilon組合導致最高的值,或更一般地,發現參數和值之間的相關性)熊貓:如何使用數字範圍中的列和行鍵構建表格

alphaRange = numpy.arange(0.01, 0.26, 0.01) 
epsilonRange = numpy.arange(0.01, 0.11, 0.01) 

什麼是構建這樣一個數據框的最好方法,然後用值填充它?

回答

2

這可能是更容易使用NumPy的第一計算值,然後將結果加載到數據幀:

import numpy as np 
import pandas as pd 
alphaRange = np.arange(0.01, 0.26, 0.01) 
epsilonRange = np.arange(0.01, 0.11, 0.01) 
X, Y = np.meshgrid(alphaRange, epsilonRange) 
vals = X+Y 
print(vals.shape) 
df = pd.DataFrame(vals, index=epsilonRange, columns=alphaRange) 
print(df) 

編輯:PaulH是正確的 - 浮動不好好列或索引標籤,因爲他們可能很難正確引用。 (檢查花車平等帶來了浮動代表問題)。因此,這將是更明智alphaepsilon數據幀列:

df = pd.DataFrame({'vals':vals.ravel()}, 
        index=pd.MultiIndex.from_product([alphaRange, epsilonRange], 
                names=['alpha', 'epsilon'])) 
df.reset_index(inplace=True) 
print(df.head()) 

產生

alpha epsilon vals 
0 0.01  0.01 0.02 
1 0.01  0.02 0.03 
2 0.01  0.03 0.04 
3 0.01  0.04 0.05 
4 0.01  0.05 0.06 

[5 rows x 3 columns] 

pd.MultiIndex.from_product被加入熊貓0.13.1。對於較早版本的熊貓,您可以使用:

def from_product(iterables, sortorder=None, names=None): 
    from pandas.tools.util import cartesian_product 
    product = cartesian_product(iterables) 
    return pd.MultiIndex.from_arrays(product, sortorder=sortorder, 
            names=names) 

df = pd.DataFrame({'vals':vals.ravel()}, 
        index=from_product([alphaRange, epsilonRange], 
            names=['alpha', 'epsilon'])) 
+0

浮動指數仍然不穩定/皺起了眉頭? –

+0

@PaulH:謝謝,保羅。我想你是對的;浮動指數可能有問題。我發佈了一個替代方案。 – unutbu

+0

@unutbu我不太明白你的例子中的'vals = X + Y'行。 'alphaRange'和'epsilonRange'用於索引,這些值不是兩者的簡單組合(例如總和)。所以要寫這些值,我需要能夠通過'(alpha,epsilon)'來索引數組。 – clstaudt

相關問題