Python 教程

22.4 数据筛选、排序与分组聚合

Python数据操作教程:新手友好的筛选、排序与分组聚合

Python 教程

本教程详细讲解如何使用Python进行数据筛选、排序和分组聚合,涵盖内置数据结构及pandas库,适合初学者学习,帮助掌握数据处理基础。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

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社区讨论。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包