欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 深入浅出Pandas:从基础到实战(附实战数据集)

深入浅出Pandas:从基础到实战(附实战数据集)

2025/1/3 16:23:52 来源:https://blog.csdn.net/qq_52213943/article/details/144854531  浏览:    关键词:深入浅出Pandas:从基础到实战(附实战数据集)

        Pandas 是 Python 数据分析领域的重要工具,因其高效、灵活的操作接口深受数据分析师与科学家的喜爱。本文分为两个部分:第一部分讲解 Pandas 的基础知识与常用操作,第二部分通过一个实际案例分析展示 Pandas 的应用。

目录

第一部分:Pandas 基础知识与示例

1. Pandas 简介

2. 数据载入与查看

3. 数据选择与过滤

4. 数据清洗

5. 数据转换

6. 数据可视化

7. 数据导出

第二部分:案例分析 - 销售数据分析

1. 数据预处理

2. 数据总览

3. 分类分析

4. 区域分析

5. 时间序列分析

6. 结果总结

第三部分:Pandas 进阶技巧

1. 数据合并与连接

2. 高效处理大数据

3. 应用函数

4. 时间序列处理


第一部分:Pandas 基础知识与示例

1. Pandas 简介

Pandas 是一个基于 NumPy 构建的库,专为数据操作和分析设计。其核心数据结构是:

  • Series:一维数据结构(类似于数组),带有索引,适用于一维数据。

  • DataFrame:二维数据结构(类似于电子表格或 SQL 表),具有行和列的标签。

  • Panel:三维数据结构,已被弃用,不推荐使用。

Pandas 适用于各种数据类型,如时间序列数据、不规则数据等,其强大的功能主要体现在灵活的数据处理、数据清洗和转换能力上。

2. 数据载入与查看

Pandas 提供了丰富的数据导入与导出功能,可以从 CSV、Excel、SQL 数据库等多种格式中读取数据。以下是常见的数据加载方法:

import pandas as pd# 从 CSV 文件载入数据
file_path = 'sales_data.csv'
data = pd.read_csv(file_path)# 查看数据
print(data.head())  # 查看前 5 行
print(data.info())  # 数据概览
print(data.describe())  # 统计摘要# 从 Excel 文件加载数据
excel_data = pd.read_excel('data.xlsx')# 从 JSON 文件加载数据
json_data = pd.read_json('data.json')# 从 SQL 数据库加载数据
import sqlite3
conn = sqlite3.connect('database.db')
sql_data = pd.read_sql_query('SELECT * FROM table_name', conn)
3. 数据选择与过滤

数据选择与过滤是数据分析中最基本的操作之一。Pandas 提供了多种灵活的选择方式:

# 按列选择
data['Product_Category']
data[['Order_ID', 'Sales_Amount']]# 按行选择
data.loc[0]  # 按标签选择
data.iloc[0]  # 按位置选择# 多条件选择
data[(data['Sales_Amount'] > 100) & (data['Region'] == 'North')]# 按标签和位置混合选择
data.loc[0:5, ['Order_ID', 'Sales_Amount']]
data.iloc[0:5, 0:3]
4. 数据清洗

数据清洗是分析的第一步,主要处理缺失值、不合理数据和重复值等问题。以下是常见清洗操作:

# 检查缺失值
print(data.isnull().sum())# 填充缺失值
data['Profit'].fillna(0, inplace=True)
data['Sales_Amount'].fillna(data['Sales_Amount'].mean(), inplace=True)# 删除含有缺失值的行或列
data.dropna(subset=['Region'], inplace=True)# 检查重复值
data.duplicated().sum()# 删除重复值
data.drop_duplicates(inplace=True)# 检查并替换异常值
data.loc[data['Profit'] < 0, 'Profit'] = 0
5. 数据转换

在数据处理中,经常需要对数据进行转换和处理以满足分析需求。例如:

# 日期格式转换
data['Order_Date'] = pd.to_datetime(data['Order_Date'])# 新增列
data['Profit_Margin'] = data['Profit'] / data['Sales_Amount']# 重命名列
data.rename(columns={'Order_ID': 'Order_Number'}, inplace=True)# 数据分组与聚合
grouped = data.groupby('Region')['Sales_Amount'].sum()
print(grouped)# 数据透视表
data_pivot = data.pivot_table(index='Region', columns='Product_Category', values='Sales_Amount', aggfunc='sum')
print(data_pivot)
6. 数据可视化

结合 Matplotlib 或 Seaborn,可以实现数据的直观展示,便于理解数据的分布和趋势。

import matplotlib.pyplot as plt
import seaborn as sns# 简单折线图
data['Sales_Amount'].plot(kind='line')
plt.title('Sales Amount Trend')
plt.xlabel('Index')
plt.ylabel('Sales Amount')
plt.show()# 条形图
data.groupby('Product_Category')['Sales_Amount'].sum().plot(kind='bar')
plt.title('Sales by Product Category')
plt.show()# 使用 Seaborn 绘制分布图
sns.histplot(data['Profit'], kde=True)
plt.title('Profit Distribution')
plt.show()
7. 数据导出

分析完成后,可以将处理好的数据导出为多种格式:

# 导出为 CSV 文件
data.to_csv('processed_data.csv', index=False)# 导出为 Excel 文件
data.to_excel('processed_data.xlsx', index=False)# 导出为 JSON 文件
data.to_json('processed_data.json', orient='records')

第二部分:案例分析 - 销售数据分析

我们将使用本文配套(文章顶部获取)销售数据集(sales_data.csv)进行分析,如图:

1. 数据预处理

首先,加载并清洗数据。

# 加载数据
data = pd.read_csv('sales_data.csv')# 转换日期格式
data['Order_Date'] = pd.to_datetime(data['Order_Date'])# 检查缺失值和重复值
print(data.isnull().sum())
data.drop_duplicates(inplace=True)# 新增一列:利润率
data['Profit_Margin'] = data['Profit'] / data['Sales_Amount']
2. 数据总览
# 销售额和利润的基本统计信息
print(f"总销售额: {data['Sales_Amount'].sum():,.2f}")
print(f"总利润: {data['Profit'].sum():,.2f}")
print(f"平均利润率: {data['Profit_Margin'].mean():.2%}")# 各产品类别的销售额
data.groupby('Product_Category')['Sales_Amount'].sum()
3. 分类分析
# 产品类别分析
category_sales = data.groupby('Product_Category')['Sales_Amount'].sum().sort_values(ascending=False)
category_sales.plot(kind='bar', title='各产品类别销售额')
plt.show()# 找出销量最高的产品类别
most_sold_category = category_sales.idxmax()
print(f"销量最高的产品类别是:{most_sold_category}")
4. 区域分析
# 按区域分析销售额
data.groupby('Region')['Sales_Amount'].sum().plot(kind='pie', title='区域销售额占比', autopct='%1.1f%%')
plt.show()# 找出利润最高的区域
profit_by_region = data.groupby('Region')['Profit'].sum()
print(profit_by_region.sort_values(ascending=False))
5. 时间序列分析
# 按月统计销售额
data['Month'] = data['Order_Date'].dt.to_period('M')
monthly_sales = data.groupby('Month')['Sales_Amount'].sum()# 可视化
top_month = monthly_sales.idxmax()
print(f"最高销售额月份是:{top_month}")
monthly_sales.plot(kind='line', title='月度销售趋势')
plt.show()
6. 结果总结

通过分析,我们得出了以下商业洞察:

  • 热门产品:电子产品是销售额最高的类别。

  • 低利润类别:书籍利润率偏低,可优化供应链。

  • 区域特点:西部地区贡献最大利润。

  • 销售趋势:旺季集中在年初和年中,可增加促销。

试试看 你有其他发现吗?

第三部分:Pandas 进阶技巧

1. 数据合并与连接

Pandas 提供了多种合并数据的方法,包括 mergeconcatjoin

# 合并两个 DataFrame
df1 = pd.DataFrame({'ID': [1, 2], 'Name': ['Alice', 'Bob']})
df2 = pd.DataFrame({'ID': [1, 2], 'Age': [25, 30]})
merged_df = pd.merge(df1, df2, on='ID')
print(merged_df)# 按行拼接
data_combined = pd.concat([data1, data2], axis=0)# 按列拼接
data_combined = pd.concat([data1, data2], axis=1)
2. 高效处理大数据

对于大数据集,Pandas 提供了一些优化技巧:

  • 分块读取

chunk_iter = pd.read_csv('large_file.csv', chunksize=10000)
for chunk in chunk_iter:process(chunk)  # 自定义处理函数

内存优化

data = pd.read_csv('file.csv', dtype={'column_name': 'category'})
3. 应用函数
# 自定义函数def calculate_discount(row):if row['Sales_Amount'] > 200:return 0.1 * row['Sales_Amount']return 0# 应用到每一行
data['Discount'] = data.apply(calculate_discount, axis=1)
4. 时间序列处理

Pandas 提供了强大的时间序列处理功能。

# 重新采样
data.set_index('Order_Date').resample('M').sum()# 移动平均
data['Moving_Avg'] = data['Sales_Amount'].rolling(window=3).mean()

小结

通过基础与进阶结合的讲解,Pandas 的强大功能得以全面展示。从数据清洗到高级分析与预测,Pandas 是数据分析师不可或缺的工具。希望本篇内容能助力大家掌握并应用 Pandas,实现数据驱动的决策。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com