2012-10-25 27 views
1

我有數據幀數據有3列 - 日期,分段和度量。我正在做以下事情:我如何在數據集中找到使用熊貓的中位數?

data = pandas.read_csv("Filename.csv") 
ave = data.groupby('Segment').mean() #works 
ave = data.groupby('Segment').median() #gives error 
ave['median'] = data.groupby('Segment').median() 

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1453, in __setitem__ 
    self._set_item(key, value) 
    File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1488, in _set_item 
    NDFrame._set_item(self, key, value) 
    File "/usr/lib/pymodules/python2.7/pandas/core/generic.py", line 301, in _set_item 
    self._data.set(key, value) 
    File "/usr/lib/pymodules/python2.7/pandas/core/internals.py", line 616, in set 
    assert(value.shape[1:] == self.shape[1:]) 
AssertionError 
+0

請給出一個演示問題的數據示例。 – BrenBarn

回答

3

你會得到什麼錯誤?

ave = data.groupby('Segment').median() 

我認爲應該工作,也許有什麼東西在你的數據造成的錯誤,像男的,我只是猜測。你可以嘗試將自己的中位功能,看看是否能解決該錯誤的原因,是這樣的:

def mymed(group): 
    return np.median(group.dropna()) 

ave = data.groupby('segment')['Metric'].apply(mymed) 

它會更容易,如果你能提供複製錯誤一些示例數據。

這是一種不同的方法,你可以添加值回原來的數據框,爲度量標準列位數變爲:

data['metric_median'] = data.groupby('Segment')['Metric'].transform('median') 

閹其具有連接到每個數據點組的中位數有用稍後取決於你想要做什麼。

0

我想我們可以使用下面的代碼計算中位數。

print(data['segment'].median()) 

,如果它不工作,我們可以嘗試把平均值代替缺失的數據,然後計算的位數。