Python pandas не может использовать методmean() с groubyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python pandas не может использовать методmean() с grouby

Сообщение Anonymous »

Сейчас я изучаю pandas и столкнулся с ошибкой. база данных, которую я использовал: https://github.com/KeithGalli/pandas/bl ... n_data.csv
Я пробовал, как указано в учебнике YouTube:

Код: Выделить всё

print(df.groupby(['Type 1']).mean())
но возвращает ошибку:

Код: Выделить всё

Traceback (most recent call last):
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 1942, in _agg_py_fallback
res_values = self._grouper.agg_series(ser, alt, preserve_dtype=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\ops.py", line 864, in agg_series
result = self._aggregate_series_pure_python(obj, func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\ops.py", line 885, in _aggregate_series_pure_python
res = func(group)
^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 2454, in 
alt=lambda x: Series(x, copy=False).mean(numeric_only=numeric_only),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\series.py", line 6549, in mean
return NDFrame.mean(self, axis, skipna, numeric_only, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\generic.py", line 12420, in mean
return self._stat_function(
^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\generic.py", line 12377, in _stat_function
return self._reduce(
^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\series.py", line 6457, in _reduce
return op(delegate, skipna=skipna, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\nanops.py", line 147, in f
result = alt(values, axis=axis, skipna=skipna, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\nanops.py", line 404, in new_func
result = func(values, axis=axis, skipna=skipna, mask=mask, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\nanops.py", line 720, in nanmean
the_sum = _ensure_numeric(the_sum)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\nanops.py", line 1701, in _ensure_numeric
raise TypeError(f"Could not convert string '{x}' to numeric")
TypeError:  Could not convert string 'CaterpieMetapodButterfreeWeedleKakunaBeedrillBeedrillMega BeedrillParasParasectVenonatVenomothScytherPinsirPinsirMega PinsirLedybaLedianSpinarakAriadosYanmaPinecoForretressScizorScizorMega ScizorShuckleHeracrossHeracrossMega HeracrossWurmpleSilcoonBeautiflyCascoonDustoxSurskitMasquerainNincadaNinjaskShedinjaVolbeatIllumiseKricketotKricketuneBurmyWormadamPlant CloakWormadamSandy CloakWormadamTrash CloakMothimCombeeVespiquenYanmegaSewaddleSwadloonLeavannyVenipedeWhirlipedeScolipedeDwebbleCrustleKarrablastEscavalierJoltikGalvantulaShelmetAccelgorDurantLarvestaVolcaronaGenesectScatterbugSpewpaVivillon' to numeric

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "D:\PyCharm projects\pandastutorial\advanced.py", line 40, in 
print(df.groupby(['Type 1']).mean())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 2452, in mean
result = self._cython_agg_general(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 1998, in _cython_agg_general
new_mgr = data.grouped_reduce(array_func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\internals\managers.py", line 1469, in grouped_reduce
applied = sb.apply(func)
^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\internals\blocks.py", line 393, in apply
result = func(self.values, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 1995, in array_func
result = self._agg_py_fallback(how, values, ndim=data.ndim, alt=alt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 1946, in _agg_py_fallback
raise type(err)(msg) from err
TypeError: agg function failed [how->mean,dtype->object]
Поскольку это проблема со строковыми значениями (это сработало для парня из руководства), я попробовал это:

Код: Выделить всё

    print(df[['HP','Attack','Defense']].groupby(['Type 1']).mean())
но он вернул еще одну ошибку:

Код: Выделить всё

Traceback (most recent call last):
File "D:\PyCharm projects\pandastutorial\advanced.py", line 42, in 
print(df[['HP','Attack','Defense']].groupby(['Type 1']).mean())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\frame.py", line 9183, in groupby
return DataFrameGroupBy(
^^^^^^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\groupby.py", line 1329, in __init__
grouper, exclusions, obj = get_grouper(
^^^^^^^^^^^^
File "D:\PyCharm projects\pandastutorial\venv\Lib\site-packages\pandas\core\groupby\grouper.py", line 1043, in get_grouper
raise KeyError(gpr)
KeyError: 'Type 1'
Сработало следующее:

Код: Выделить всё

    print(df.groupby(['Type 1']).agg({'Speed':'mean', 'Defense':'mean'}))

но мне нужно среднее значение всех числовых значений, и я не хочу указывать его индивидуально. Я знаю, что это может быть полезно, когда вы указываете среднее значение для одного столбца и, например, минимальное значение для другого, но это раздражает, а иногда и невозможно для огромных баз данных. Есть ли способ сделать это быстрее? С уважением

Подробнее здесь: https://stackoverflow.com/questions/791 ... ith-grouby
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»