SQL題,Python做
2019-08-30 17:37 作者:愛數據分析社區(qū) | 我要投稿

01 問題描述
這個SQL題來源于自己的 Python 學習交流群,具體是這樣的:用一條SQL語句查詢出每門課都大于80的學生姓名和總成績。

02 解題思路
使用Python來解決這個問題,大概的思路如下:
首先篩選出課程成績小于等于80的列(布爾選擇)。
取這些列的學生姓名的唯一值。
這些學生姓名就是不符合條件的,我們反選符合條件的。
最后用groupby求和即可完成。
03 解題代碼
① 通過布爾選擇成績小于等于80的列。
data[data['score'] <= 80]
其實通過結果可以看出,張三和李四就是不符合條件的學生了。
② 獲取不符合條件的學生姓名唯一值
data[data['score'] <= 80]['name'].unique()
③ 我們只需反選不符合條件的學生姓名列,就可以篩選出符合條件的學生的成績單了。
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())]
④ 最后,我們使用groupby就可以完成整個題目的要求了。
data[~data['name'].isin(data[data['score'] <= 80]['name'].unique())].groupby('name')['score'].sum()
作者:羅羅攀
想學習數據分析的小伙伴 添加微信:lovedata19 備注「B站」即可
標簽: