用模拟数据完整演示Python数据分析实战:基于NumPy和pandas的详解

        数据分析是现代数据科学和商业决策中的基础环节。本文以Python中两个最重要的库——NumPypandas为工具,结合模拟生成的销售数据,分10个阶段详尽展示一个完整的数据分析流程。每个阶段配有具体代码和操作说明,帮助你系统掌握数据分析实战技巧。

目录

1. 模拟数据生成

2. 数据导入与初步观察

3. 数据清洗:缺失值处理

4. 数据转换:类型转换

5. 数据筛选与过滤

6. 数据排序

7. 数据分组与聚合

8. 数据透视表

9. 时间序列分析

10. 数据合并与连接

11. 统计分析与可视化准备

总结

完整代码:

结语


1. 模拟数据生成

在没有真实数据时,模拟数据是学习和测试的好帮手。这里生成一份包含1000条销售记录的表格,字段包含:

  • date:销售日期,连续日期

  • category:产品类别(A、B、C)

  • region:销售地区(North、South、East、West)

  • sales:销售额(服从正态分布)

  • quantity:销售数量(服从泊松分布)

同时故意让部分销售额缺失,模拟真实场景。

import numpy as np
import pandas as pd

np.random.seed(42)  # 固定随机种子保证复现

n = 1000

dates = pd.date_range(start='2023-01-01', periods=n, freq='D')
categories = np.random.choice(['A', 'B', 'C'], size=n, p=[0.4, 0.35, 0.25])
regions = np.random.choice(['North', 'South', 'East', 'West'], size=n)
sales = np.random.normal(loc=1000, scale=300, size=n).round(2)
quantity = np.random.poisson(lam=5, size=n)

# 制造50个销售额缺失值
sales[np.random.choice(n, 50, replace=False)] = np.nan

df = pd.DataFrame({
    'date': dates,
    'category': categories,
    'region': regions,
    'sales': sales,
    'quantity': quantity
})

print(df.head())

2. 数据导入与初步观察

完成数据载入后,第一步是快速浏览数据结构:

  • head()查看前几行数据,了解字段和样本类型;

  • info()查看每列数据类型及非空数量,识别缺失值;

  • describe()获得数值型字段的统计汇总,如均值、标准差、最大最小值。

    print(df.info())
    print(df.describe())
    

    初步发现数据缺失、字段类型、分布范围,为后续处理做准备。

3. 数据清洗:缺失值处理

缺失值常见于真实数据,若不处理会导致分析偏差或报错。常用处理方式:

  • 删除缺失数据行(简单粗暴,可能丢失重要信息);

  • 用统计量填充(均值、中位数、众数等);

  • 根据业务逻辑填充或插值。

本文选择用销售额均值填充:

print(df.isnull().sum())  # 查看缺失情况

mean_sales = df['sales'].mean()
df['sales'].fillna(mean_sales, inplace=True)  # 均值填充

print(f"填充后的销售额均值:{mean_sales:.2f}")

4. 数据转换:类型转换

正确的数据类型便于计算和分析,特别是:

  • 日期列应转换为 datetime 类型,支持时间序列操作;

  • 分类字段转换为 category 类型,节省内存并提升性能;

  • 数值字段确保是合适的数值类型。

df['date'] = pd.to_datetime(df['date'])
df['category'] = df['category'].astype('category')
df['region'] = df['region'].astype('category')
df['quantity'] = df['quantity'].astype(int)

print(df.dtypes)

5. 数据筛选与过滤

<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值