基本上,我是数据分析的新手,我得到了一个数据集,我想分析并得到一些图表来测试假设,并了解更多关于奥运会的数据。
现在,我想找出哪个年龄段获得的金牌、银牌和铜牌最多,身高也是如此。
这是我创建的代码,我认为它的工作原理(我不确定),但需要像20分钟处理和格式是奇怪的,这给我的麻烦,把在一个图形。我想知道怎样才能把处理时间大大缩短,怎样才能把它做成图->。
#calculating number of medals each person has
j=0
i=0
height_gold=[0]*230
height_silver=[0]*230
height_bronze=[0]*230
while(i<271116):
while(j<230):
if df.iloc[i,4]==j:
if df.iloc[i,14]=='Gold':
height_gold[j]=height_gold[j]+1
if df.iloc[i,14]=='Silver':
height_silver[j]=height_silver[j]+1
if df.iloc[i,14]=='Bronze':
height_bronze[j]=height_bronze[j]+1
j=j+1
#print('new_age')
i=i+1
j=0
#print('new_row')
print(height_gold)
print(height_silver)
print(height_bronze)
另外,我也非常想知道如何能够找出哪项运动获得的奖牌最多,哪个奥运年获得的奖牌最多,哪个国家获得的奖牌最多。
现在我在这里,我还想问一下我还能从这个csv.文件中找到什么->。
问题是,你发现 j
以一种低效率的方式(检查所有230种可能性)。您可以直接设置 j
到 df.iloc[i, 4]
. 你还建立了自己的 for
循环,我在这里也修正了这个问题。
height_gold = [0] * 230
height_silver = [0] * 230
height_bronze = [0] * 230
for i in range(271116):
j = df.iloc[i, 4]
if df.iloc[i, 14] == 'Gold':
height_gold[j] += 1
elif df.iloc[i, 14] == 'Silver':
height_silver[j] += 1
elif df.iloc[i, 14] == 'Bronze':
height_bronze[j] += 1
print(height_gold)
print(height_silver)
print(height_bronze)
如果你有非整数,这个应该可以处理。
height_gold = [0] * 230
height_silver = [0] * 230
height_bronze = [0] * 230
for i in range(271116):
j = df.iloc[i, 4]
try:
j = int(round(j))
except ValueError:
continue
if df.iloc[i, 14] == 'Gold':
height_gold[j] += 1
elif df.iloc[i, 14] == 'Silver':
height_silver[j] += 1
elif df.iloc[i, 14] == 'Bronze':
height_bronze[j] += 1
print(height_gold)
print(height_silver)
print(height_bronze)
我做了一些改进,可以大大加快进度。
df.iloc[i,4]
作为数组中的索引。有了这些,你可以得到以下代码。
medals={'Gold': [0]*230,
'Silver': [0]*230,
'Bronze': [0]*230}
for i in range(271116):
country = int(df.iloc[i,4])
medals[df.iloc[i,14]][country] += 1
print(medals['Gold'])
print(medals['Silver'])
print(medals['Bronze'])