0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

X文字のランダム文字列(Yパターン)を合計Z個生成してExcelにダミーデータを作るためのPythonのコード

Posted at

やりたいこと

Excelでダミーデータを作りたいのですが、簡単な方法がないのかを探していました。

以前、このような記事を見つけていいなと思っていたのですが

randarray()の場合、完全にランダムになってしまいます。

今回作りたいダミーデータは、実際の業務における「製品コード」のようなもので、その「製品コード」をランダムで並べたいんですよね。ちょうど以下のようなイメージです。

image.png

ソリューション

いい感じのものがなかったので、書いてしまいました。

rand_excel.py
import random
import string
import numpy as np
import pandas as pd

# 作るファイル名
out_file = 'rand_sheet.xlsx' 
# 作る行数
out_lows = 100

# num文字のランダム文字列を作成
def make_random_str(num):
    # 英数字をすべて取得
    dat = string.digits + string.ascii_lowercase + string.ascii_uppercase
    return _get_random_dat(num, dat)

# num桁のランダム数列を作成
def make_random_int(num):
    # 数字をすべて取得
    dat = string.digits
    return _get_random_dat(num, dat)
# __Base__
def _get_random_dat(num, dat):
    # 英数字からランダムに取得
    return ''.join([random.choice(dat) for i in range(num)])


# X文字のランダム文字列(Yパターン)を合計Z個生成する
def make_random_str_list(X, Y, Z, num_only=False):
    random_str_length = X
    random_vals = Y
    str_vals = Z + 1

    # ランダム文字列を何パターン作るか
    random_str_ary = []
    for i in range(random_vals):
        if(num_only == True):
            my_random_str = make_random_int(random_str_length)
        else:
            my_random_str = make_random_str(random_str_length)
        random_str_ary.append(my_random_str)

    # ランダム文字列をパターンの中から何個生成するか
    for j in range(str_vals):
        new_str_ary = np.random.choice(random_str_ary, j)

    return new_str_ary

# ここからメイン
# DataFrameを作る
df = pd.DataFrame()
df['Code'] = make_random_str_list(8, 4, out_lows)
df['Price'] = make_random_str_list(4, 10, out_lows, True)
df['ManagingString'] = make_random_str_list(32, 10, out_lows)

df.to_excel(out_file, index=False)
print(df)

アウトプットの例

当然ですが、ランダムと言っているくらいなので毎回異なります。

image.png

おわりに

num_onlyフラグを立てても返り値が文字列になってしまうので、費用なのにExcel側でひと手間必要」とか、不完全なコードではありますが、とりあえず今のところこれで足りてるので、必要な方はこれをベースにご自由に改造いただければと思います。

(おわり)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?