Суммирование данных в фрейме данных по отдельным категориям - PullRequest
0 голосов
/ 05 мая 2019

enter image description here

Я создал таблицу Excel с данными и перенес ее в файл CSV. Я хотел бы добавить данные по этнической принадлежности в каждом отдельном году. Я попытался создать индекс данных и попытался суммировать данные по каждой этнической группе, но смог хранить или содержать данные. Я использовал DF. а также созданные циклы for, чтобы я мог хранить данные по этнической принадлежности, но получил сообщения об ошибках. Исходный лист Excel содержит фрейм данных по этнической принадлежности для конкретного шоу, которое относится к конкретному году. Я не могу суммировать столбцы в год по этнической принадлежности.

Должен ли я использовать цикл for или if для перехода в определенные годы, мой подход к правильному процессу?

#this is the first method I have tried
import pandas as pd
import numpy as np

from google.colab import files
uploaded = files.upload()
# df = pd.read_csv('/content/drive/My Drive/allTheaterDataV2.csv')

import io
df = pd.read_csv(io.BytesIO(uploaded['allTheaterDataV2.csv']))
# Daset is now stored in a Pandas Dataframe

#create list that contains the specific season that we want to reference
# print(df)

data = pd.DataFrame(allTheaterDataV2)

dataindex = [20082009, 20102011, 20112012, 20122013, 20132014, 20142015]
print(dataindex)


df.loc['total',:] = df.sum(axis=0)

print(df.loc[1:42, ['ASIAM','AFRAM','LAT','CAU','OTH']].sum())

# The second method I have tried is included below
for i in dataindex:
  # create a new data frame that stores the data per year
  hold_ASIAM = df[df.index == i]
  # allows for data for each season to be contained together
  ETHtotalASIAM = df['ASIAM'].sum()
  hold_ASIAM.append(ETHtotalASIAM)
print(hold_ASIAM)

Я ожидаю, что выходные данные дадут мне общее количество (несколько #) по этническому признаку (например, AFRAM) за год (20082009), но фактическим выходным значением является "name" allTheaterDataV2 'не определено'

1 Ответ

1 голос
/ 05 мая 2019

Это должно работать.

import pandas as pd

df = pd.DataFrame({'ID':['Billy Elliot','next to normal','shrek','guys and dolls',
                         'west side story', 'pal joey'],
                   'Season' : [20082009,20082009,20082009,
                               20082009,20082009,20082009],
                   'AFRAM' : [2,0,4,4,0,1],
                   'ASIAM' : [0,0,1,0,0,0],
                   'CAU' : [48,10,25,24,28,20],
                   'LAT' : [1,0,1,3,18,0],
                   'OTH' : [0,0,0,0,0,0]}) 

print(df)
#    AFRAM  ASIAM  CAU               ID  LAT  OTH    Season
# 0      2      0   48     Billy Elliot    1    0  20082009
# 1      0      0   10   next to normal    0    0  20082009
# 2      4      1   25            shrek    1    0  20082009
# 3      4      0   24   guys and dolls    3    0  20082009
# 4      0      0   28  west side story   18    0  20082009
# 5      1      0   20         pal joey    0    0  20082009

# drop the ID column since it is just a string
df = df.drop(['ID'], axis = 1)

# group by season and add the other columns
df = df.groupby('Season').sum()

print(df)
#             AFRAM  ASIAM  CAU  LAT  OTH
# Season                                 
# 20082009     11      1  155   23    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...