IT评测·应用市场-qidao123.com

标题: 深入浅出Pandas:从基础到实战(附实战数据集) [打印本页]

作者: 九天猎人    时间: 2025-1-1 19:39
标题: 深入浅出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 构建的库,专为数据操纵和分析设计。其核心数据布局是:

Pandas 适用于各种数据类型,如时间序列数据、不规则数据等,其强盛的功能主要体如今灵活的数据处理、数据清洗和转换能力上。
2. 数据载入与查看

Pandas 提供了丰富的数据导入与导出功能,可以从 CSV、Excel、SQL 数据库等多种格式中读取数据。以下是常见的数据加载方法:
  1. import pandas as pd
  2. # 从 CSV 文件载入数据
  3. file_path = 'sales_data.csv'
  4. data = pd.read_csv(file_path)
  5. # 查看数据
  6. print(data.head())  # 查看前 5 行
  7. print(data.info())  # 数据概览
  8. print(data.describe())  # 统计摘要
  9. # 从 Excel 文件加载数据
  10. excel_data = pd.read_excel('data.xlsx')
  11. # 从 JSON 文件加载数据
  12. json_data = pd.read_json('data.json')
  13. # 从 SQL 数据库加载数据
  14. import sqlite3
  15. conn = sqlite3.connect('database.db')
  16. sql_data = pd.read_sql_query('SELECT * FROM table_name', conn)
复制代码
3. 数据选择与过滤

数据选择与过滤是数据分析中最根本的操纵之一。Pandas 提供了多种灵活的选择方式:
  1. # 按列选择
  2. data['Product_Category']
  3. data[['Order_ID', 'Sales_Amount']]
  4. # 按行选择
  5. data.loc[0]  # 按标签选择
  6. data.iloc[0]  # 按位置选择
  7. # 多条件选择
  8. data[(data['Sales_Amount'] > 100) & (data['Region'] == 'North')]
  9. # 按标签和位置混合选择
  10. data.loc[0:5, ['Order_ID', 'Sales_Amount']]
  11. data.iloc[0:5, 0:3]
复制代码
4. 数据清洗

数据清洗是分析的第一步,主要处理缺失值、不合理数据和重复值等问题。以下是常见清洗操纵:
  1. # 检查缺失值
  2. print(data.isnull().sum())
  3. # 填充缺失值
  4. data['Profit'].fillna(0, inplace=True)
  5. data['Sales_Amount'].fillna(data['Sales_Amount'].mean(), inplace=True)
  6. # 删除含有缺失值的行或列
  7. data.dropna(subset=['Region'], inplace=True)
  8. # 检查重复值
  9. data.duplicated().sum()
  10. # 删除重复值
  11. data.drop_duplicates(inplace=True)
  12. # 检查并替换异常值
  13. data.loc[data['Profit'] < 0, 'Profit'] = 0
复制代码
5. 数据转换

在数据处理中,常常需要对数据进行转换和处理以满足分析需求。比方:
  1. # 日期格式转换
  2. data['Order_Date'] = pd.to_datetime(data['Order_Date'])
  3. # 新增列
  4. data['Profit_Margin'] = data['Profit'] / data['Sales_Amount']
  5. # 重命名列
  6. data.rename(columns={'Order_ID': 'Order_Number'}, inplace=True)
  7. # 数据分组与聚合
  8. grouped = data.groupby('Region')['Sales_Amount'].sum()
  9. print(grouped)
  10. # 数据透视表
  11. data_pivot = data.pivot_table(index='Region', columns='Product_Category', values='Sales_Amount', aggfunc='sum')
  12. print(data_pivot)
复制代码
6. 数据可视化

结合 Matplotlib 或 Seaborn,可以实现数据的直观展示,便于明确数据的分布和趋势。
  1. import matplotlib.pyplot as plt
  2. import seaborn as sns
  3. # 简单折线图
  4. data['Sales_Amount'].plot(kind='line')
  5. plt.title('Sales Amount Trend')
  6. plt.xlabel('Index')
  7. plt.ylabel('Sales Amount')
  8. plt.show()
  9. # 条形图
  10. data.groupby('Product_Category')['Sales_Amount'].sum().plot(kind='bar')
  11. plt.title('Sales by Product Category')
  12. plt.show()
  13. # 使用 Seaborn 绘制分布图
  14. sns.histplot(data['Profit'], kde=True)
  15. plt.title('Profit Distribution')
  16. plt.show()
复制代码
7. 数据导出

分析完成后,可以将处理好的数据导出为多种格式:
  1. # 导出为 CSV 文件
  2. data.to_csv('processed_data.csv', index=False)
  3. # 导出为 Excel 文件
  4. data.to_excel('processed_data.xlsx', index=False)
  5. # 导出为 JSON 文件
  6. data.to_json('processed_data.json', orient='records')
复制代码
第二部分:案例分析 - 贩卖数据分析

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

1. 数据预处理

起首,加载并清洗数据。
  1. # 加载数据
  2. data = pd.read_csv('sales_data.csv')
  3. # 转换日期格式
  4. data['Order_Date'] = pd.to_datetime(data['Order_Date'])
  5. # 检查缺失值和重复值
  6. print(data.isnull().sum())
  7. data.drop_duplicates(inplace=True)
  8. # 新增一列:利润率
  9. data['Profit_Margin'] = data['Profit'] / data['Sales_Amount']
复制代码
2. 数据总览

  1. # 销售额和利润的基本统计信息
  2. print(f"总销售额: {data['Sales_Amount'].sum():,.2f}")
  3. print(f"总利润: {data['Profit'].sum():,.2f}")
  4. print(f"平均利润率: {data['Profit_Margin'].mean():.2%}")
  5. # 各产品类别的销售额
  6. data.groupby('Product_Category')['Sales_Amount'].sum()
复制代码
3. 分类分析

  1. # 产品类别分析
  2. category_sales = data.groupby('Product_Category')['Sales_Amount'].sum().sort_values(ascending=False)
  3. category_sales.plot(kind='bar', title='各产品类别销售额')
  4. plt.show()
  5. # 找出销量最高的产品类别
  6. most_sold_category = category_sales.idxmax()
  7. print(f"销量最高的产品类别是:{most_sold_category}")
复制代码
4. 区域分析

  1. # 按区域分析销售额
  2. data.groupby('Region')['Sales_Amount'].sum().plot(kind='pie', title='区域销售额占比', autopct='%1.1f%%')
  3. plt.show()
  4. # 找出利润最高的区域
  5. profit_by_region = data.groupby('Region')['Profit'].sum()
  6. print(profit_by_region.sort_values(ascending=False))
复制代码
5. 时间序列分析

  1. # 按月统计销售额
  2. data['Month'] = data['Order_Date'].dt.to_period('M')
  3. monthly_sales = data.groupby('Month')['Sales_Amount'].sum()
  4. # 可视化
  5. top_month = monthly_sales.idxmax()
  6. print(f"最高销售额月份是:{top_month}")
  7. monthly_sales.plot(kind='line', title='月度销售趋势')
  8. plt.show()
复制代码
6. 结果总结

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

试试看 你有其他发现吗?
第三部分:Pandas 进阶本领

1. 数据合并与连接

Pandas 提供了多种合并数据的方法,包括 merge、concat 和 join。
  1. # 合并两个 DataFrame
  2. df1 = pd.DataFrame({'ID': [1, 2], 'Name': ['Alice', 'Bob']})
  3. df2 = pd.DataFrame({'ID': [1, 2], 'Age': [25, 30]})
  4. merged_df = pd.merge(df1, df2, on='ID')
  5. print(merged_df)
  6. # 按行拼接
  7. data_combined = pd.concat([data1, data2], axis=0)
  8. # 按列拼接
  9. data_combined = pd.concat([data1, data2], axis=1)
复制代码
2. 高效处理大数据

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

  1. chunk_iter = pd.read_csv('large_file.csv', chunksize=10000)
  2. for chunk in chunk_iter:
  3.     process(chunk)  # 自定义处理函数
复制代码
内存优化
  1. data = pd.read_csv('file.csv', dtype={'column_name': 'category'})
复制代码
3. 应用函数

  1. # 自定义函数
  2. def calculate_discount(row):
  3.     if row['Sales_Amount'] > 200:
  4.         return 0.1 * row['Sales_Amount']
  5.     return 0
  6. # 应用到每一行
  7. data['Discount'] = data.apply(calculate_discount, axis=1)
复制代码
4. 时间序列处理

Pandas 提供了强盛的时间序列处理功能。
  1. # 重新采样
  2. data.set_index('Order_Date').resample('M').sum()
  3. # 移动平均
  4. data['Moving_Avg'] = data['Sales_Amount'].rolling(window=3).mean()
复制代码
小结
通过基础与进阶结合的讲解,Pandas 的强盛功能得以全面展示。从数据清洗到高级分析与预测,Pandas 是数据分析师不可或缺的工具。渴望本篇内容能助力大家把握并应用 Pandas,实现数据驱动的决策。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4