我是編程和 Python 的新手。最近,我正在學習使用熊貓。
我想知道的
我想知道僅處理與第 II 組相關的數字(在附加的 DataFrame 中)的最佳方法是什么。我的意思是,例如對第 II 組和列“專案”的所有成績求和。當然,總結成績是沒有意義的,但資料僅用于說明目的。
我將不勝感激任何意見和建議。
我的資料框
附加的代碼將生成亂數(“組”列除外),但 DataFrame 將始終是這樣的:
Name Album Group Colloquium_1 Colloquium_2 Project
# 0 B 61738 I 5 4 5
# 1 Z 44071 I 5 5 2
# 2 M 87060 I 5 5 5
# 3 L 67974 I 3 5 3
# 4 Z 15617 I 3 2 3
# 5 Z 91872 II 2 4 5
# 6 H 84685 II 4 2 5
# 7 T 17943 II 2 5 2
# 8 L 54302 II 2 5 3
# 9 O 53433 II 5 4 5
生成我的 DataFrame 的代碼:
import pandas as pd
import random as rd
def gen_num():
num = ""
for i in range(5):
num = str(rd.randint(0,9))
return num
names = ['A','B','C','D','E','F','G','H','I','J','K', 'L','M','N','O', \
'P','R','S','T','W','Z']
list_names = []
list_album = []
list_group = []
list_coll_1 = []
list_coll_2 = []
list_project = []
num_of_students = 10
for i in range(num_of_students):
list_names.append(rd.choice(names))
list_album.append(gen_num())
list_coll_1.append(rd.randint(2, 5))
list_coll_2.append(rd.randint(2, 5))
list_project.append(rd.randint(2, 5))
if i < (num_of_students / 2):
list_group.append('I')
else:
list_group.append('II')
group = pd.DataFrame(list_names)
group.set_axis(['Name'], axis=1, inplace=True)
group['Album'] = list_album
group['Group'] = list_group
group['Colloquium_1'] = list_coll_1
group['Colloquium_2'] = list_coll_2
group['Project'] = list_project
uj5u.com熱心網友回復:
一種解決方案是首先過濾 DataFrame:
group[group["Group"] == "II"]["Project"].sum()
#Out: 18
把它分成幾部分:
首先,這部分為每一行回傳一系列布林值(真/假),以確定“組”中的值是否等于"II":
group["Group"] == "II"
#0 False
#1 False
#2 False
#3 False
#4 False
#5 True
#6 True
#7 True
#8 True
#9 True
#Name: Group, dtype: bool
接下來,將其寫入group[]為以下行回傳一個過濾的資料框True:
group[group["Group"] == "II"]
# Name Album Group Colloquium_1 Colloquium_2 Project
#5 E 77371 II 4 5 3
#6 N 90525 II 4 3 3
#7 H 89889 II 3 4 5
#8 T 88154 II 3 4 5
#9 E 56176 II 3 2 2
最后使用["Project"]回傳列中值的熊貓系列:
group[group["Group"] == "II"]["Project"]
#5 3
#6 3
#7 5
#8 5
#9 2
#Name: Project, dtype: int64
最后.sum()回傳系列的總和 (18)。
uj5u.com熱心網友回復:
您可以使用該DataFrame.groupby函式根據在其他列中定義的“組”分析來自一列或多列的資料。
例如,像
group.groupby('Group')['Project'].sum()
或者,如果您只想要結果,您可以使用掩碼:
group[group['Group']=='II']['Project'].sum()
uj5u.com熱心網友回復:
如果您只使用“第二組”資料,最好將您的 df 重新分配給一個新變數:
df_ii = df[df.Group=='II']
接下來,您可以總結“專案”成績:
df_ii.Project.sum()
或者,如果求和沒有意義,您可以取平均值:
df_ii.Project.mean()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/479723.html
