Groupby() в pandas на Python

#python #pandas

#python #pandas

Вопрос:

У меня есть набор данных со следующими столбцами:

Страна, год, население, случай самоубийства, ВВП страны

Проблема: Я хочу вычислить (случай самоубийства / население) * 100 для каждой страны

Мой подход :

 import pandas as pd
fileName = pd.read_csv("File Path")
pd.groupby("Country")
  

Как я должен расширить свой код для вычисления выше?

Ответ №1:

Вот вам пример. Может быть, это могло бы быть лучше, но это должно сработать для вас.

 import pandas as pd
df = pd.DataFrame({"Country":["France", "UK", "France", "UK"], 
                   "Population":[1, 2, 3, 4],
                   "Suicide case":[5, 3, 6, 2]})
df_grouped = df.groupby("Country").sum()
(df_grouped["Suicide case"]/df_grouped["Population"])*100
  

Ответ №2:

Также более сжатым является:

 df.groupby('Country').apply(lambda x: x['Suicide case'].sum()/
                               float(x['Population'].sum())*100)
  

Ответ №3:

Если я правильно понял ваш вопрос, вы можете попробовать приведенный ниже код, чтобы получить желаемый результат:

 fileName = fileName.groupby(['Year','Country']).sum()
fileName['New_var'] = (fileName['Suicide case']/ fileName['Population'])*100
  

вам также нужен год в группе, иначе по годам также будет получена совокупность.