トライアルデータの作成③
目的:辞書(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))は
辞書の処理まで、ランダムにする方法がわからないので、この形まで
プログラム実行順(トライアルデータの作成)
(2次元の配列をランダムに)
1、numpy,pandas,string,randomをインポート
2、変数と乱数と文字数(選択肢)の指定
内容
出力するデータに行と列の数、またランダムデータの選択肢(のつもり)として文字数(Max26個)を入力する
3、2次元のリストを作成
空のリスト[]を作成し、そのリストに .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、出力(前と同じ、行、列の名前の指定は勉強中)
コード全体
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'エクセルのパス')