import numpy as np
import pandas as pd
from pandas import *
import random
import tensorflow as tf
import time
np.random.seed(2)
N_STATES=6
ACTIONS=['left','right']
EPSILON=0.9 #greedy police,90%选择最优的动作,0.1选择随机的动作
ALPHA=0.1 #learing rate 学习效率
LAMBDA=0.9 #discount factor 奖励衰减值
MAX_EPISODES=13 #maximum episodes只做13次
FRESH_TIME=0.1 #fresh time for one move走一步的时间
def build_q_table(n_states,action):
table=pd.DataFrame(
np.arange(12).reshape((n_states,len(action))),index=list('abcdef'),
columns=action
)
return table
q_table=build_q_table(N_STATES,ACTIONS)
print(q_table)
'''DataFrame,返回的是行列有名称的表格格式,
第一个参数第一表格大小,
第二个参数index是行的名字,定义为index=['one','two']如果不定义,那么默认从0开始编号
index用{}放字符串顺序会乱,为列表[]则不会,也可以index=list('atknbf')每个字母为一行的名称
第三个参数为列的名称columns,columns={'right',left'}如果不定义,也有默认的值,列从0 开始编号'''
操作 | 语句 | 输出结果 | 返回类型 |
---|---|---|---|
输出名为right的列(单列操作) | | a 1 b 3 c 5 d 7 e 9 f 11 Name: right, dtype: int32 | Series |
| a 1 b 3 c 5 d 7 e 9 f 11 Name: right, dtype: int32 | Series | |
q_table[['right']] | right a 1 b 3 c 5 d 7 e 9 f 11 | DataFrame | |
输出多个列,输出名字为right的列和名字为left的列 | q_table[['right','left']] | right left a 1 0 b 3 2 c 5 4 d 7 6 e 9 8 f 11 10 | DataFrame |
取多行,取前3行 | | left right a 0 1 b 2 3 c 4 5 | DataFrame |
| left right a 0 1 b 2 3 c 4 5 | DataFrame | |
取某一行,取第3行 | | left 10 right 11 Name: f, dtype: int32 | Series |
q_table.iloc[2:3] | left right c 4 5 | DataFrame | |
取首行 | | left right a 0 1 | DataFrame |
q_table.head() | left right a 0 1 b 2 3 c 4 5 d 6 7 e 8 9 | DataFrame,返回默认前五行 | |
取尾行 | | left right b 2 3 c 4 5 d 6 7 e 8 9 f 10 11 | DataFrame,返回默认前五行 |
q_table.tail(1) | left right f 10 11 | DataFrame | |
取某行某列 | | left 0 Name: a, dtype: int32 | Series |
| 3 | <class 'numpy.int32'> |