Выбор конкретных данных для суммирования и построения графика
это некоторые из данных, которые находятся в листе 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 ответ
Прежде всего, это не будет полным ответом, так как
- Я не знаю, как ты представляешь себе свой финальный сюжет
- Я не знаю, каковы столбцы в вашем DataFrame (рассмотрите возможность использования более описательных меток столбцов, например, "кавказские актеры" вместо "CAU",…)
- мне неясно, можно ли сформировать какой-либо тренд из ваших данных, поскольку размещенный вами снимок экрана показывает равные составы аудитории для первых фильмов
Тем не менее, в этом ответе я опирался на 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()