使用Python进行数据分析与可视化:从入门到实战

今天 3阅读

在当今数据驱动的世界中,数据分析和可视化已经成为软件开发、商业决策、科学研究等多个领域不可或缺的一部分。Python凭借其简洁的语法和丰富的库支持(如Pandas、NumPy、Matplotlib、Seaborn等),成为进行数据分析与可视化的首选语言之一。

本文将介绍如何使用Python进行基本的数据分析流程,包括数据加载、清洗、处理、分析以及可视化展示,并通过一个完整的代码示例来演示整个过程。


环境准备

在开始之前,请确保你的系统中已经安装了以下Python库:

pandasnumpymatplotlibseaborn

可以通过以下命令安装这些库(如果尚未安装):

pip install pandas numpy matplotlib seaborn

项目背景与目标

我们以某电商平台上商品销售数据为例,假设我们有一个CSV文件 sales_data.csv,其中包含如下字段:

字段名描述
OrderID订单编号
Product商品名称
Category商品类别
Quantity销售数量
UnitPrice单价
TotalSales总销售额(Quantity * UnitPrice)
OrderDate下单日期

我们的目标是:

加载并查看数据。清洗数据中的缺失值或异常值。分析不同类别的总销售额。可视化各品类销售占比和趋势。

数据加载与初步探索

首先,我们使用 Pandas 来读取 CSV 文件并查看前几行数据。

import pandas as pd# 加载数据df = pd.read_csv('sales_data.csv')# 查看前5行数据print(df.head())# 获取数据基本信息print(df.info())

输出结果可能如下所示:

   OrderID     Product      Category  Quantity  UnitPrice  TotalSales   OrderDate0  1001      Laptop A    Electronics        2      899.99      1799.98  2024-01-011  1002      Phone B     Electronics        3      699.99      2099.97  2024-01-012  1003      Shirt C     Clothing           5       29.99       149.95  2024-01-023  1004      Headphones  Electronics        1      149.99       149.99  2024-01-024  1005      Shoes D     Footwear           2      119.99       239.98  2024-01-03<class 'pandas.core.frame.DataFrame'>RangeIndex: 1000 entries, 0 to 999Data columns (total 7 columns): #   Column      Non-Null Count  Dtype  ---  ------      --------------  -----   0   OrderID     1000 non-null   int64   1   Product     1000 non-null   object  2   Category    1000 non-null   object  3   Quantity    1000 non-null   int64   4   UnitPrice   1000 non-null   float64 5   TotalSales  1000 non-null   float64 6   OrderDate   1000 non-null   object 

我们可以看到数据集中没有缺失值,所有字段都已正确填充。


数据清洗与预处理

虽然目前没有缺失值,但我们仍可以做一些基本的检查和转换。

例如,将 OrderDate 转换为日期类型以便后续按时间分析:

# 将OrderDate列转换为datetime类型df['OrderDate'] = pd.to_datetime(df['OrderDate'])# 添加“月份”列用于分组统计df['Month'] = df['OrderDate'].dt.month_name()print(df[['OrderDate', 'Month']].head())

输出:

   OrderDate     Month0 2024-01-01   January1 2024-01-01   January2 2024-01-02   January3 2024-01-02   January4 2024-01-03   January

数据分析

1. 按类别统计总销售额

category_sales = df.groupby('Category')['TotalSales'].sum().reset_index()print(category_sales)

输出示例:

      Category  TotalSales0    Clothing    15200.001  Electronics    54320.502   Footwear     10450.75

2. 按月统计销售额变化趋势

monthly_sales = df.groupby('Month')['TotalSales'].sum().reset_index()print(monthly_sales)

输出示例:

      Month  TotalSales0   January    26500.251  February    25430.502     March    28049.25

数据可视化

我们将使用 Matplotlib 和 Seaborn 进行图表绘制。

1. 各类别销售额饼图

import matplotlib.pyplot as pltimport seaborn as snsplt.figure(figsize=(8, 6))sns.set(style="whitegrid")# 饼图plt.pie(category_sales['TotalSales'], labels=category_sales['Category'],        autopct='%1.1f%%', startangle=140)plt.title('Sales Distribution by Category')plt.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.plt.show()

Pie Chart

注:此处仅为示意图片,实际运行时会生成真实图表。

2. 每月销售额趋势折线图

plt.figure(figsize=(10, 6))sns.lineplot(x='Month', y='TotalSales', data=monthly_sales, marker='o')plt.title('Monthly Sales Trend')plt.xlabel('Month')plt.ylabel('Total Sales ($)')plt.xticks(rotation=45)plt.grid(True)plt.tight_layout()plt.show()

Line Chart


高级分析:商品销量排名

我们可以计算出每种商品的总销量,并进行排序。

product_quantity = df.groupby('Product')['Quantity'].sum().sort_values(ascending=False).reset_index()print(product_quantity.head(10))

输出示例:

      Product  Quantity0    Phone B        1201    Laptop A       1102    Headphones      953    Shoes D         854    Shirt C         80

与建议

通过上述步骤,我们完成了对销售数据的完整分析流程:

数据加载与预览数据清洗与格式转换多维度的统计分析图表可视化展示

基于这些分析结果,企业可以做出更明智的决策,例如:

增加高销量产品的库存;对低销售额类别进行促销活动;根据季节性销售趋势调整营销策略。

完整代码汇总

以下是完整的 Python 脚本整合版:

import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns# 1. 加载数据df = pd.read_csv('sales_data.csv')# 2. 数据预处理df['OrderDate'] = pd.to_datetime(df['OrderDate'])df['Month'] = df['OrderDate'].dt.month_name()# 3. 分析 - 按类别统计销售额category_sales = df.groupby('Category')['TotalSales'].sum().reset_index()# 4. 分析 - 按月统计销售额monthly_sales = df.groupby('Month')['TotalSales'].sum().reset_index()# 5. 分析 - 商品销量排名product_quantity = df.groupby('Product')['Quantity'].sum().sort_values(ascending=False).reset_index()# 6. 可视化 - 类别销售额饼图plt.figure(figsize=(8, 6))plt.pie(category_sales['TotalSales'], labels=category_sales['Category'],        autopct='%1.1f%%', startangle=140)plt.title('Sales Distribution by Category')plt.axis('equal')plt.show()# 7. 可视化 - 月度销售额趋势图plt.figure(figsize=(10, 6))sns.lineplot(x='Month', y='TotalSales', data=monthly_sales, marker='o')plt.title('Monthly Sales Trend')plt.xlabel('Month')plt.ylabel('Total Sales ($)')plt.xticks(rotation=45)plt.grid(True)plt.tight_layout()plt.show()# 8. 打印商品销量排名print("Top 10 Products by Quantity Sold:")print(product_quantity.head(10))

十、

数据分析与可视化不仅帮助我们理解数据背后的趋势和规律,也为业务决策提供了强有力的支撑。Python以其强大的生态系统和易用性,成为数据分析领域的主流工具之一。

如果你希望进一步提升技能,可以尝试使用 Jupyter Notebook 编写交互式报告,或者学习使用 Plotly 等高级可视化库进行动态图表展示。

欢迎继续关注后续文章,我们将深入探讨机器学习模型构建、API集成、自动化报表生成等内容!


字数统计:约1400字

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第14432名访客 今日有30篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!