【发布时间】:2021-12-21 12:10:38
【问题描述】:
我想要一个饼图来比较幸存者的年龄组。问题是我不知道如何计算相同年龄的人。正如您在屏幕截图底部看到的,它显示 142 列。但是,数据集中有 891 人。
import pandas as pd
import seaborn as sns # for test data only
# load test data from seaborn
df_t = sns.load_dataset('titanic')
# capitalize the column headers to match code used below
df_t.columns = df_t.columns.str.title()
dft = df_t.groupby(['Age', 'Survived']).size().reset_index(name='count')
def get_num_people_by_age_category(dft):
dft["age_group"] = pd.cut(x=dft['Age'], bins=[0,18,60,100], labels=["young","middle_aged","old"])
return dft
# Call function
dft = get_num_people_by_age_category(dft)
print(dft)
输出
【问题讨论】:
-
由于
groubpy().size()调用,您将获得 142 行。它为每个唯一年龄返回一个包含 1 行的数据框。如果您想要每个年龄旁边有计数的原始数据框,我建议使用pandas.merge()函数。 -
@Marmaduke 通常这就是
pandas.core.groupby.DataFrameGroupBy.transform的用途
标签: python pandas matplotlib bar-chart pie-chart