Как найти min , max значение по засданному столбцу?
Как найти минимальное и максимальное значение по столбцу Fixed_assets_value?
Никак не идет:
import numpy as np
import pandas as pd
df = pd.read_csv('zad_p.csv', delimiter=';')
df = df.rename(columns={'fixed assets value': 'Fixed_assets_value', 'gross output at constant prices': 'Gross_output_at_constant_prices', 'average on establishment number of workers' : 'Average_on_establishment_number_of_workers', 'Average daily processing of beets' : 'Average_daily_processing_of_beets'})
df
df.Fixed_assets_value.max()
Ответы (2 шт):
Если простыми словами, то pandas.DataFrame - это структура данных наподобие обычного python-словаря dict, просто построенная на библиотеке numpy и имеющая больше возможностей. В этом контексте у объектов pandas.DataFrame (переменная df в вашем случае) возможно получение значения по ключу. Ключом является что-то хэшируемое (Hashable), т.е. нечто "уникальное" - например, строка типа str является в python хэшируемым объектом.
Так вот это всё к чему... А к тому, что в вашем случае нужно делать так:
df['Fixed_assets_value'].max()
df['Fixed_assets_value'] возвращает содержимое столбца с именем 'Fixed_assets_value' в виде объекта типа pandas.Series (ибо столбцами pandas.DataFrame являются объекты типа pandas.Series), у которого существует метод поиска максимального значения.
То, что делали вы...
df.Fixed_assets_value.max()
...означало, что вы пытались достучаться до поля Fixed_assets_value объекта pandas.DataFrame. Но такого поля там просто нет.
P.S.
Даже если вы совсем-совсем новичок - не бойтесь рыться в документации :) Потратив время сейчас, в будущем вы сэкономите много сил, энергии, здоровья и того же времени). К тому же у pandas (как и у многих библиотек python) документация прекрасна.
Данная ошибка говорит о том, что столбца с таким наименованием нет в DataFrame.
Воспроизведение ошибки:
In [20]: df = pd.DataFrame({"fixed assets value": [1,2,3,], "gross output at constant prices": [11,12,13]})
In [21]: df.columns.to_list()
Out[21]: ['fixed assets value', 'gross output at constant prices']
In [22]: df.columns = df.columns.str.replace("\s+", "_")
In [23]: df
Out[23]:
fixed_assets_value gross_output_at_constant_prices
0 1 11
1 2 12
2 3 13
теперь попытаемся найти максимум/минимум для существующих и несуществующих столбцов:
In [24]: df.fixed_assets_value.max()
Out[24]: 3
In [25]: df.gross_output_at_constant_prices.min()
Out[25]: 11
In [26]: df.non_existing_col.max()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
...
AttributeError: 'DataFrame' object has no attribute 'non_existing_col'
PS более идиоматично/правильно обращаться к столбцам фрейма используя квадратные скобки - это будет работать для любых наименований столбцов, даже для таких, которые содержат пробелы или символы пунктуации.
In [27]: df = pd.DataFrame({"col 1": [1,2], "col,2;": [10,20]})
In [28]: df
Out[28]:
col 1 col,2;
0 1 10
1 2 20
In [29]: df["col,2;"].mean()
Out[29]: 15.0
разумеется обратиться к такому столбцу как к атрибуту не получится:
In [30]: df.col,2;
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
...
AttributeError: 'DataFrame' object has no attribute 'col'
PPS чтобы получить полный список столбцов DataFrame в виде обычного списка:
In [31]: df.columns.to_list()
Out[31]: ['col 1', 'col,2;']


