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 构建的库,专为数据操纵和分析设计。其核心数据布局是:
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 提供了多种合并数据的方法,包括 merge、concat 和 join。
# 合并两个 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,实现数据驱动的决策。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4