トライアルデータの作成③

目的:辞書(dict関数)からデータフレームを作れることを知り、今まで、2列だったデータを行・列、ともにランダムデータにしてみた

目標
1 ①、②を変えて応用する、①、②の目標は引き継ぐ
2 dict関数を使ってみる
3 行も列もランダムデータ

dict_関数からデータフレーム化

import numpy as np
import pandas as pd
import string
bangou = list(range(1,10))
moji = list(string.ascii_uppercase[:5])
jisho = dict(zip(bangou,moji))
ind = np.arange(1,4)
df = pd.DataFrame(jisho, index=ind)
print(df)

整数のリスト[1,2,3,4,5,6,7,8,9]  → bangou
文字のリスト[A,B,C,D,E] → moji
zipで統合、リストは少ないほうに勝手に合わせる、6789はなくなる
辞書をデータフレーム化するとプログラムの実行結果(print(df))は

  1 2 3 4 5
1 A B C D E
2 A B C D E
3 A B C D E

print(df)の出力結果

辞書の処理まで、ランダムにする方法がわからないので、この形まで


プログラム実行順(トライアルデータの作成)
(2次元の配列をランダムに)

1、numpy,pandas,string,randomをインポート

2、変数と乱数と文字数(選択肢)の指定

a = int(input('行の数>>>'))
b = int(input('列の数>>>'))
c = int(input('文字(選択肢)の数>>>'))
ransu_1 = [random.randint(5,10) for i in range(c)]
moji = list(string.ascii_uppercase[:c])

内容
出力するデータに行と列の数、またランダムデータの選択肢(のつもり)として文字数(Max26個)を入力する

3、2次元のリストを作成

kara_list = [] #空のリストを作成
for i in range(a):
    x = random.choices(moji,k=b,weights = ransu_1)
    kara_list.append(x)

空のリスト[]を作成し、そのリストに .append()で追加するリストを指定する
空のリストを作らないと、1次元になるらしい(よくわかっていない)
for はインデント(空白半角4文字)が必要で、書式は次のように
     for 変数 in range(a):
   (インデント) 繰り返す処理1
   (インデント) 繰り返す処理2
処理は、range関数で指定するとa回、繰り返す

for i in range(a):
    x = random.choices(moji,k=b,weights = ransu_1)
    kara_list.append(x)
この場合、random.choicesでランダムに選んだ文字(列の数)のリストをa回(行の数)、空のリストに足していく
(毎回ランダムに選んで、1行足していく)
リストにリストを足していくので、2次元になる(んだと思う)

4、出力(前と同じ、行、列の名前の指定は勉強中)

df = pd.DataFrame(kara_list)
print(df)
df.to_excel(r'エクセルのパス')

コード全体

import numpy as np
import pandas as pd
import string
import random

a = int(input('行の数>>>'))
b = int(input('列の数>>>'))
c = int(input('文字(選択肢)の数>>>'))

ransu_1 = [random.randint(5,10) for i in range(c)]
print(ransu_1)

moji = list(string.ascii_uppercase[:c])

#最初に空のリストを作る、空のリストに加えていく形にすると、2次元になる
#1次元のリストを作ると、1次元上に要素を足していく形になる

kara_list = []

for i in range(a):
    x = random.choices(moji,k=b,weights = ransu_1)
    kara_list.append(x)
    
df = pd.DataFrame(kara_list)
print(df)
df.to_excel(r'エクセルのパス')
出力結果(エクセルシート) a=5、b=8、c(文字数)=20

いいなと思ったら応援しよう!