这显然很简单,但作为一个笨拙的新人我会陷入困境.
我有一个CSV文件,其中包含3个列,State,Office ID和该办公室的Sales.
我想计算某个州的每个办公室的销售百分比(每个州的所有百分比总和为100%).
df = pd.DataFrame({'state': ['CA', 'WA', 'CO', 'AZ'] * 3,
'office_id': range(1, 7) * 2,
'sales': [np.random.randint(100000, 999999)
for _ in range(12)]})
df.groupby(['state', 'office_id']).agg({'sales': 'sum'})
Run Code Online (Sandbox Code Playgroud)
返回:
sales
state office_id
AZ 2 839507
4 373917
6 347225
CA 1 798585
3 890850
5 454423
CO 1 819975
3 202969
5 614011
WA 2 163942
4 369858
6 959285
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚如何"高达"的state水平groupby与总起来sales对整个state计算分数.
我正在试验kaggle.com泰坦尼克号数据集(泰坦尼克号上每个人的数据),并想出了这样的性别分类:
gender = df.sex.value_counts()
gender
male 577
female 314
Run Code Online (Sandbox Code Playgroud)
我想知道泰坦尼克号上每个性别的百分比.
我的方法略逊于理想:
from __future__ import division
pcts = gender / gender.sum()
pcts
male 0.647587
female 0.352413
Run Code Online (Sandbox Code Playgroud)
有更好的(更惯用的)方式吗?
谢谢!