聚合数据并获取总和和计数
Aggregating data and getting sum and counts
我在 python 中有一个包含很多行的对象:
输入:
Team1 Player1 idTrip13 133
Team2 Player333 idTrip10 18373
Team3 Player22 idTrip12 17338899
Team2 Player293 idTrip02 17656
Team3 Player20 idTrip11 1883
Team1 Player1 idTrip19 19393
我需要汇总这些数据(如数据透视表 table)。
我正在处理的输出:
Team1 Player1 : 2 trips : sum(133+19393)
Team2 Player333 : 1 trip : 18373; Player293 : 1 trip : 17656
Team3 Player22 : 1 trip : 17338899; Player20 : 1 trip : 1883
有人可以建议使用 Python 中的适当对象,以便我可以得到以下输出吗?
print team, player, trips, time
使用groupby函数
将您的数据放入列表列表中,每个内部列表将是数据框中的一行。
In[1]:
mydata = [['Team1', 'Player1', 'idTrip13', 133], ['Team2', 'Player333', 'idTrip10', 18373],
['Team3', 'Player22', 'idTrip12', 17338899], ['Team2', 'Player293','idTrip02', 17656],
['Team3', 'Player20', 'idTrip11', 1883], ['Team1', 'Player1', 'idTrip19', 19393]]
df = pd.DataFrame(mydata, columns = ['team', 'player', 'trips', 'time'])
df
Out[1]:
team player trips time
0 Team1 Player1 idTrip13 133
1 Team2 Player333 idTrip10 18373
2 Team3 Player22 idTrip12 17338899
3 Team2 Player293 idTrip02 17656
4 Team3 Player20 idTrip11 1883
5 Team1 Player1 idTrip19 19393
Call groupby()
,传递你想用作石斑鱼的栏目,
并将函数应用于组。
例子
例如。 1 求出每个团队进行的旅行次数。 team
是石斑鱼,我们在 ['trips']
.
列上应用函数 count()
In[2]:
trip_count = df.groupby(by = ['team'])['trips'].count()
trip_count
Out[2]:
team
Team1 2
Team2 2
Team3 2
Name: trips, dtype: int64
例如。 2(多列):找出团队中每个球员花费在旅行上的总时间。我们使用 2 列 ['team', 'player']
作为石斑鱼,并在列 ['time']
.
上应用函数 sum()
In[3]:
trip_time = df.groupby(by = ['team', 'player'])['time'].sum()
trip_time
Out[3]:
team player
Team1 Player1 19526
Team2 Player293 17656
Player333 18373
Team3 Player20 1883
Player22 17338899
Name: time, dtype: int64
例如。 3 (multiple functions): 对于团队中的每个球员,求旅行的总次数和旅行的总时间。
player_total = df.groupby(by = ['team', 'player']).agg({'time' : 'sum', 'trips' : 'count'})
player_total
Out[4]:
trips time
team player
Team1 Player1 2 19526
Team2 Player293 1 17656
Player333 1 18373
Team3 Player20 1 1883
Player22 1 17338899
我在 python 中有一个包含很多行的对象:
输入:
Team1 Player1 idTrip13 133
Team2 Player333 idTrip10 18373
Team3 Player22 idTrip12 17338899
Team2 Player293 idTrip02 17656
Team3 Player20 idTrip11 1883
Team1 Player1 idTrip19 19393
我需要汇总这些数据(如数据透视表 table)。
我正在处理的输出:
Team1 Player1 : 2 trips : sum(133+19393)
Team2 Player333 : 1 trip : 18373; Player293 : 1 trip : 17656
Team3 Player22 : 1 trip : 17338899; Player20 : 1 trip : 1883
有人可以建议使用 Python 中的适当对象,以便我可以得到以下输出吗?
print team, player, trips, time
将您的数据放入列表列表中,每个内部列表将是数据框中的一行。
In[1]: mydata = [['Team1', 'Player1', 'idTrip13', 133], ['Team2', 'Player333', 'idTrip10', 18373], ['Team3', 'Player22', 'idTrip12', 17338899], ['Team2', 'Player293','idTrip02', 17656], ['Team3', 'Player20', 'idTrip11', 1883], ['Team1', 'Player1', 'idTrip19', 19393]] df = pd.DataFrame(mydata, columns = ['team', 'player', 'trips', 'time']) df Out[1]: team player trips time 0 Team1 Player1 idTrip13 133 1 Team2 Player333 idTrip10 18373 2 Team3 Player22 idTrip12 17338899 3 Team2 Player293 idTrip02 17656 4 Team3 Player20 idTrip11 1883 5 Team1 Player1 idTrip19 19393
Call
groupby()
,传递你想用作石斑鱼的栏目, 并将函数应用于组。
例子
例如。 1 求出每个团队进行的旅行次数。 team
是石斑鱼,我们在 ['trips']
.
count()
In[2]:
trip_count = df.groupby(by = ['team'])['trips'].count()
trip_count
Out[2]:
team
Team1 2
Team2 2
Team3 2
Name: trips, dtype: int64
例如。 2(多列):找出团队中每个球员花费在旅行上的总时间。我们使用 2 列 ['team', 'player']
作为石斑鱼,并在列 ['time']
.
sum()
In[3]:
trip_time = df.groupby(by = ['team', 'player'])['time'].sum()
trip_time
Out[3]:
team player
Team1 Player1 19526
Team2 Player293 17656
Player333 18373
Team3 Player20 1883
Player22 17338899
Name: time, dtype: int64
例如。 3 (multiple functions): 对于团队中的每个球员,求旅行的总次数和旅行的总时间。
player_total = df.groupby(by = ['team', 'player']).agg({'time' : 'sum', 'trips' : 'count'})
player_total
Out[4]:
trips time
team player
Team1 Player1 2 19526
Team2 Player293 1 17656
Player333 1 18373
Team3 Player20 1 1883
Player22 1 17338899