亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

數(shù)據(jù)分析面試題之Pandas中的groupby

ThinkSNS / 1817人閱讀

摘要:昨天晚上,筆者有幸參加了一場面試,有一個環(huán)節(jié)就是現(xiàn)場編程題目如下示例數(shù)據(jù)如下,求每名學生對應的成績最高的那門科目與,用實現(xiàn)這個題目看上去很簡單,其實,并不簡單。

??昨天晚上,筆者有幸參加了一場面試,有一個環(huán)節(jié)就是現(xiàn)場編程!題目如下:
??示例數(shù)據(jù)如下,求每名學生(ID)對應的成績(score)最高的那門科目(class)與ID,用Python實現(xiàn):

這個題目看上去很簡單,其實,并不簡單。即要求輸出形式如下:

??當然,我們一開始能先到的是利用Pandas中的groupby,按ID做groupby,按score取最大值,可是之后的過程就難辦了,是將得到的結(jié)果與原表做join,還是再想其他辦法?
??怎么辦?答案就是Pandas中g(shù)roupby的官方文檔說明,網(wǎng)址為:http://pandas.pydata.org/pand...。 截圖如下:

本文將會用到其中的三個函數(shù): idxmax(), idxmin(), rank().
??其實,讓我們來解決一開始提出的問題,Python代碼如下:

import pandas as pd

df = pd.read_csv("E://score.csv")
new_df = df.groupby("ID")["score"].idxmax()
for i in new_df:
    print(df.iloc[i, :].tolist()[0:2])

分析代碼,df.groupby("ID")["score"].idxmax()是對原數(shù)據(jù)按ID做groupby,然后取score列,用idxmax()取出成績最好的行。然后取出這些行即可。
??當然,上述代碼存在兩個衍生問題:

每名學生(ID)對應的成績(score)最低的那門科目(class)與ID;

若有學生他的某些科目的成績是一樣的,求每名學生對應的成績最高的那些科目與ID。

??第一個問題,很好解決,在原先的代碼中,將idxmax()替換為idxmin()即可,輸出的結(jié)果如下:

[1, "C"]
[2, "A"]
[3, "C"]
[4, "A"]

??第二個問題,如果有學生他的某些科目的成績是一樣的,如下面的示例數(shù)據(jù):

在上面數(shù)據(jù)中,第1,3名學生的最高成績存在重復。這是,我們需要用到rank()函數(shù),Python代碼如下:

import pandas as pd
import numpy as np

df = pd.read_csv("E://score.csv")
df["rank"] = df.groupby("ID")["score"].rank(method="min", ascending=False).astype(np.int64)
#print(df)
print(df[df["rank"] == 1][["ID", "class"]])

輸出結(jié)果如下:

    ID class
0    1     A
1    1     B
5    2     C
7    3     B
8    3     C
11   4     C

可以看到,我們得到的df這個數(shù)據(jù)框添加了一列rank,就是每名學生的科目的成績排名,得到的df如下:

    ID class  score  rank
0    1     A     90     1
1    1     B     90     1
2    1     C     70     3
3    2     A     60     3
4    2     B     80     2
5    2     C    100     1
6    3     A     90     3
7    3     B    100     1
8    3     C    100     1
9    4     A     70     3
10   4     B     80     2
11   4     C     90     1

然后按需要取出數(shù)據(jù)即可。

??本次分享到此結(jié)束,歡迎大家交流~~

注意:本人現(xiàn)已開通微信公眾號: Python爬蟲與算法(微信號為:easy_web_scrape), 歡迎大家關(guān)注哦~~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42637.html

相關(guān)文章

  • ??僅剩20分鐘挑戰(zhàn)一道Pandas面試題??生死競速??簡直刺激?

    ?作者主頁:小小明-代碼實體 ?簡介:Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者?、數(shù)據(jù)處理專家? ?歡迎點贊 ? 收藏 ?留言 ? 昨晚有位童鞋一道Pandas面試題完全沒有思路不會做,通過黃同學找到我時,這道題目離提交答案僅剩20分鐘,不過我最終還是在15分鐘之內(nèi)解決了問題,這整個過程簡直是刺激~??? 原題題目如下: 最終要求輸出: 要在20分鐘內(nèi)解決這個問題,對于我來說最困難的第一步就是理解...

    objc94 評論0 收藏0
  • python處理數(shù)據(jù)的風騷操作[pandasgroupby&agg]

    摘要:最后使用聚合函數(shù),就得到了結(jié)果。從實現(xiàn)上看,返回的是一個結(jié)構(gòu),這個結(jié)構(gòu)必須調(diào)用聚合函數(shù)如之后,才會得到結(jié)構(gòu)為的數(shù)據(jù)結(jié)果。 介紹 每隔一段時間我都會去學習、回顧一下python中的新函數(shù)、新操作。這對于你后面的工作是有一定好處的。本文重點介紹了pandas中g(shù)roupby、Grouper和agg函數(shù)的使用。這2個函數(shù)作用類似,都是對數(shù)據(jù)集中的一類屬性進行聚合操作,比如統(tǒng)計一個用戶在每個月...

    paraller 評論0 收藏0
  • 數(shù)據(jù)科學系統(tǒng)學習】Python # 數(shù)據(jù)分析基本操作[四] 數(shù)據(jù)規(guī)整化和數(shù)據(jù)聚合與分組運算

    摘要:數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑數(shù)據(jù)聚合與分組運算數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑合并數(shù)據(jù)集可根據(jù)一個或多個鍵將不同中的行鏈接起來。函數(shù)根據(jù)樣本分位數(shù)對數(shù)據(jù)進行面元劃分。字典或,給出待分組軸上的值與分組名之間的對應關(guān)系。 本篇內(nèi)容為整理《利用Python進行數(shù)據(jù)分析》,博主使用代碼為 Python3,部分內(nèi)容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個...

    The question 評論0 收藏0
  • Pandas使用DataFrame進行數(shù)據(jù)分析比賽進階之路(一)

    摘要:按照某一列的數(shù)值進行排序后輸出。根據(jù)國籍這一列的屬性進行分組,然后分別計算相同國籍的潛力的平均值。值得注意的是,在分組函數(shù)后面使用一個函數(shù)可以返回帶有分組大小的結(jié)果。 這篇文章中使用的數(shù)據(jù)集是一個足球球員各項技能及其身價的csv表,包含了60多個字段。數(shù)據(jù)集下載鏈接:數(shù)據(jù)集 1、DataFrame.info() 這個函數(shù)可以輸出讀入表格的一些具體信息。這對于加快數(shù)據(jù)預處理非常有幫助。 ...

    yeooo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<