Day32:Python数据分析项目实战

alt

回顾一下我们在整个数据分析篇所学的知识,我们已经学习了Numpy、Pandas、Matplotlib、Seaborn、pyecharts等常用库,掌握了数据分析的基本概念和常用技巧。现在,我们将应用这些知识来完成一个实战项目。

项目任务

项目任务:分析某电子商务平台的销售数据,了解销售情况、商品类别、用户行为等信息,并进行可视化展示。

数据准备:为了完成这个项目,我们需要准备一个包含以下列的数据集:

列名 数据类型 描述
date 日期/时间 销售发生的日期和时间
product 字符串 销售的产品名称
category 字符串 产品所属的类别
price 浮点数 单个产品的价格
quantity 整数 销售的产品数量
user_id 字符串 购买产品的用户ID

数据生成:我们可以利用下面这段代码生成一份数据集。运行以下代码将会生成一个名为 sales_data.csv 的数据文件,包含了日期、用户ID、产品、类别、数量和价格等字段的销售数据。您可以将这个文件用作数据分析项目的数据集。请注意,在运行代码之前,确保已安装 Faker 库,可以使用 pip install faker 进行安装。

import pandas as pd
import numpy as np
import random
from faker import Faker

# 生成随机的销售数据集
fake = Faker()
np.random.seed(0)

# 生成日期序列
dates = pd.date_range(start='2022-01-01', end='2022-12-31', freq='D')

data = []
# 生成异常销售数据
data.append(['2022-03-28 00:00:00', np.nan, "A", "Electronics", 500, 1])
data.append(['2022/05/28 00:00:00', 1001, "B", "Food", 50, 3])
data.append(['2022-12-28 00:00:00', 1002, "C", "Food", -50, -3])
data.append(['2022/06/21 00:00:00', 1012, "F", "Clothing", 100, 2])
data.append(['2022/05/12 00:00:00', 4112, "F", "Clothing", np.nan, np.nan])
data.append(['2022-11-11 00:00:00', np.nan, "C", "Food", np.nan, np.nan])

# 生成正常销售数据
for date in dates:
    num_sales = np.random.randint(50, 100)  # 随机生成每日的销售笔数
    for _ in range(num_sales):
        user_id = fake.random_int(min=1000, max=9999)
        product = fake.random_element(elements=("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"))
        category = fake.random_element(elements=("Electronics", "Clothing", "Fruit", "Food", "Book"))
        quantity = np.random.randint(1, 10)
        price = np.random.randint(10, 500)
        data.append([date, user_id, product, category, quantity, price])

# 创建数据框
columns = ['date', 'user_id', 'product', 'category', 'quantity', 'price']
df = pd.DataFrame(data, columns=columns)

# 保存数据集为CSV文件
df.to_csv('sales_data.csv', index=False)

因为使用随机数生成数据,故读者最后的数据分析结果不一定与这里相同,读者可以通过从该连接提取码:02jc)获取本文生成的数据集。

1. 数据加载和预处理

1.1 导入所需的库和模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import pyecharts.options as opts
from pyecharts.charts import Bar, Line

1.2 加载数据集

# 假设数据集文件名为 sales_data.csv,路径为 data/sales_data.csv,具体路径需要视情况而定
data = pd.read_csv('data/sales_data.csv')

1.3 数据预处理

我们查看得到的数据集,但是因为太过于庞大,故而只看前几行。我们知道数据集需要清洗,故选择处理缺失值与重复值,统一日期类型,筛选去掉异常值。

# 查看数据集的前几行
print(data.head())

# 处理缺失值
data = data.dropna()

# 转换日期列的数据类型
data['date'] = pd.to_datetime(data['date'],format='ISO8601')

# 处理重复值
data = data.drop_duplicates()

# 处理异常值
data = data[(data['price'] > 0) & (data['quantity'] > 0)]

#再次查看
print(data.head())

1altalt

2. 数据分析

2.1 统计销售总金额

销售总金额为每单销售额之和,每单销售额即每行的单价*数量,我们这里新增了一行表示该订单的总价。

data['total'] = data['price'] * data['quantity']
total_sales = data['total'].sum()
print("总销售金额:", total_sales) # 总销售金额: 35212829.0

2.2 分析销售额随时间的变化趋势

需要按照月份进行分组,然后对每行总价求和。

# 按月份统计销售额
monthly_sales = data['total'].groupby(data['date'].dt.to_period('M')).sum()
print(monthly_sales)

alt

2.3 分析商品类别的销售情况

需要对类型进行分组,然后对每行求和。

# 按商品类别统计销售额
category_sales = data.groupby('category')['total'].sum()
print(category_sales)

alt

2.4 分析用户行为

对用户ID进行分组,然后求取每组的数量,再统计每个数量出现的次数。

# 统计用户购买次数
user_purchase_count = data.groupby('user_id').size()
print(user_purchase_count)
# 统计每个次数的人数分布
every_count_users = user_purchase_count.value_counts()
print(every_count_users)

7alt

3. 数据可视化

展示通过以上分析,我们已经得到了一些数据的统计结果,接下来使用绘图库将这些结果可视化展示出来。

3.1 销售额随时间的变化趋势折线图

# 绘制折线图
line_chart = Line()
line_chart.add_xaxis(list(monthly_sales.index.astype(str)))
line_chart.add_yaxis("", monthly_sales)
line_chart.set_global_opts(title_opts=opts.TitleOpts(title="销售额随时间变化"))
line_chart.render("sales_trend.html")

5alt

3.2 商品类别销售情况柱状图

# 绘制柱状图
category_sales.plot(kind='bar')
plt.xlabel('Category')
plt.ylabel('Total Sales')
plt.title('Sales by Category')

6alt

3.3 用户购买次数分布图

# 绘制柱状图
every_count_users.plot(kind='pie',pctdistance=0.9,explode=(0,0,0,0,0,0,0.1,0.2,0.3,0.4,0.5,0.6))
plt.xlabel('frequency')
plt.ylabel('count')
plt.title('Purchase frequency distribution')

8alt

总结

以上就是一个简单的数据分析项目实战,通过分析销售数据、商品类别和用户行为,我们可以对电子商务平台的销售情况有一个更全面的了解,并通过可视化图表将分析结果直观地展示出来。你可以根据实际需求进一步扩展和优化项目,应用更多数据分析技巧和方法。

至此,我们数据分析篇的内容就结束了,下一节我们将进入Python爬虫篇。

大模型-AI小册 文章被收录于专栏

1. AI爱好者,爱搞事的 2. 想要掌握第二门语言的Javaer或者golanger 3. 决定考计算机领域研究生,给实验室搬砖的uu,强烈建议你花时间学完这个,后续搬砖比较猛 4. 任何对编程感兴趣的,且愿意掌握一门技能的人

全部评论
这个图用excel也可以画啊
点赞
送花
回复
分享
发布于 2023-07-14 15:19 上海

相关推荐

点赞 评论 收藏
转发
2 17 评论
分享
牛客网
牛客企业服务