You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于高斯分布(Gauss Law)生成DataFrame的日期列?

生成符合高斯分布日期的停车数据DataFrame

要生成服从高斯分布的日期列,核心思路是基于一个中心时间戳(均值),生成正态分布的时间偏移量,再转换为日期格式。以下是修改后的完整代码,替换了原代码中普通随机日期的生成逻辑:

import pandas as pd
from faker import Faker
import random
from datetime import datetime

# 初始化Faker
fake = Faker('zh_CN')

# 1. 定义高斯分布的中心日期(均值)和时间偏移的标准差
# 中心日期设为2023年10月1日,转换为时间戳(单位:秒)
center_date = datetime(2023, 10, 1)
center_timestamp = center_date.timestamp()

# 标准差设为7天的秒数(86400秒/天 *7),可根据需求调整
std_dev = 86400 * 7

# 2. 生成符合高斯分布的日期数据
def generate_gauss_date():
    # 生成高斯分布的时间偏移量
    offset = random.gauss(mu=0, sigma=std_dev)
    # 计算目标时间戳并转换为datetime对象
    target_timestamp = center_timestamp + offset
    # 处理极端情况:避免时间戳为负(可选,根据业务场景调整)
    if target_timestamp < 0:
        target_timestamp = center_timestamp
    return datetime.fromtimestamp(target_timestamp)

# 3. 生成停车数据集
parking_data = []
for _ in range(10000):
    start_date = generate_gauss_date()
    # 生成停车时长(1小时到24小时之间的随机数)
    duration_hours = random.randint(1, 24)
    end_date = start_date + pd.Timedelta(hours=duration_hours)
    
    parking_data.append({
        '车牌号码': fake.license_plate(),
        '入场时间': start_date,
        '离场时间': end_date,
        '停车时长(小时)': duration_hours,
        '停车区域': fake.random_element(elements=['A区', 'B区', 'C区', 'D区'])
    })

# 转换为DataFrame
df = pd.DataFrame(parking_data)
print(df.head())

关键细节说明:

  • 中心日期与标准差:你可以根据业务需求调整center_date(比如选择停车高峰日)和std_dev(控制日期的分散程度,标准差越大,日期分布越广)。
  • 时间戳处理:random.gauss()生成的偏移量可能为负,导致时间戳小于0(对应1970年之前的日期),代码中加入了简单的兜底逻辑,你也可以根据需要替换为其他处理方式。
  • 其他字段:保留了原代码中Faker生成的车牌、停车区域等字段,你可以根据实际需求修改这些字段的生成规则。

内容的提问来源于stack exchange,提问作者Jonah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:30:56