PandasPandas.Numpy.pandas

观演用户小群体画像分析(python pandas)

2019-08-13  本文已影响3人  正在看书的Sophie

已经完成的步骤:

(1)针对每个项目打上了标签,如下(用excel 存取):

中国经典芭蕾舞剧《红色娘子军》 舞剧,芭蕾舞剧,红军,经典

孟京辉系列作品之《恋爱的犀牛》 话剧,爱情

金士杰、刘若瑀主演《演员实验教室》 话剧,金士杰,时间,寻找自我

(2)有指定的用户群体的观演记录,观演记录之间用逗号隔开,excel存取

一位观众一条观演数据,如:

中国经典芭蕾舞剧《红色娘子军》,孟京辉系列作品之《恋爱的犀牛》,金士杰、刘若瑀主演《演员实验教室》

接下来:

步骤一:读取文件

customers = pd.read_excel(r'C:\Users\JiangMeng\Desktop\用户观演.xlsx') #打开用户观演统计表

labels = pd.read_excel(r'C:\Users\JiangMeng\Desktop\2019项目标签.xlsx',sep = ',') #打开项目标签表

customer_show = customers['项目'].str.split(',',expand=True) #统计观众看的项目,以逗号分隔

步骤二:统计观众看过的项目,存入customerShows

customerShows = pd.Series()

for i_show in range(customer_show.shape[1]):

    s_show = pd.Series(customer_show[i_show])

    customerShows = customerShows.append(s_show)

数据处理:

customerShows = customerShows.dropna(axis=0, how='any') #去空值行

search_num = customerShows.count() #统计到的项目数量

customerShows = customerShows.reset_index(drop=True) #重置索引

步骤三:合并指定项目的标签

search_labels = pd.DataFrame()

for i_search_num in range(search_num):

     i_search_label = (labels.query("项目名称=="+"'"+customerShows[i_search_num]+"'")                                     ['label']).str.split(',',expand=True)

    search_labels = search_labels.append(i_search_label)

打印search_labels 如下:

步骤四:#计算标签

merge_labels = pd.Series()

for i_label in range(search_labels.shape[1]):

   name_label = pd.Series(search_labels[i_label]).value_counts()

    merge_labels = merge_labels.add(name_label, fill_value = 0)

print(merge_labels.sort_values(ascending=False)) # 统计这部分用户的标签

打印如下:

仅作为模板展示,选择的数量较少,可以看到这部分用户的观演记录中,更喜欢看的是经典话剧类的项目,更倾向于带有影视元素题材的项目。

上一篇下一篇

猜你喜欢

热点阅读