4.1 选择和过滤数据
选择和过滤数据是数据分析中的基本技巧,让我们深入了解如何在 Pandas 中执行这些操作。
4.1.1 基础知识
- 选择列: 使用列名来选择数据,例如
df['column_name']
。 - 选择行: 使用条件语句过滤行,例如
df[df['column_name'] > value]
。 - 使用
loc
和iloc
:loc
用于基于标签的选择,而iloc
用于基于整数位置的选择。
4.1.2 重点案例:电影评分数据分析
假设你有一份电影评分的数据集,需要根据不同的条件选择和过滤数据。
数据准备
import pandas as pd # 示例电影评分数据 data = { 'movie_id': [1, 2, 3, 4, 5], 'title': ['Movie A', 'Movie B', 'Movie C', 'Movie D', 'Movie E'], 'rating': [8.5, 7.0, 9.0, 6.5, 7.5] } movies_df = pd.DataFrame(data)
选择和过滤数据
# 选择评分高于8的电影 high_rating_movies = movies_df[movies_df['rating'] > 8] # 使用 loc 选择特定列 title_ratings = movies_df.loc[:, ['title', 'rating']]
4.1.3 拓展案例一:股市数据筛选
处理一份股市数据,筛选出特定条件下的股票。
数据准备
# 示例股市数据 stock_data = { 'stock_id': ['S1', 'S2', 'S3', 'S4'], 'price': [100, 150, 90, 120], 'volume': [300, 200, 500, 100] } stocks_df = pd.DataFrame(stock_data)
数据筛选
# 选择价格低于120的股票 low_price_stocks = stocks_df[stocks_df['price'] < 120]
4.1.4 拓展案例二:客户订单数据查询
假设你正在处理一份客户订单的数据集,需要根据客户ID和订单量进行筛选。
数据准备
# 示例客户订单数据 order_data = { 'order_id': [101, 102, 103, 104], 'customer_id': [1, 2, 2, 1], 'quantity': [3, 4, 5, 2] } orders_df = pd.DataFrame(order_data)
数据查询
# 选择特定客户的订单 customer_orders = orders_df[orders_df['customer_id'] == 2] # 使用 iloc 选择前两行 first_two_orders = orders_df.iloc[:2]
通过这些案例,我们演示了如何在 Pandas 中选择和过滤数据。无论是电影评分、股市数据还是客户订单,掌握这些技巧可以帮助你更有效地对数据进行分析。
4.2 数据排序和排名
在数据分析中,能够有效地对数据进行排序和排名是非常重要的。这不仅帮助我们快速找到重要信息,还能揭示数据的潜在模式。
4.2.1 基础知识
- 排序数据: 使用
sort_values()
方法根据一列或多列的值对数据进行排序。 - 排名数据: 使用
rank()
方法为每行分配一个排名。 - 降序排序: 通过设置
ascending=False
,可以进行降序排序。
4.2.2 重点案例:销售业绩排名
假设你有一份销售员的销售业绩数据,需要对其进行排序和排名。
数据准备
import pandas as pd # 示例销售业绩数据 sales_data = { 'salesperson': ['Alice', 'Bob', 'Charlie', 'David'], 'sales': [200, 150, 300, 250] } sales_df = pd.DataFrame(sales_data)
排序和排名
# 根据销售额排序 sorted_sales_df = sales_df.sort_values(by='sales', ascending=False) # 为销售员排名 sorted_sales_df['rank'] = sorted_sales_df['sales'].rank(ascending=False)
4.2.3 拓展案例一:学生考试成绩排序
处理一份学生的考试成绩表,根据成绩进行排序。
数据准备
# 示例学生考试成绩数据 exam_scores_data = { 'student': ['John', 'Emma', 'Mark', 'Laura'], 'score': [88, 92, 75, 85] } scores_df = pd.DataFrame(exam_scores_data)
数据排序
# 根据考试成绩排序 sorted_scores_df = scores_df.sort_values(by='score', ascending=False)
4.2.4 拓展案例二:产品评价排序
假设你有一份产品的顾客评价数据,需要根据评价分数排序。
数据准备
# 示例产品评价数据 product_reviews_data = { 'product_id': [101, 102, 103, 104], 'review_score': [4.5, 3.8, 4.2, 5.0] } reviews_df = pd.DataFrame(product_reviews_data)
评价排序
# 根据评价分数排序 sorted_reviews_df = reviews_df.sort_values(by='review_score', ascending=False)
通过这些案例,我们展示了如何在 Pandas 中有效地对数据进行排序和排名。这些技巧对于快速理解数据结构、识别关键信息和模式至关重要,无论是在业绩排名、学生成绩排序,还是产品评价分析中。
4.3 列的添加与删除
在数据分析的过程中,我们经常需要根据分析需求添加新的列或者删除不必要的列。掌握如何高效地进行这些操作对于数据处理来说至关重要。
4.3.1 基础知识
- 添加列: 可以直接通过赋值的方式添加新列,例如
df['new_column'] = value
。 - 基于现有列计算新列: 通过对现有列进行运算或应用函数来创建新列。
- 删除列: 使用
drop()
方法删除列,例如df.drop('column_name', axis=1, inplace=True)
。
4.3.2 重点案例:雇员薪资调整
假设你正在处理一份雇员的薪资表,需要根据他们的绩效评分调整薪资。
数据准备
import pandas as pd # 示例雇员薪资数据 salary_data = { 'employee': ['Alice', 'Bob', 'Charlie'], 'base_salary': [30000, 40000, 50000], 'performance_score': [3.2, 4.5, 3.8] } salary_df = pd.DataFrame(salary_data)
添加新列
# 根据绩效评分调整薪资 salary_df['adjusted_salary'] = salary_df['base_salary'] * (1 + salary_df['performance_score'] / 10)
删除列
# 删除绩效评分列 salary_df.drop('performance_score', axis=1, inplace=True)
4.3.3 拓展案例一:学生总成绩计算
处理一份学生的成绩单,需要计算每个学生的总成绩。
数据准备
# 示例学生成绩数据 grades_data = { 'student': ['John', 'Emma', 'Mark'], 'math': [88, 76, 92], 'science': [85, 90, 88] } grades_df = pd.DataFrame(grades_data)
计算总成绩
# 计算总成绩 grades_df['total'] = grades_df['math'] + grades_df['science']
4.3.4 拓展案例二:产品销售数据分析
假设你有一份产品的销售记录,需要分析每个产品的总销售额。
数据准备
# 示例产品销售数据 sales_data = { 'product_id': [101, 102, 103], 'units_sold': [30, 50, 20], 'unit_price': [10, 20, 15] } sales_df = pd.DataFrame(sales_data)
计算总销售额
# 计算每个产品的总销售额 sales_df['total_sales'] = sales_df['units_sold'] * sales_df['unit_price']
通过这些案例,我们展示了如何在 Pandas 中有效地添加和删除列,以及如何基于现有数据创建新的数据列。这些技巧是数据预处理和特征工程的关键部分,无论是处理薪资数据、学生成绩,还是产品销售记录。