马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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企服之家,中国第一个企服评测及商务社交产业平台。 |