22.4 数据筛选、排序与分组聚合
Python数据操作教程:新手友好的筛选、排序与分组聚合
本教程详细讲解如何使用Python进行数据筛选、排序和分组聚合,涵盖内置数据结构及pandas库,适合初学者学习,帮助掌握数据处理基础。
Python数据筛选、排序与分组聚合教程
欢迎学习Python数据处理的基础操作!本教程将引导您从零开始,掌握数据筛选、排序和分组聚合的核心技能。我们将从Python内置数据结构入手,然后介绍更强大的pandas库,确保新人易于理解和实践。
引言:为什么需要这些操作?
数据处理是编程中常见的任务,尤其是在数据分析、机器学习和Web开发等领域。通过筛选、排序和分组聚合,我们可以高效地提取、组织和汇总数据,以支持更好的决策和理解。
1. 数据筛选
数据筛选是指从数据集中提取满足特定条件的记录。我们将使用两种方法:Python内置列表和pandas库。
使用Python内置列表筛选
在Python中,列表是一种常用的数据结构。假设我们有一个列表存储了数字,想筛选出大于10的元素。
# 示例:使用列表推导式筛选数据
data = [5, 12, 8, 20, 3, 15]
filtered_data = [x for x in data if x > 10]
print(filtered_data) # 输出: [12, 20, 15]
解释:列表推导式[x for x in data if x > 10]遍历列表中的每个元素,只保留那些大于10的元素。
使用pandas库筛选
pandas是一个强大的数据处理库,使用DataFrame存储表格数据。首先,确保已安装pandas:pip install pandas。
import pandas as pd
# 创建一个示例DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Score': [85, 90, 88]}
df = pd.DataFrame(data)
print(df)
# 输出:
# Name Age Score
# 0 Alice 25 85
# 1 Bob 30 90
# 2 Charlie 35 88
# 筛选年龄大于28的记录
filtered_df = df[df['Age'] > 28]
print(filtered_df)
# 输出:
# Name Age Score
# 1 Bob 30 90
# 2 Charlie 35 88
解释:df['Age'] > 28生成一个布尔序列,然后df[...]使用这个序列筛选出对应的行。
2. 数据排序
排序是将数据按特定顺序排列,例如升序或降序。
使用Python内置列表排序
可以使用sorted()函数或列表的sort()方法。
# 示例:对列表进行排序
data = [5, 12, 8, 20, 3, 15]
sorted_data = sorted(data, reverse=True) # 降序排序
print(sorted_data) # 输出: [20, 15, 12, 8, 5, 3]
解释:sorted(data, reverse=True)返回一个新的排序列表,reverse=True表示降序。
使用pandas库排序
pandas提供了sort_values()方法,可以按单列或多列排序。
# 示例:按分数降序排序df
df_sorted = df.sort_values(by='Score', ascending=False)
print(df_sorted)
# 输出:
# Name Age Score
# 1 Bob 30 90
# 2 Charlie 35 88
# 0 Alice 25 85
解释:sort_values(by='Score', ascending=False)指定按'Score'列排序,ascending=False为降序。
3. 分组聚合
分组聚合是指将数据分成多个组,然后对每个组计算聚合统计,如总和、平均值等。pandas库在这方面非常出色。
使用pandas分组聚合
假设我们想按年龄分组,并计算每组得分的平均值。
# 示例:分组聚合
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 30, 25],
'Score': [85, 90, 88, 92]}
df = pd.DataFrame(data)
print(df)
# 输出:
# Name Age Score
# 0 Alice 25 85
# 1 Bob 30 90
# 2 Charlie 30 88
# 3 David 25 92
# 按年龄分组,并计算平均分
grouped_df = df.groupby('Age')['Score'].mean().reset_index()
print(grouped_df)
# 输出:
# Age Score
# 0 25 88.5
# 1 30 89.0
解释:groupby('Age')按年龄分组,['Score'].mean()计算每组分数的平均值,reset_index()将分组结果转换为DataFrame格式。
总结与最佳实践
- 新手提示:先从Python内置列表入手,再学习pandas,因为pandas提供了更高效的矢量操作。
- 常用操作:
- 筛选:使用条件表达式或pandas布尔索引。
- 排序:使用
sorted()或pandas的sort_values()。 - 分组聚合:使用pandas的
groupby()结合聚合函数。
- 进阶学习:探索pandas的其他功能,如合并、数据清洗等。
结语
本教程介绍了Python中数据筛选、排序和分组聚合的基础方法。通过实践这些示例,您将能够处理日常数据任务。继续学习并尝试应用这些技能到实际项目中!
资源推荐:
- 官方Python文档:https://docs.python.org/3/
- pandas官方文档:https://pandas.pydata.org/docs/
希望本教程对您有所帮助!如有疑问,欢迎查阅更多资料或加入Python社区讨论。