# 不同组合的时间均值 lis_i_1 = ['user_id','product','campaign_id','webpage_id','product_category_id', 'user_group_id','age_level','gender','user_depth','var_1'] for c in lis_i_1: df_tr_te[str(c) + '_user_time_hour_mean'] = df_tr_te.groupby(c)['user_time_hour'].transform('mean') df_tr_te[str(c) + '_user_time_day_mean'] = df_tr_te.groupby(c)['user_time_hour'].transform('mean') df_tr_te[str(c) + '_user_time_hour_sum'] = df_tr_te.groupby(c)['user_time_hour'].transform('sum') df_tr_te[str(c) + '_user_time_day_sum'] = df_tr_te.groupby(c)['user_time_hour'].transform('sum')
时间: 2023-07-16 20:12:25 浏览: 131
这段代码的作用是对数据集进行特征工程处理,根据不同的组合将用户在不同时间段内的行为进行统计。具体来说,对于列表 `lis_i_1` 中的每个特征,都构造了四个新特征:
- `str(c) + '_user_time_hour_mean'`:表示在当前特征值相同的情况下,用户行为在每小时的平均次数。
- `str(c) + '_user_time_day_mean'`:表示在当前特征值相同的情况下,用户行为在每天的平均次数。
- `str(c) + '_user_time_hour_sum'`:表示在当前特征值相同的情况下,用户行为在每小时的总次数。
- `str(c) + '_user_time_day_sum'`:表示在当前特征值相同的情况下,用户行为在每天的总次数。
通过对不同特征的不同组合,可以得到更加丰富的用户行为特征,对于模型的训练和预测都会有一定的帮助。
相关问题
selector = parsel.Selector(html_data) lis = selector.css('.list_item h2 a::attr(href)').getall() details = [] for li in lis: detail_url = 'https://travel.qunar.com' + li detail_html = requests.get(detail_url).text details.append(detail_html) time.sleep(random.randint(3, 5)) # 每次请求后等待一段时间,避免请求频繁被封 for detail_html in details: # 解析数据 detail_selector = parsel.Selector(detail_html) title = detail_selector.css('.b_crumb_cont *:nth-child(3)::text').get() comment = detail_selector.css('.title.white::text').get() view_count = detail_selector.css('.view_count::text').get() date = detail_selector.css('#js_mainleft > div.b_foreword > ul > li.f_item.when > p > span.data::text').get() days = detail_selector.css('#js_mainleft > div.b_foreword > ul > li.f_item.howlong > p > span.data::text').get() money = detail_selector.css('#js_mainleft > div.b_foreword > ul > li.f_item.howmuch > p > span.data::text').get() character = detail_selector.css('#js_mainleft > div.b_foreword > ul > li.f_item.who > p > span.data::text').get() play_list = detail_selector.css('#js_mainleft > div.b_foreword > ul > li.f_item.how > p > span.data > span::text').getall() for play in play_list: print(play) print(title, comment, view_count, date, days, money, character, play_list, detail_url)这段代码输出的文字可以匹配,但是网站都是同一个,要怎么改
这段代码是爬取了一个页面中多篇游记的链接,然后依次爬取每篇游记的详情页,并解析其中的数据。由于您爬取的是同一个网站的多篇游记,所以每篇游记的详情页链接都是相同的。如果您想爬取不同网站的游记,可以修改`detail_url`的值为对应的网址。
如果您想爬取同一个网站的不同分类、不同标签或不同页面的游记,可以修改`html_data`的值为对应页面的HTML源码,并修改`lis`的值为对应页面中游记链接所在的CSS选择器。例如,如果您要爬取https://travel.qunar.com/travelbook/list.htm?order=hot_heat页面中所有游记的链接,可以将`lis`的值修改为`.list_item h2 a::attr(href)`。
请注意,网站的反爬虫机制比较严格,频繁地爬取同一个页面可能会导致IP被封禁,建议使用代理IP或降低爬取频率。
阅读全文