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

时间:2019-10-28 19:34:53

标签: python pandas dataframe data-science

下午好。

我有一个问题要尝试使用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分未授予。

     

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

谢谢,凯文

3 个答案:

答案 0 :(得分:0)

您可以使用熊猫的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文件中的第一行与该数据框中的列名相对应。这使得在熊猫中处理数据框更加容易,因此受到鼓励。其次,我看到使用index_col=0参数可以将国家/地区名称用作数据框中的索引。在这种情况下,您应该选择在index函数上使用loc,如下所示:

df.index[df['Gold'] == df['Gold'].max()][0]

答案 1 :(得分: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()

答案 2 :(得分:0)

函数argmax()返回数据帧中最大元素的索引。

return df['Gold'].argmax()