在Pandas中分割数据框架可以使用groupby()方法,该方法可以根据一列或多列的值来进行分组,也可以进行聚合操作。下面详细讲解如何根据多列的值分割数据框架。
1.首先导入Pandas库
import pandas as pd
2.创建一个包含多列数据的数据框架,例如:
df = pd.DataFrame({'Name':['Alice','Bob','Charlie','David','Emma','Frank','Gina','Helen','Iris'],
'Gender':['F','M','M','M','F','M','F','F','F'],
'Age':[21,23,22,25,20,28,27,24,26],
'Salary':[5000,6000,5500,7000,4800,8000,7500,6800,7100]})
print(df)
输出结果为:
Name Gender Age Salary
0 Alice F 21 5000
1 Bob M 23 6000
2 Charlie M 22 5500
3 David M 25 7000
4 Emma F 20 4800
5 Frank M 28 8000
6 Gina F 27 7500
7 Helen F 24 6800
8 Iris F 26 7100
3.根据两列的值进行分组,例如根据性别和年龄进行分组:
grouped = df.groupby(['Gender','Age'])
4.使用聚合函数,例如计算每组的平均工资:
avg_salary = grouped['Salary'].mean()
print(avg_salary)
输出结果为:
Gender Age
F 20 4800
21 5000
24 6800
26 7100
27 7500
M 22 5500
23 6000
25 7000
28 8000
Name: Salary, dtype: int64
5.如果希望将每组的平均工资添加到原始数据框架中,可以使用transform()方法:
df['AvgSalary'] = grouped['Salary'].transform('mean')
print(df)
输出结果为:
Name Gender Age Salary AvgSalary
0 Alice F 21 5000 5000.0
1 Bob M 23 6000 6000.0
2 Charlie M 22 5500 5500.0
3 David M 25 7000 7000.0
4 Emma F 20 4800 4800.0
5 Frank M 28 8000 8000.0
6 Gina F 27 7500 7500.0
7 Helen F 24 6800 6800.0
8 Iris F 26 7100 7100.0
6.如果希望将每组的平均工资按照升序或降序排序,可以使用sort_values()方法:
df.sort_values(['Gender','Age','Salary'],ascending=[True,True,True],inplace=True)
print(df)
输出结果为:
Name Gender Age Salary AvgSalary
4 Emma F 20 4800 4800.0
0 Alice F 21 5000 5000.0
7 Helen F 24 6800 6800.0
8 Iris F 26 7100 7100.0
6 Gina F 27 7500 7500.0
2 Charlie M 22 5500 5500.0
1 Bob M 23 6000 6000.0
3 David M 25 7000 7000.0
5 Frank M 28 8000 8000.0
至此,我们完成了根据多列的值分割数据框架的完整攻略。