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

如何自动化生成含可变mag列的随机测试DataFrame?

自动化生成星系观测数据DataFrame

需求说明

需要实现可复用函数random_df,通过df = random_df(size=(N, M))的调用方式,生成包含N个星系、M列mag观测值的DataFrame,结构与示例完全匹配:

  • Name列:自动命名为Galaxy 1到Galaxy N
  • mag1~magM列:取值范围10-20的随机浮点数,随机位置包含NaN值
  • redshift列:取值范围0.01-5的随机浮点数,无NaN

实现代码

import numpy as np
import pandas as pd

def random_df(size=(10, 3)):
    n_galaxies, n_mag_cols = size
    
    # 生成Name列
    name_col = [f"Galaxy {i+1}" for i in range(n_galaxies)]
    
    # 生成带随机NaN的mag列
    mag_cols = []
    for _ in range(n_mag_cols):
        # 生成基础随机数值
        mag_vals = np.random.uniform(10, 20, n_galaxies)
        # 随机选1-2个位置设为NaN(可按需调整NaN数量)
        nan_indices = np.random.choice(n_galaxies, np.random.randint(1,3), replace=False)
        mag_vals[nan_indices] = np.nan
        mag_cols.append(mag_vals)
    
    # 生成无NaN的redshift列
    redshift_col = np.random.uniform(0.01, 5, n_galaxies)
    
    # 拼接成DataFrame并设置列名
    col_names = ["Name"] + [f"mag{i+1}" for i in range(n_mag_cols)] + ["redshift"]
    df = pd.DataFrame(np.column_stack([name_col] + mag_cols + [redshift_col]), columns=col_names)
    
    # 修正数值列类型
    for col in col_names[1:]:
        df[col] = df[col].astype(float)
    
    return df

使用示例

调用函数生成20个星系、5列mag的DataFrame:

df = random_df(size=(20, 5))
print(df.head())

输出示例(随机生成,结果不固定):

Name       mag1       mag2       mag3       mag4       mag5  redshift
0   Galaxy 1  12.345678        NaN  15.678901  18.123456  11.987654    0.5678
1   Galaxy 2  19.876543  13.234567  14.567890        NaN  17.876543    2.3456
2   Galaxy 3        NaN  16.789012  12.123456  15.432109  18.901234    3.9876
3   Galaxy 4  14.567890  18.901234        NaN  13.678901  12.345678    1.2345
4   Galaxy 5  17.890123  11.234567  19.432109  16.789012        NaN    4.5678

代码说明

  • Name列:通过列表推导式自动生成连续命名的星系名称
  • mag列:每列先生成10-20的随机浮点数,再随机选择1-2个位置替换为NaN(可修改np.random.randint(1,3)调整NaN数量范围)
  • redshift列:直接生成0.01-5的随机浮点数,确保无缺失值
  • 类型修正:由于拼接时数值列会被转为object类型,最后统一转换为float保证数据类型正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:06:52