Python ondalık türü değerlerini pandalar TimeSeries
/DataFrame
nesnesinde depolamam gerekir. Pandalar, TimeSeries/DataFrame'de "groupby" ve "mean" kullanırken bana hata veriyor.Ondalık tip değerleri olan bir pandada TimeSeries'te ortalama yöntemi nasıl kullanırsınız?
[0]: by = lambda x: lambda y: getattr(y, x)
[1]: rng = date_range('1/1/2000', periods=40, freq='4h')
[2]: rnd = np.random.randn(len(rng))
[3]: ts = TimeSeries(rnd, index=rng)
[4]: ts.groupby([by('year'), by('month'), by('day')]).mean()
2000 1 1 0.512422
2 0.447235
3 0.290151
4 -0.227240
5 0.078815
6 0.396150
7 -0.507316
Ama yüzen yerine aynı kullanılarak ondalık değerleri yaparsam bir hata alıyorum: yüzen dayalı aşağıdaki kod iyi çalışıyor
[5]: rnd = [Decimal(x) for x in rnd]
[6]: ts = TimeSeries(rnd, index=rng, dtype=Decimal)
[7]: ts.groupby([by('year'), by('month'), by('day')]).mean() #Crash!
Traceback (most recent call last):
File "C:\Users\TM\Documents\Python\tm.py", line 100, in <module>
print ts.groupby([by('year'), by('month'), by('day')]).mean()
File "C:\Python27\lib\site-packages\pandas\core\groupby.py", line 293, in mean
return self._cython_agg_general('mean')
File "C:\Python27\lib\site-packages\pandas\core\groupby.py", line 365, in _cython_agg_general
raise GroupByError('No numeric types to aggregate')
pandas.core.groupby.GroupByError: No numeric types to aggregate
hata mesajı "GroupByError ('Hayır sayısal türleri olduğunu birleştirmek için '). TimeSeries veya Ondalık değerleri içeren DataFrame'de toplam, ortalama ve kuantum gibi standart toplamaları kullanma şansı var mıdır?
Neden çalışmıyor ve mümkün değilse, aynı derecede hızlı bir alternatife sahip olma şansı var mı?
DÜZENLEME: Sadece diğer fonksiyonlar (min, maks, medyan, vs.) en i umutsuzca :-(gerek ince ama ortalama işlevi çalışmak olduğunu fark
değilim. emin, ama aynı zamanda son zamanlarda bu konuya koştu.Ben sadece ondalık() değerlerini floatlar ve sonra kayan değerler ile veri çerçevesini oluştururken sona erdi. – reptilicus