首页 文章 精选 留言 我的

精选列表

搜索[向量化],共10003篇文章
优秀的个人博客,低调大师

阿里向大学生开放“大数据”

4月15日,以“开放·融合”为主题的首届WE+智绘互联校园新生态峰会在南京举办,峰会发布了由金智教育与阿里云、华为、腾讯四方共同参与的 “互联网+高校云”生态推进计划。 阿里云业务总经理刘松说,有不少大学校园里的课本还是10年前的,与未来产业发展严重脱节。“智能手机的下一代技术包括了虚拟现实、人工智能、大数据这几种技术,对人才的教育需求很迫切,但所有的大学包括最好的大学,在这些方面是最保守的。” 刘松认为,技术更新冲击的不仅仅是计算机、信息等高精尖学科,经济、传媒等传统学科同样受到挑战。“比如说学金融,今天的互联网金融的形态是全新创造出来的,最近很关键的一个技术叫区块链技术,将会重新定义整个金融行业。可能未来三四年整个金融行业本质上将会很不一样,传统学的那一堆东西很难用得上。” 互联网行业目前最缺三类人才:软件、数据、市场运营。“软件、市场运营专业很多高校开设了,但数据人才的培养缺口较大。”刘松介绍说,阿里已主动开放资源和高校合作。“第一年我们把阿里的电商数据开放给大学,香港几个大学三年级的学生推荐的算法比阿里的还要精准15%。去年我们又把广州市民卡的数据放进去,由当地大学的学生做出来公交推荐算法,大大缓解了整个广州市民出行的特点。”刘松透露说,今年阿里大数据将面向全球高校开放,并支持英文版登陆。大学三四年级理工科的学生,有一定技术基础就可以来应用这些数据,变成未来数据流量和创业的能力。 金智教育董事长郭超表示,过去一个教材要在作为讲义用了5年后才可能出版。但今天这样的更新速度完全不符合产业要求。知识加速更新,互联网技术也会推动知识更新,让人才培养和企业的需求真正吻合,把业界最新的知识、最新的岗位需求和学校的人才培养结合在一起。 本文转自d1net(转载)

优秀的个人博客,低调大师

量化分析1-特征工程

1.1、财务数据——总市值和PE from jqdatasdk import * import seaborn as sns import math import datetime from tqdm import tqdm import pandas as pd import matplotlib.pyplot as plt import numpy as np df = get_fundamentals(query(valuation,indicator)) raw_data = [] for index in range(len(df['code'])): raw_data_item = { 'code' :df['code'][index], 'market_cap':df['market_cap'][index], 'pe_ratio' :df['pe_ratio'][index] } raw_data.append(raw_data_item) # # 按照财务信息中的总市值降序排序 # raw_data = sorted(raw_data,key = lambda item:item['market_cap'], reverse=True) # # 剔除总市值排名最小的10%的股票 # fitered_market_cap = raw_data[:int(len(raw_data) * 0.9)] # # 剔除PE TTM 小于0或大于100 # filtered_pe = [] # for stock in fitered_market_cap: # if stock['pe_ratio'] == None or math.isnan(stock['pe_ratio']) or float(stock['pe_ratio']) < 0 or float(stock['pe_ratio']) > 100: # continue # filtered_pe.append(stock['code']) #PE数据集 df_pe=pd.DataFrame(raw_data) df_name=get_all_securities().reset_index().rename(columns={'index':'code'}) df_pe=pd.merge(df_pe,df_name,on='code',how='left') df_pe=df_pe[['code','market_cap','pe_ratio','display_name']] 1.2、行情数据——25日涨跌幅 current_dt=datetime.datetime.now().strftime('%Y-%m-%d') CHANGE_PCT_DAY_NUMBER=25 def load_change_pct_data(current_dt,codes): change_pct_dict_list = [] # 计算涨跌幅需要用到前一日收盘价,所以需要多加载一天的数据, # 而这里在第二日的开盘前运行,计算前一个交易日收盘后的数据,所以需要再多加载一天 # 使用固定的25个交易日,而非25个bar计算涨跌幅 count = CHANGE_PCT_DAY_NUMBER + 1 # 获取25个交易日的日期 pre_25_dates = get_trade_days(start_date=None, end_date=current_dt, count=count) pre_25_date = pre_25_dates[0] pre_1_date = pre_25_dates[-1] for code in codes: pre_25_data = get_price(code, start_date=None, end_date=pre_25_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_1_data = get_price(code, start_date=None, end_date=pre_1_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_25_close = None pre_1_close = None if str(pre_25_date) == str(pre_25_data.index[0])[:10]: pre_25_close = pre_25_data['close'][0] if str(pre_1_date) == str(pre_1_data.index[0])[:10]: pre_1_close = pre_1_data['close'][0] if pre_25_close != None and pre_1_close != None and not math.isnan(pre_25_close) and not math.isnan(pre_1_close): change_pct = (pre_1_close - pre_25_close) / pre_25_close item = {'code':code, 'change_pct': change_pct} change_pct_dict_list.append(item) return change_pct_dict_list def load_change_pct_data_1(current_dt,code): change_pct_dict_list = [] # 计算涨跌幅需要用到前一日收盘价,所以需要多加载一天的数据, # 而这里在第二日的开盘前运行,计算前一个交易日收盘后的数据,所以需要再多加载一天 # 使用固定的25个交易日,而非25个bar计算涨跌幅 count = CHANGE_PCT_DAY_NUMBER + 1 # 获取25个交易日的日期 pre_25_dates = get_trade_days(start_date=None, end_date=current_dt, count=count) pre_25_date = pre_25_dates[0] pre_1_date = pre_25_dates[-1] pre_25_data = get_price(code, start_date=None, end_date=pre_25_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_1_data = get_price(code, start_date=None, end_date=pre_1_date, frequency='daily', fields=['close'], skip_paused=True, fq='post', count=1) pre_25_close = None pre_1_close = None if str(pre_25_date) == str(pre_25_data.index[0])[:10]: pre_25_close = pre_25_data['close'][0] if str(pre_1_date) == str(pre_1_data.index[0])[:10]: pre_1_close = pre_1_data['close'][0] if pre_25_close != None and pre_1_close != None and not math.isnan(pre_25_close) and not math.isnan(pre_1_close): change_pct = (pre_1_close - pre_25_close) / pre_25_close item = {'code':code, 'change_pct': change_pct} change_pct_dict_list.append(item) return change_pct_dict_list # # 加载标的的涨跌幅信息 # change_pct_dict_list = load_change_pct_data(current_dt,filtered_pe) # # 按照涨跌幅升序排序 # change_pct_dict_list = sorted(change_pct_dict_list,key = lambda item:item['change_pct'], reverse=False) # # 取跌幅前10%的股票 # change_pct_dict_list = change_pct_dict_list[0:(int(len(change_pct_dict_list)*0.1))] change_pct_dict_list=[] for i in tqdm(df_pe['code']): change_pct_dict_list.append(load_change_pct_data_1(current_dt,i)) df_stocks_industry_1=pd.DataFrame(list(df_stocks_industry.items())) df_stocks_industry_1.columns=['code','industry_name'] 现在是否ST df_stoacks_is_st=get_extras('is_st',list(df_stocks_industry_1['code']),start_date='2020-03-06', end_date='2020-03-06') df_stoacks_is_st=df_stoacks_is_st.T.reset_index().rename(columns={'index':'code','2020-03-06 00:00:00':'is_st'}) df_stoacks_is_st.columns=['code','is_st'] 特征合并 # df_pe df_stocks_industry=pd.merge(df_pe,df_stocks_industry_1,on='code',how='left') #25日涨跌幅 change_pct_dict_df df_stocks_industry_change=pd.merge(df_stocks_industry,change_pct_dict_df,on='code',how='left') #合并资产负债率特征 df_stocks_feature=pd.merge(df_stocks_industry_change,df_liability_vs_assets,on='code',how='left') #合并流动比率特征 df_current df_stocks_feature=pd.merge(df_stocks_feature,df_current,on='code',how='left') #总资产周转率、存货周转率、平均在库天数 df_stocks_feature=pd.merge(df_stocks_feature,df_turnover,on='code',how='left') #是否st标签 df_stocks_feature=pd.merge(df_stocks_feature,df_stoacks_is_st,on='code',how='left') df_stocks_feature code market_cap pe_ratio display_name industry_name change_pct company_name end_date ratio_liability_vs_assets current_ratio ratio_assets_turnover ratio_inventory_turnover ratio_turnover_days is_st 0 000017.XSHE 24.0939 -989.3035 深中华A 铁路、船舶、航空航天和其他运输设备制造业 0.092166 深圳中华自行车(集团)股份有限公司 2018-12-31 0.768163 1.187177 1.637112 51.207251 7.030254 False 1 600766.XSHG 18.9023 -757.5206 园城黄金 有色金属矿采选业 0.125750 烟台园城黄金股份有限公司 2018-12-31 0.676292 1.002743 0.075966 0.109334 3292.668440 False 2 000586.XSHE 21.0463 407.0524 汇源通信 计算机、通信和其他电子设备制造业 0.084702 四川汇源光通信股份有限公司 2018-12-31 0.564357 1.599535 0.711899 4.401857 81.783661 False 3 000985.XSHE 20.4701 33.7868 大庆华科 化学原料和化学制品制造业 0.039648 大庆华科股份有限公司 2019-03-31 0.228049 2.237382 0.764512 7.787478 46.228062 False 4 600556.XSHG 226.6887 -208.8825 ST慧球 软件和信息技术服务业 0.024939 广西慧金科技股份有限公司 2019-03-31 0.681672 1.534540 0.053902 60.376379 5.962597 True 5 600608.XSHG 14.7001 2378.2588 ST沪科 黑色金属冶炼和压延加工业 -0.028260 上海宽频科技股份有限公司 2018-12-31 0.646161 1.614730 5.816101 13.893497 25.911403 True 6 600071.XSHG 29.2555 -99.2737 凤凰光学 仪器仪表制造业 -0.047739 凤凰光学股份有限公司 2019-03-31 0.472790 1.169294 0.148451 1.246763 288.747797 False 7 601890.XSHG 54.6858 90.6697 亚星锚链 铁路、船舶、航空航天和其他运输设备制造业 -0.015461 NaN NaN NaN NaN NaN NaN NaN False 8 000004.XSHE 69.1570 -250.3860 国农科技 医药制造业 0.836099 深圳中国农大科技股份有限公司 2019-03-31 0.163786 4.535662 0.662938 NaN NaN False 9 601718.XSHG 222.2164 -114.2454 际华集团 纺织服装、服饰业 0.375921 际华集团股份有限公司 2019-03-31 0.420433 2.738613 0.141555 0.744656 483.444716 False 10 603778.XSHG 19.7500 -165.6433 乾景园林 土木工程建筑业 0.018018 NaN NaN NaN NaN NaN NaN NaN False 11 600836.XSHG 30.2878 -43.7923 界龙实业 印刷和记录媒介复制业 0.080347 上海界龙实业集团股份有限公司 2018-12-31 0.730876 0.913507 0.397119 0.921334 390.737769 False 12 600421.XSHG 21.2226 -222.6517 *ST仰帆 通用设备制造业 0.193696 湖北仰帆控股股份有限公司 2019-03-31 0.785138 0.347653 0.034771 7.173724 50.183138 True 13 002058.XSHE 30.1241 -215.5228 威尔泰 仪器仪表制造业 -0.003383 上海威尔泰工业自动化股份有限公司 2018-12-31 0.131286 7.009828 0.533314 2.205086 163.258914 False 14 000518.XSHE 62.0822 -587.3756 四环生物 医药制造业 0.098329 江苏四环生物股份有限公司 2018-12-31 0.305737 2.700395 0.427178 0.733750 490.630291 False 15 002423.XSHE 212.4385 -141.7885 中粮资本 其他金融业 0.036464 NaN NaN NaN NaN NaN NaN NaN False 16 603300.XSHG 53.7946 40.7219 华铁应急 租赁业 -0.036395 浙江华铁建筑安全科技股份有限公司 2019-03-31 0.308076 1.136618 0.037371 15.748571 22.859217 False 17 000045.XSHE 42.4279 -231.1387 深纺织A 计算机、通信和其他电子设备制造业 0.139252 NaN NaN NaN NaN NaN NaN NaN False 18 600671.XSHG 14.6987 -99.4585 天目药业 医药制造业 -0.032914 NaN NaN NaN NaN NaN NaN NaN False 19 600975.XSHG 57.8271 -169.4713 新五丰 畜牧业 0.237536 湖南新五丰股份有限公司 2018-12-31 0.271259 2.714286 1.280378 4.496826 80.056468 False 20 600446.XSHG 178.3693 -145.2521 金证股份 软件和信息技术服务业 0.009726 深圳市金证科技股份有限公司 2018-12-31 0.525015 1.598019 1.272702 5.953736 60.466232 False 21 002428.XSHE 71.8432 -124.1955 云南锗业 有色金属冶炼和压延加工业 -0.001887 云南临沧鑫圆锗业股份有限公司 2018-12-31 0.194244 1.475745 0.243317 1.955290 184.115951 False 22 300086.XSHE 27.9900 -123.8907 康芝药业 医药制造业 0.198819 NaN NaN NaN NaN NaN NaN NaN False 23 600538.XSHG 26.6566 -121.4423 国发股份 批发业 0.261571 北海国发海洋生物产业股份有限公司 2018-12-31 0.164816 4.197737 0.294117 5.835953 61.686578 False 24 002590.XSHE 37.9401 -45.6561 万安科技 汽车制造业 0.036458 浙江万安科技股份有限公司 2019-03-31 0.467353 1.419771 0.141765 0.939937 383.004207 False 25 600890.XSHG 49.1736 -160.5955 中房股份 房地产业 0.200878 NaN NaN NaN NaN NaN NaN NaN False 26 600385.XSHG 11.6857 -103.1429 *ST金泰 医药制造业 0.025779 山东金泰集团股份有限公司 2019-03-31 0.711436 1.297288 0.005816 NaN NaN True 27 600234.XSHG 19.4955 -364.8226 *ST山水 计算机、通信和其他电子设备制造业 0.007114 山西广和山水文化传播股份有限公司 2019-03-31 0.857826 0.162083 0.060775 NaN NaN True 28 600864.XSHG 160.4120 23.1630 哈投股份 资本市场服务 0.079827 哈尔滨哈投投资股份有限公司 2019-03-31 0.681170 1.873903 0.020583 6.927726 51.965101 False 29 300713.XSHE 20.5403 -110.9402 英可瑞 电气机械和器材制造业 0.023784 深圳市英可瑞科技股份有限公司 2018-12-31 0.233626 3.626136 0.311969 3.147327 114.382781 False ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3665 002679.XSHE 38.8054 840.2719 福建金森 林业 0.034921 福建金森林业股份有限公司 2019-03-31 0.546533 4.024858 0.005973 0.017424 20661.260075 False 3666 603318.XSHG 37.4011 -51.5528 派思股份 专用设备制造业 -0.079042 大连派思燃气系统股份有限公司 2018-12-31 0.518041 1.212190 0.199222 2.569598 140.099752 False 3667 000020.XSHE 28.9391 468.7081 深华发A 计算机、通信和其他电子设备制造业 0.000000 NaN NaN NaN NaN NaN NaN NaN False 3668 002341.XSHE 95.6338 926.3431 新纶科技 化学原料和化学制品制造业 0.296811 深圳市新纶科技股份有限公司 2019-03-31 0.472343 1.188651 0.064893 0.965029 373.045625 False 3669 600149.XSHG 19.1981 212.6978 ST坊展 综合 -0.013459 NaN NaN NaN NaN NaN NaN NaN True 3670 601212.XSHG 242.8766 86.8249 白银有色 有色金属冶炼和压延加工业 -0.012012 NaN NaN NaN NaN NaN NaN NaN False 3671 300648.XSHE 24.4668 950.7939 星云股份 仪器仪表制造业 0.180574 福建星云电子股份有限公司 2018-12-31 0.244180 3.014654 0.430049 2.305498 156.148494 False 3672 601069.XSHG 99.0888 116.9250 西部黄金 有色金属矿采选业 0.061611 西部黄金股份有限公司 2018-12-31 0.371280 0.999096 0.374644 2.417007 148.944530 False 3673 603501.XSHG 1489.9034 5630.9863 韦尔股份 计算机、通信和其他电子设备制造业 -0.070294 上海韦尔半导体股份有限公司 2019-03-31 0.690727 0.709313 0.129665 0.735590 489.403136 False 3674 601808.XSHG 769.1806 31.1875 中海油服 开采辅助活动 -0.020756 中海油田服务股份有限公司 2018-12-31 0.535697 1.276167 0.293838 15.244639 23.614859 False 3675 000700.XSHE 124.5300 134.4473 模塑科技 汽车制造业 0.112294 NaN NaN NaN NaN NaN NaN NaN False 3676 000893.XSHE 45.5656 116.7959 东凌国际 农副食品加工业 -0.032411 NaN NaN NaN NaN NaN NaN NaN False 3677 601008.XSHG 41.4560 -4044.8789 连云港 水上运输业 0.003205 江苏连云港港口股份有限公司 2019-03-31 0.583972 0.447947 0.037784 15.933937 22.593287 False 3678 688321.XSHG 233.9050 1201.6450 微芯生物 医药制造业 -0.105799 NaN NaN NaN NaN NaN NaN NaN False 3679 300548.XSHE 95.0418 1230.1967 博创科技 计算机、通信和其他电子设备制造业 0.472850 博创科技股份有限公司 2019-03-31 0.154593 4.588279 0.115826 0.867302 415.080159 False 3680 000554.XSHE 24.2320 1048.5831 泰山石油 批发业 0.058741 中国石化山东泰山石油股份有限公司 2018-12-31 0.287817 0.770372 2.425697 20.886699 17.235849 False 3681 300318.XSHE 40.8450 1296.5431 博晖创新 专用设备制造业 0.149126 北京博晖创新生物技术股份有限公司 2018-12-31 0.541381 0.884793 0.229357 1.028200 350.126446 False 3682 600476.XSHG 22.9525 -203.3730 湘邮科技 软件和信息技术服务业 0.016884 湖南湘邮科技股份有限公司 2018-12-31 0.567464 1.467393 0.579482 4.256108 84.584326 False 3683 002156.XSHE 286.6956 1416.6488 通富微电 计算机、通信和其他电子设备制造业 0.006943 通富微电子股份有限公司 2018-12-31 0.534477 0.946655 0.517087 4.990624 72.135262 False 3684 300101.XSHE 65.9405 1435.1690 振芯科技 计算机、通信和其他电子设备制造业 0.066807 成都振芯科技股份有限公司 2019-03-31 0.251711 4.909851 0.068638 0.452855 794.957054 False 3685 600730.XSHG 29.5088 -879.3200 中国高科 教育 0.088836 中国高科集团股份有限公司 2019-03-31 0.348047 20.871838 0.010003 1.499104 240.143423 False 3686 300618.XSHE 181.7682 1724.7690 寒锐钴业 有色金属冶炼和压延加工业 -0.174808 南京寒锐钴业股份有限公司 2019-03-31 0.408432 4.241162 0.169358 0.551533 652.726177 False 3687 002015.XSHE 98.0534 65.0332 协鑫能科 电力、热力生产和供应业 0.214300 江苏霞客环保色纺股份有限公司 2019-03-31 0.036410 22.912878 0.252404 1.690099 213.005285 False 3688 002213.XSHE 31.3120 1911.4472 特尔佳 汽车制造业 0.243665 深圳市特尔佳科技股份有限公司 2019-03-31 0.105138 7.575821 0.041269 0.624240 576.701078 False 3689 600517.XSHG 443.5174 231.8448 置信电气 电气机械和器材制造业 0.136052 上海置信电气股份有限公司 2018-12-31 0.597835 1.390691 0.553528 6.785512 53.054216 False 3690 600745.XSHG 1471.1353 193.3398 闻泰科技 计算机、通信和其他电子设备制造业 0.047068 闻泰科技股份有限公司 2018-12-31 0.779784 0.900466 1.023192 10.202054 35.287011 False 3691 000677.XSHE 33.5223 1266.4793 恒天海龙 化学纤维制造业 0.114908 恒天海龙股份有限公司 2019-03-31 0.255158 1.711874 0.225964 2.159967 166.669243 False 3692 600844.XSHG 52.0460 -23.0732 丹化科技 化学原料和化学制品制造业 0.105656 丹化化工科技股份有限公司 2018-12-31 0.187176 0.816353 0.422517 9.051410 39.772807 False 3693 000613.XSHE 22.4286 -6582.2614 大东海A 住宿业 -0.022198 海南大东海旅游中心股份有限公司 2019-03-31 0.107946 2.518450 0.104460 38.551491 9.338160 False 3694 002459.XSHE 224.7306 -467.8555 晶澳科技 电气机械和器材制造业 0.193011 秦皇岛天业通联重工股份有限公司 2018-12-31 0.143955 3.788168 0.238043 2.383663 151.028068 False 3695 rows × 14 columns

优秀的个人博客,低调大师

Grafana 源码遭窃,拒绝向黑客支付赎金

Grafana 在社交平台发帖称,最近有未经授权的第三方获取了访问 Grafana Labs GitHub 环境的令牌,使得攻击者能够访问其代码库。 但经调查确认,在此次事件中没有客户数据或个人信息被访问,也没有发现对客户系统或运营造成任何影响的证据。 目前,Grafana 已查明凭证泄露的源头。并已注销了遭泄露的凭证,同时增加了额外的安全措施以防止类似事件再次发生。 Grafana 表示:“攻击者试图勒索我们,要求我们支付赎金以阻止其公开我们的代码库。” 但该公司拒绝了这一提议,结合自身经验并援引了 FBI 长期以来的建议,“支付赎金并不能保证你或你的组织能够找回任何数据”,只会助长犯罪分子的气焰,“刺激其他人参与此类非法活动”。 “我们已经确定,正确的做法是不支付赎金。 作为 Grafana Labs 标准安全措施的一部分,我们将在调查结束后分享事件后审查的更多信息。” Grafana 是一个用于监控和可观察性的开源平台,可视化来自 Prometheus、Loki、Elasticsearch、InfluxDB、Postgres 等多个来源的指标、日志等。目前尚不清楚黑客是否窃取了任何专有代码或信息,该公司发言人尚未对此事作出回应。

优秀的个人博客,低调大师

Ferrous Systems 向 Rust 项目捐赠 Ferrocene 语言规范

Rust 基金会发文宣布,Ferrous Systems 已同意将其 Ferrocene 语言规范 (FLS) 贡献给 Rust 项目。 "这笔慷慨的捐赠将为提供官方 Rust 规范提供更清晰的途径。它还将使 Rust 项目能够监督其持续发展,为已经依赖 FLS 的公司和个人提供信心,并标志着 Rust 生态系统的一个重要里程碑。" 众所周知,Rust 一直缺乏一份官方的语言规范。2022 年 12 月,Rust 项目提交了一份 RFC 以鼓励 Rust 项目开始制定规范。该 RFC 于 2023 年 7 月获得批准,并开始工作的推进。起初,Rust 项目规范团队(t-spec)希望以 Rust Reference 为指导,从头开始创建文档。 但考虑到现有的一份被广泛应用的外部 Rust 规范 -- FLS。为避免行业内存在两种高度可见的 Rust 规范而造成的潜在混淆,t-spec 团队决定尝试将 FLS 与 Rust Reference 集成以创建官方 Rust 项目规范。 FLS 是对 Rust 编程语言的描述,由 Ferrous Systems 于 2022 年 7 月开发,Ferrocene 是专为安全关键型和受监管行业设计的 Rust 编译器和工具链。FLS 为 Rust 的语法、语义和行为提供了结构化和详细的参考,可作为验证、合规性和标准化工作的基础。 在经过沟通后,Ferrous Systems 同意将其 FLS 贡献给 Rust 项目,并允许 Rust 项目接管其开发和管理。 公告指出,FLS 集成到 Rust 项目会有一个过渡期。第一阶段的工作将涉及将 FLS 整合到项目的工具和流程中,以符合现有的 Rust 项目目标。 “一旦集成完成,Ferrous Systems 将能够依赖该项目的规范版本并停止使用自己的版本。更广泛地说,这项工作将为其他需要 Rust 规范的人提供官方、权威的参考,帮助他们使用 Rust 编程语言。”

优秀的个人博客,低调大师

新手向- 爬取分析拉勾网招聘信息

[TOC] 爱写bug(ID:icodebugs) 作者:爱写bug 前言: ​ 看了很多网站,只发现获取拉勾网招聘信息是只用post方式就可以得到,应当是非常简单了。推荐刚接触数据分析和爬虫的朋友试一下。 在python3.7、acaconda3环境下运行通过 数据爬取篇: 1、伪造浏览器访问拉勾网 打开Chrome浏览器,进入拉勾网官网,右键->检查,调出开发者模式。 然后在拉勾网搜索关键词 算法工程师 回车,然后点击下一页、下一页,此时开发者工具里的Network 下XHR(表示该网站是以Ajax方式获取刷新信息的)应当如下图(图中已标明了一些关键信息): 每次点击下一页图中XHR下以PositionAjax开头的请求就会多一条,图下方 Form Data 里 page numberpn 就会增加1,网站地址:https://www.lagou.com/jobs/list_ + 搜索关键词 city= + 城市名称 +&cl=false&fromSearch=true&labelWords=&suginput= 当然搜索关键词是中文的话一定要 unicode 转码。这里我们以关键字为算法工程师,地区为全国 为例,所以URL: 转码前: https://www.lagou.com/jobs/list_算法工程师?city=全国&cl=false&fromSearch=true&labelWords=&suginput= 转码后: https://www.lagou.com/jobs/list_%E7%AE%97%E6%B3%95%E5%B7%A5%E7%A8%8B%E5%B8%88?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput= 根据图中 Request Headers 构造请求头伪造成浏览器访问: headers = { 'Accept': "application/json, text/javascript, */*; q=0.01", 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36", 'Referer': "https://www.lagou.com/jobs/list_%E7%AE%97%E6%B3%95%E5%B7%A5%E7%A8%8B%E5%B8%88?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=" } 然后根据图中 Form Data来构造表单,只有pn表示的当前所在页数需要不断改变,所以 pn 定义一个变量num表示当前页数: form_data = { 'first': 'true', 'pn': num, 'kd': '算法工程师' } 然后试一下: request=requests.post(url,data=form_data,headers=headers) print(request.text) 但是尴尬的是这个时候post请求获得的回复是: {"status":false,"msg":"您操作太频繁,请稍后再访问","clientIp":"182.245.65.138","state":2402} 由于该网站的反爬措施,此时无论把请求头构造的多好都没用,哪怕用本地的Cookie。 所以我们采用 Seesion 对话方式: s = requests.Session() # 创建一个session对象 s.get(url_start, headers=headers, timeout=3) # 使用session维持同一个会话 cookie = s.cookies # 使用该会话的cookie response = s.post(url, data=form_data, headers=headers, cookies=cookie, timeout=3) 连接成功! 2、获取招聘数据 然后解析返回的 json 对象。我们先在开发者工具里把 PositionAjax 项的 Headers 改到 Preview 看一下Chrome帮我们格式化好的 json 内容: 出现了,我们想要的数据 在 content -> positionResult -> result , 一共从0到14共15条信息,这对应了网站每页现实的信息数。而最下面还有 totalCount: 16945 这是搜索该关键词 算法工程师 下的总条目数。可以根据这个算出一共有多页的信息(16945 / 15)而不是网站上显示的只有30页。由于时间关系,本次示例只获取29页数据。本次示例只获取29页数据。 def parse_page(job_json): job_list = job_json['content']['positionResult']['result'] company_info = [] for job in job_list: job_info = [] job_info.append(job['companyFullName'])#公司全称 job_info.append(job['companySize'])#规模 job_info.append(job['financeStage'])#融资情况 job_info.append(job['district'])#位置 job_info.append(job['positionName'])#职位 job_info.append(job['workYear'])#工作经验要求 job_info.append(job['education'])#学历 job_info.append(job['salary'])#工资 job_info.append(job['positionAdvantage'])#福利待遇 company_info.append(job_info)#把所有职位情况添加到网页信息page_info return company_info 我们就把每个公司的各类招聘情况存储在 company_info 里了。 最后把所有 company_info 汇总在一起: result = parse_page(job_json) all_company += result # 所有公司招聘信息汇在一起 接着以CSV格式存储在本地: path = 'A:\Temp\\' # 指定csv数据存储路径 df.to_csv(path + 'lagou_algorithm_data.csv', index=False) print('保存路径:' + path + 'lagou_algorithm_data.csv') 数据图片: 数据分析篇: 1、数据清洗: ​ 我们获得的数据都是以字符串形式存储的,而且像工资(20k—30k)、工作经验(3—5年)都是以区间的形式表现出来的,应该求其平均值(工资25k,工作经验4年)。另外像工作经验 不限、应届毕业生等,我们应该把该公司要求年限 改为0。 pattern = '\d+' # 正则表达式-匹配连续数字 # 统计每个公司的平均经验要求 lagou_data['平均经验'] = lagou_data['经验'].str.findall( pattern) # findall查找所有['经验']下的数字字符串 avg_work_year = [] for i in lagou_data['平均经验']: if len(i) == 0: # 长度为0则意为着没数字,既工作经验为不限、应届毕业生等,即没有工作经验要求 avg_work_year.append(0) else: # 匹配的是两个数值的工作经验区间 几年到几年,, year_list = [int(j) for j in i] # 得到每一个数转为int型 avg_year = sum(year_list)/2 # 求工作区间的平均值,平均年限 avg_work_year.append(avg_year) lagou_data['平均经验'] = avg_work_year # 统计每个公司给出的平均工资 lagou_data['平均工资'] = lagou_data['工资'].str.findall(pattern) avg_salary = [] for k in lagou_data['平均工资']: salary_list = [int(n) for n in k] salary = sum(salary_list)/2 avg_salary.append(salary) lagou_data['平均工资'] = avg_salary # 新列一项平均工资 存储的csv文件(你需要先存到本地才能看得到)会多两列 平均经验 和 平均工资: 2、数据可视化: 由于本篇为基础篇只画两个最简单的图且不做过多渲染美化,数据可视化都是一些简单的绘图,只有一个中文显示乱码问题,其他并没有什么坑,所以不做过多描述。 解决中文乱码问题: plt.rcParams['font.sans-serif'] = ['SimHei'] # 替换sans-serif字体显示中文 plt.rcParams['axes.unicode_minus'] = False # 解决坐标轴负数的负号显示问题 平均工资直方图: # 绘制工资频率直方图 plt.hist(lagou_data['平均工资'], alpha=0.8, color='steelblue') plt.xlabel('工资/千元') plt.ylabel('频数') plt.title("算法工程师平均工资直方图") plt.savefig(path+'lagou_algorithm_salary.jpg') # 指定保存路径 plt.show() 平均工作经验要求直方图(代码与上面相似,省略): 学历要求饼状图: # 绘制学历要求饼图 count = lagou_data['学历'].value_counts() plt.pie(count, labels=count.keys(), shadow=True,autopct='%2.2f%%') plt.savefig(path+'lagou_algorithm_education.jpg') plt.show() 绘制福利待遇词云: 这里要注意一下,上面设置的全局显示字体仅对matplotlib,有效,所以这里要指定一下字体防止中文乱码。 # 绘制福利待遇词云 color_mask = imread(path+'china_map.jpg') strs = '' for line in lagou_data['福利']: strs += line # 连接所有字符串 cut_strs = ' '.join(jieba.cut(strs)) # 使用中文分词jieba,将字符串分割成列表 word_cloud = WordCloud(font_path='C:\Windows\Fonts\微软雅黑\msyh.ttc',mask=color_mask,background_color='white').generate(cut_strs) # 指定显示字体避免中文乱码 word_cloud.to_file(path+'lagou_algorithm_wordcloud.jpg') # 存储图片 plt.imshow(word_cloud) plt.show() 这里词云背景指定为中国地图: 公司福利词云最终效果图: 总结: ​ 本文面向新手,文中不可避免有一些设置不合理的问题(数据量过少、工资取平均值代表不了实际情况),但还是可以从一定程度上反映出这个岗位的待遇和工资水平。 工资绝大部分集中在 2万到3万之间真的是相当高了。不过要求也不低,在多年的工作经验要求下,依然要求硕士毕业学历的公司依然占比 33%。相信过不了多久,本科和硕士的学历要求占比就会换一下位置了。五(六)险一金是开的最多的福利待遇,算是公司准则了。现在公司都流行用弹性工作、氛围什么的精神福利来招人了么。 所有源代码及地图素材:https://github.com/zhangzhe532/icodebugs/tree/master/DataAnalysis/lagou_data_Analysis 注: 文章主要参考: Python Data Science Handbook(Python数据科学手册) pandas API 文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html 可视化WordCloud: https://www.jianshu.com/p/daa54db9045d matplotlib中文乱码问题 :https://www.cnblogs.com/hhh5460/p/4323985.html 网站反爬机制日新月异,所以本文有较强的时效性,无法保证您在实践时是否还可行. 所有数据、操作仅作学习交流,不会用于商业用途。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册