Выбор конкретных данных для суммирования и построения графика - PullRequest
0 голосов
/ 06 мая 2019

это некоторые данные, которые находятся в таблице Excel

Я хочу выбрать музыкальные театральные представления (известные в коде как «ID»), в которых было больше меньшинств, чем кавказцев в актерском составе. После определения я хотел поместить информацию о выбранном коде в новый фрейм данных, будет только держать шоу, потому что это будет легче манипулировать. В новом фрейме данных я хочу, чтобы в той же строке для шоу была указана соответствующая этническая принадлежность, чтобы я мог сравнить ее с этнической аудиторией. Затем я попытался построить эту информацию.

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

Я работаю с python, и я попытался удалить ненужные данные, выбрав столбцы с помощью операторов if, чтобы во фрейме данных были только шоу, в которых больше меньшинств, чем у кавказцев. Затем я попытался использовать это информация в сюжете. Я не уверен, что мне нужно отфильтровать все ненужные столбцы, если я не использую их в расчетах

import numpy as np
import pandas as pd
#first need to import numpy so that calculations can be made

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']))
# need to download excel sheet as csv and then upload into colab so that it can
# be manipulated as a dataframe 

# want to select shows(ID) that had more minorities than Caucasians in the cast
# once determined, the selected shows should be placed into a new data frame that 
# will only hold the shows and the related ethnicity, and compared to audience ethnicity
# this information should then be plotted 

# first we will determine the shows that have a majority ethnic cast

minorcal = list(df)
minorcal.remove('CAU')
minoritycastSUM = df[minorcal].sum(axis=1)

# print(minorcal)

# next, we determine how many people in the cast were Caucasian, so remove all others

caucasiancal = list(df)
# i first wanted to do caucasiancal.remove('AFRAM', 'ASIAM', 'LAT', 'OTH')
# but got the statement I could only have 1 argument so i just put each on their own line
caucasiancal.remove('AFRAM')
caucasiancal.remove('ASIAM')
caucasiancal.remove('LAT')
caucasiancal.remove('OTH')
idrowcaucal = df[caucasiancal].sum(axis=1)

minoritycompare = old.filter(['idrowcaucal','minoritycastSUM'])
print(minoritycompare)

# now compare the two values per line
if minoritycastSUM < caucasiancal:
  minoritydf = pd.df.minorcal.append()
  # plot new data frame per each show and compare to audience ethnicity
  df.plot(x=['AFRAM', 'ASIAM', 'CAU', 'LAT', 'OTH', 'WHT', 'BLK', 'ASN', 'HSP', 'MRO'], y = [''])
             # i am unsure how to call the specific value for each column
  plt.title('ID Ethnicity Comparison')
             # i am unsure how to call the specific show so that only one show is per plot so for now i just subbed in 'ID' 
  plt.xlabel('Ethnicity comparison')
  plt.ylabel('Number of Cast Members/Audience Members')
  plt.show()

Я хотел бы видеть фрейм данных с конкретными шоу, которые соответствуют критериям, а затем график шоу, но сейчас я получаю ошибки о том, как сформулировать новый фрейм данных и python, говоря, что длины оператор if не может быть использован. [2]

1 Ответ

0 голосов
/ 07 мая 2019

Прежде всего, это не будет полным ответом , как

  1. Я не знаю, как вы представляете свой окончательный сюжет, чтобы выглядеть как
  2. Я не знаю, что такое столбцы в вашем DataFrame (рассмотрите возможность использования более описательных меток столбцов, например, «кавказские актеры» вместо «CAU»,…)
  3. мне неясно, можно ли сформировать какой-либо тренд из ваших данных, поскольку размещенный вами снимок экрана показывает равные составы аудитории для первых фильмов

Тем не менее, я построил на DataFrame в этот ответ , и, возможно, этот начальный график «не кавказского / кавказского отношения» на фильм может указать вам правильное направление. Возможно, вы могли бы создать аналогичный набор столбцов суммы и отношения для столбцов аудитории, а затем построить график отношения акторов как функции отношения аудитории, чтобы увидеть, предпочитает ли более кавказская аудитория более или менее кавказских актеров ( Полагаю, это что вы ищете? ).

import pandas as pd
import matplotlib.pyplot as plt

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],
                   'WHT' : [73.7,73.7,73.7,73.7,73.7,73.7]}) 

## define a sum column for non caucasian actors (I suppose?)
df['non_cau']=df[['AFRAM','ASIAM','LAT','OTH']].sum(axis=1)
## build a ratio of non caucasian to caucasian
df['cau_ratio']=df['non_cau']/df['CAU']

## make a quick plot
fig,ax=plt.subplots()
ax.scatter(df['ID'],df['cau_ratio'])
ax.set_ylabel('non cau / cau ratio')
plt.tight_layout()
plt.show()
...