源数据
- 读取数据
df = pd.read_csv('C:/Users/items/WorkRelated/items.csv')
- 取某列等于某个值的数据
df_app = df[df['channel']=='app'] #取渠道为app的数据
-取某行某列的某个值
catevalue = df_app.loc[idx, 'cate'] # 对cate列,逐行取值
- 取某列为NULL的数据
注意这里,在python中是没有NULL的,python读取csv中的null为NaN
# pd.isna()返回的是bool值,为空的返回True,否则为False, df_app[bool值],返回bool值为True的数据,即返回end_time列为空的数据
df_app = df_app[pd.isna(df_app['end_time'])]
- 取某列不为null的数据
df_app[pd.isna(df_app['end_time'])==False]
- 取某几列数据
# 取出df_app中只包含这三列的数据
df_app = df_app[['cate', 'item_id', 'end_time']]
对每个用户关联每个素材,得到每个用户与各个素材的dataframe,便于后续预估每个用户对每个素材的ctr
-
用户表
-
app素材表
-
读取数据
df_users = pd.read_csv(FLAGS.user_path,
names=user_COLUMNS,
skipinitialspace=True,
encoding="utf-8",
engine="python")
df_app = pd.read_csv()
- 将每个用户复制app素材份
# 将每个用户复制app素材数份
userapp = pd.DataFrame(np.repeat(df_users.values, len(df_app), axis=0), columns=user_COLUMNS)
- 将app素材复制用户份
# (np.tile(A, (n,1)))表示对于矩阵A,朝着样本的方向复制n份,特征的方向复制1份
repeat_app_items = np.tile(df_app, (len(df_users), 1))
app_items = pd.DataFrame(repeat_app_items, columns=item_COLUMNS)
- 关联这两个dataframe
# 此时这两个dataframe行数相同,纵向链接
user_app = pd.concat([userapp, app_items], axis=1) # app侧的预测数据