如何使用Python的熊猫数据结构语法解决数据科学问题



下午好。

我有一个问题,我正试图使用Python脚本语言中的"panda"统计数据结构和相关语法来解决。我已经毕业于美国一所大学,目前正在参加Coursera.org的"Python for Data Science"课程,只是为了专业发展,该课程由密歇根大学在Coursera的平台上在线提供。我也不会和任何人分享答案,因为我遵守Coursera的荣誉准则。

首先,我收到了一张关于世界各国获得奥运奖牌的熊猫数据帧图:

# Summer    Gold    Silver  Bronze  Total   # Winter    Gold.1  Silver.1    Bronze.1    Total.1 # Games Gold.2  Silver.2    Bronze.2    Combined total  ID
Afghanistan 13  0   0   2   2   0   0   0   0   0   13  0   0   2   2   AFG
Algeria 12  5   2   8   15  3   0   0   0   0   15  5   2   8   15  ALG
Argentina   23  18  24  28  70  18  0   0   0   0   41  18  24  28  70  ARG
Armenia 5   1   2   9   12  6   0   0   0   0   11  1   2   9   12  ARM
Australasia 2   3   4   5   12  0   0   0   0   0   2   3   4   5   12  ANZ

其次,问题是,"哪个国家在夏季奥运会上获得的金牌最多?">

第三,关于如何使用Python的panda语法回答的提示是:"此函数应返回单个字符串值。">

第四,我尝试在Python的panda语法中输入这个作为答案:

import pandas as pd
df = pd.read_csv('olympics.csv', index_col=0, skiprows=1)
def answer_one():
if df.columns[:2]=='00':
df.rename(columns={col:'Country'+col[4:]}, inplace=True)    
df_max = df[df[max('Gold')]]
return df_max['Country']
answer_one() 

第五,我在Coursera的自动平地机上尝试过其他各种各样的答案,但它不断给出这样的错误信息:


评估函数answer_one时出现问题,它引发了一个异常,因此被视为不正确。

未获得0.125分。


你能帮我解决这个问题吗?欢迎任何提示/建议/评论。

谢谢Kevin

您可以使用pandas的loc函数来查找与"黄金"列最大值对应的国家名称:

data = [('Afghanistan', 13),
('Algeria', 12), 
('Argentina', 23)]
df = pd.DataFrame(data, columns=['Country', 'Gold'])
df['Country'].loc[df['Gold'] == df['Gold'].max()]

最后一行返回阿根廷作为答案。


编辑1:我刚刚注意到您使用pd.read_csv('olympics.csv', index_col=0, skiprows=1)导入.csv文件。如果省略skiprows参数,则会得到一个数据帧,其中.csv文件中的第一行对应于数据帧中的列名。这使得在panda中处理数据帧变得更加容易,这是值得鼓励的。其次,我看到使用index_col=0参数时,您使用国家名称作为数据帧中的索引。在这种情况下,您应该选择使用index而不是loc函数,如下所示:

df.index[df['Gold'] == df['Gold'].max()][0]
import pandas as pd
def answer_one():
df1=pd.Series.max(df['Gold'])
df1=df[df['Gold']==df1]
return df1.index[0]
answer_one()
函数argmax((返回数据帧中最大元素的索引。
return df['Gold'].argmax()

最新更新