apply
是 pandas
库的一个很重要的函数,多和 groupby
函数一起用,也可以直接用于 DataFrame
和 Series
对象。主要用于数据聚合运算,可以很方便的对分组进行现有的运算和自定义的运算。
使用的数据集是美国人口普查的数据,可以从这里下载,里面包含了CSV数据文件和PDF说明文件,说明文件里解释了每个变量的意义。
数据大致是这个样子:
美国人口普查数据
census_df = pd.read_csv('census.csv')
only_county = census_df[census_df['SUMLEV'] == 50]
def top(df, n=3, column='CENSUS2010POP'):
return df.sort_values(column, ascending=False)[:n]['CENSUS2010POP'].sum()
grouped = only_county[['STNAME', 'CTYNAME', 'CENSUS2010POP']].groupby('STNAME').apply(top)
grouped.sort_values(ascending=False)[:3].index.tolist()
输出:
census_df = pd.read_csv('census.csv')
only_county = census_df[census_df['SUMLEV'] == 50]
def get_change(row):
pop_year = row[['POPESTIMATE2010',
'POPESTIMATE2011',
'POPESTIMATE2012',
'POPESTIMATE2013',
'POPESTIMATE2014',
'POPESTIMATE2015']]
return pop_year.max() - pop_year.min()
only_county.loc[only_county.apply(get_change, axis=1).argmax()]['CTYNAME']
输出: