Различные типы кронштейнов python - PullRequest
0 голосов
/ 03 февраля 2020

Итак, я следовал руководству, которое я получил от Reddit по поводу понимания требований скобок python: это список? Тогда используйте скобки. Это дикт? Тогда используйте брекеты. В противном случае вам, вероятно, понадобятся скобки.

Однако я столкнулся с тем, что вышеописанное не может объяснить:

df.groupby ('Age') ['Salary']. Mean ()

В этом случае и возраст, и зарплата являются списками (они оба являются столбцами из df), так почему же мы используем скобки для возраста и скобки для зарплаты?

Кроме того, почему существует точка перед средним, а не между («Возраст») и [«Зарплата»]?

Я понимаю, что вопросы, которые я задаю, могут быть довольно басы c. Я работаю над Python Essential Reference (4-е издание) библиотеки разработчика. Если у кого-то есть источники, касающиеся моих вопросов, было бы здорово их увидеть.

Спасибо

Ответы [ 3 ]

2 голосов
/ 03 февраля 2020

Если вы простите меня за ответ на важный вопрос, а не на тот, который вы задали ...
Это очень компактная цепочка. Разбейте его на отдельные строки, а затем используйте представление «Отладка» в среде IDE, чтобы просмотреть все типы данных.

query_method = df.groupby
query_string = 'Age'
query_return = query_method(query_string)
data = query_return['Salary']
data_mean = data.mean()

Перейдите к отладчику PyCharm, и вы увидите тип для каждой переменной.

0 голосов
/ 03 февраля 2020

Здесь много контекста, который можно найти в документации pandas к фрейму данных .

Для начала df - это объект класса pandas.DataFrame. pandas.DataFrame имеет функцию с именем groupby, которая требует некоторого ввода. В вашем примере ввод 'Age'. Когда вы передаете аргументы функции, она выглядит следующим образом:

my_function(input)

, когда у вас есть более одного ввода, общий способ их передачи - это несколько переменных, например

my_function(input1, input2, etc, ...)

pandas.DataFrame.groupby(...) возвращает объект, который подписан или может быть вырезан . Использование обозначения слайса похоже на доступ к элементу в list или dict, например

my_list = [1,2,3]
print(my_list[0]) # --> 1

my_dict = {
    "a": "apple",
    "b": "banana",
    "c": "cucumber"
}

print(my_dict["b"]) # --> banana

, возвращаясь к вашему конкретному c вопросу:

df.groupby('Age')['Salary'].mean()
df                                 # df, the name of your DataFrame variable
  .groupby('Age')                  # call the function groupby to get the frame grouped by the column 'Age'
                 ['Salary']        # access the 'Salary' element from that groupby
                           .mean() # and apply the mean() function to the 'Salary' element

Итак Похоже, что вы получаете список всех средних зарплат по возрасту работника. Надеюсь, это поможет объяснить

0 голосов
/ 03 февраля 2020

Возраст и зарплата - это списки (оба столбца из df),

Это диапазоны / столбцы, а не списки. Группировка по функции Dataframe возвращает индексированный объект. Для вызова методов требуется скобка, например print(). Вы можете использовать квадратные скобки для доступа к индексированным данным (ref. dict() объекты).

Точка и парантез - это еще один вызов функции

почему перед точкой стоит точка, но не между ('Возраст') и ['Зарплата']

Короткий ответ таков: foo.['bar'] недопустимый синтаксис

Но df.groupBy("Age").some_func() определенно можно сделать в зависимости от доступных функций для этого объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...