精华内容
下载资源
问答
  • (账户关键词消费图)关键词数据有了,但该如何去分析,以下作为一个长期研究百度竞价关键词数据分析师为你分享!在分析数据的前提你要对以下问题产生兴趣,最终你会透过数据现象找到实质问题。任何一数据指标的出现...

    玩过竞价的人都知道,竞价是份花钱的工作,经验都是花钱积累起来的,如何玩好百度竞价,其中一个很核心的关键就是对关键词的掌握。

    373f9d6b0714e1bb80aeb805992d59d7.png

    (账户关键词消费图)

    关键词数据有了,但该如何去分析,以下作为一个长期研究百度竞价关键词数据的分析师为你分享!

    在分析数据的前提你要对以下问题产生兴趣,最终你会透过数据现象找到实质问题。

    任何一数据指标的出现,都要剖析它存在的意义,运作原理?产生的数据指标如何去认知理解?数据指标之间的层次关系?这一点不知道作为数据分析的你是否去深入揣摩过。

    设置-观察-判断决策-后续对比

    关键词ID(载体)、出价、匹配模式(前期设置)

    展现、点击、消费、点击率、点击均价(后期数据指标)

    设置

    关键词ID我们可以作为一个主体,再围绕它设置出价,设置匹配模式,这是前期设置工作。后期所产生的数据变量,也由这两者调控。

    “便秘” 设置出价1.4元,匹配模式-精确,出价1.4元并不是最终出价,匹配模式也并不是最终固定的匹配模式,后阶段我们要对应此关键词产生的数据进行调整优化。

    2db98628c907fbc6bdd82eeaafdc3e55.png

    (数据图一)

    观察

    展现量的多少?由出价高低,匹配模式不同设置,以及外界人群在各地区各时段不同的检索量决定。

    点击量的多少?展现量高低最终会决定点击次数的变化,受众群体曝光率越高,受众点击也就越大,展现和点击这两者关系是密切关联的,也由出价,匹配模式的设置以及创意的撰写会产生不同变化。

    点击率高低?点击率作为点击/展现的计算值,点击率的高低我们可以作为衡量排名高低标准,点击率越高也代表排名创意越好。

    消费的高低?这个数据指标是最敏感的,也是最为关心的,每次查看关键词数据时我们总会优先将消费这栏数据指标作为第一位进行升序排列,高消费的关键词集中在哪些?消费是否合理?

    点击均价的高低?点击均价=消费/点击,单次点击均价是不会超过我们设置的出价,我们在出价的同时,心里就做好单次点击均价的预测结果。

    9a159131ee001a255cdd7640bc70586b.png

    (数据图二)

    以上所产生的数据个人分析如下:

    点击率达到多少?展现与点击(三者的关联)

    展现655,点击44,每100次展现就有6次左右点击,点击率在6.72%,此受众展现和受众点击处是否正常阶段?以及点击率在多少比较好?

    在我们投放广告时你一定要去了解搜索引擎广告排位,百度移动端顶部广告位为3个,中间1个广告位,总共4个广告位,在众多同行竞争搜索排名中,你的广告位肯定是在4个广告位不断展现给网民的;

    同行搜索,网民搜索,只是简单浏览没点击或点击别的商家广告,以及搜索引擎排名的展现机制变化等;这些不确定因素,即使你出价很高,推广创意非常吸引人的情况下,你的广告点击指标永远不可能达到100%,继续往下演测;

    如果展现10次点击5次,点击率是50%,每两次展现就有一次点击,这种高点击率也难达到,通过这个推测,关键词点击率能达到20%或30%是非常不错的,广告排名和推广创意也是处在良好状态。

    以上数据图二中:关键词点击率在6.72%,在我处理数据过程中判断为一个正常阶段,因为该关键词有利有弊,搜索意向程度判断一般,如果你想让点击率进一步提升,和增加点击量,只有通过加价+优化创意可进一步提升,调整匹配模式列外;此设置只对应搜索词数据来放宽或收紧关键词的流量。

    消费的占比?平均点击均价与出价(三者的关联)

    消费49.03,消费作为一个总量,我们的第一直觉判断就是这个关键词是否消费过多?还是消费太少?如果这个关键词能统计到转化,那么我们就可以通过转化数据来评判这个词的标准,但是转化数据一般无法对接到这一步,我们只能根据词性的意向程度来进行评断。

    关于怎么去判断关键词的意向程度?举个例子:治疗词的意向远远大于症状表现类的词,有人搜索这个词想了解相关知识和注意事项,有人想了解相关改善方法等;因此我会判断“便秘”为中等意向词。

    其次我们可以得出一个肯定,在我们设置关键词出价时,治疗类的词出价远远会高于症状表现类的词,这是绝对肯定的。

    “便秘”这个关键词有利有弊,在账户关键词总消费位列在前10位内就可以,账户总消费前五最高的词一定是消耗在意向明确的词,例如:“便秘的治疗”,“便秘的改善方法”等。

    平均点击均价和出价是关联在一起的,点击均价是不会高于出价,如果点击均价快接近出价,说明同行设置的同一个关键词出价也是接近我们设置的出价,关键词之间的出价相互竞争是很激烈的。

    ae260b18e71e645cf1d04f1995abaf4a.png

    (数据图三)

    判断决策

    1,关键词出价提高或降低?

    每个关键词有了数据之后,流量多少,消费高低,我们都可以通过出价和匹配模式合理控制,但是什么类型的关键词该提升流量和消费?什么类型的关键词该控制消费降低出价?

    在我们前期构建账户分词阶段,精准词、意向词、流量词等;我想就做好了关键词分类工作和评判标准,在对这个词的意向程度进行合理出价,精准词的出价会高于意向词,意向词会高于流量词。

    上面有说过“便秘”这个关键词有利有弊,可以判断为意向词,消费占比前10就可以,如果想让该关键词获取更高展现资格以及更多点击量,可以小幅度的提价0.2元或0.1元,注意出价一般建议微调,在出价提升之后关键词数据会有微幅度变化,展现,点击,消费等;数据指标会有所提升,后续要做好和之前的数据对比观察。

    2,匹配模式调整

    以上描述过;此设置只对应搜索词数据来放宽或收紧关键词的流量。在账户关键词在满足的状态下,匹配模式我一般不会随意变换,除非为了扩展更多的检索词和出低价跑流量模式外。

    如果匹配模式从“精确”变更为-“短语-精确包含或同义包含”,展现量会得到一定提升,关键词也会匹配到其它相关性的词,但数据会更加多样式,会造成更多的数据负担,对关键词流量好坏数据难以掌握。

    关键词我一般喜欢精准玩法,但是要保证账户关键词充足的状态下这样投放,前阶段投放关键词也可能是短语-核心或同义包含,先跑出数据,在把没有挖掘到的搜索词都加上,但后期账户投放到一定程度,关键词匹配模式我会设置精准模式跑,因为这更便于我精准把控制每个关键词的流量大小,匹配模式有利有弊,看每个人不同的玩法。

    3,优化创意

    优化创意最终目的是为了获取更多点击流量,如果我的广告排在第三位,创意标题和内容,都是紧抓关键词和客户心理去写的,你的广告肯定会优先截留客户的点击。

    在优化创意过程中,我们一定要清楚了解自己推广的落地页内容是什么,创意的描述一定要紧扣落地页的内容,如果想要不断提升创意质量,就要做到这些;

    网民检索词-触发关键词-展示推广创意-进入落地页,这四者为一个网民的搜索浏览行为,我经常会去搜索自己的广告创意描述以及参考同行,在脑中会浮想正常网民的搜索需求行为,自己的创意还有哪些不足,还需要优化添加,只有这样做才能把创意优化到真正理想阶段。

    后续对比

    每一次对关键词的调整,数据会有不同幅度的变化,我们要做好过后的数据观察对比,养成记录习惯。

    今天我调整这个关键词出价或匹配模式,过后要观察这个关键词是不是展现点击有明显提升,来源的流量是否精准匹配,消费是否控制在更合理的范围内。

    可能对数据敏感的人会用excel表格统计每天账户消费最高的关键词对比,有调整就会变化在总结,这就是把竞价数据统计做到最极致的地步,做我有所需的数据采集。

    账户关键词的附属工具“标签”是一个很好地运用工具,可以方便我们调整后快速搜寻。

    以上为个人sem关键词实战记录分享,如果你对百度竞价也有研究,可相互探讨。

    其次投放好一个账户你要做好以下几点:

    1,账户结构要清晰合理,这是投账户的开端。

    2,数据统计方向;时段、地区、关键词主要消费和流量分布占比;这些要做到心中有数

    3,任何调整,都要有依据去进行,不能凭空想象去做。

    4,自己推广优势是什么?所欠缺的是什么?该怎么去做?以及分析同行的优势是什么?

    5,多做有结果的事,不要做无用功。

    展开全文
  • 前文已经全部爬取上市公司公告,...   # coding: utf-8 #coded by 伊玛目的门徒 from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] ...txt...

    前文已经全部爬取上市公司公告,https://blog.csdn.net/qq_37195257/article/details/85015987

     

    # coding: utf-8
    #coded by 伊玛目的门徒
    
    from pylab import mpl
    
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    
    
    
    import jieba
    txt= open('test.txt','r').read()
    
    words = jieba.lcut(txt)     # 使用精确模式对文本进行分词
    
    counts = {}
    
    for word in words:
        if len(word) == 1:    # 单个词语不计算在内
            continue
        else:
            counts[word] = counts.get(word, 0) + 1    # 遍历所有词语,每出现一次其对应的值加 1
    
    
    
    print (counts)
    
    
    
    
    
    items = list(counts.items())
    print (items)
    items.sort(key=lambda x: x[1], reverse=True)    # 根据词语出现的次数进行从大到小排序        # .
    
    
    word_list=[]
    count_list=[]
    
    for i in range(0,20):
        word, count = items[i]
        word_list.append(word)
        count_list.append(count)
        print("{0:<5}{1:>5}".format(word, count))
    
    
    
    import matplotlib.pyplot as plt
    
    
    plt.bar(range(len(count_list)), count_list)
    
    plt.xlabel(word_list)
    
    
    plt.show()

     

    频率最高词排序:

    关于    4527
    公告    4356
    股份    2155
    2018  1628
    会议    1353
    独立    1316
    公司    1275
    临时    1156
    董事会   1076
    意见    1006
    决议     953
    有限公司   942
    董事     934
    股东大会   778
    股东     725
    事项     617
    资金     602
    科技     573
    部分     558
    交易     510

     

    图:

     

    另外说一下,报告度最高的个股是 云南白药

    展开全文
  • 新版生意参谋数据分析模型-关键词分析表,含图表分析,硬核分析表值得下载!
  • 基于本人目前要在杭州寻找一份数据分析的初阶工作的现实考量,故决定采用前程无忧上关键词数据分析’和地点设置在杭州上的招聘信息作为此次数据分析的数据来源来进行实操,同时也为了能让自己更好的了解目前杭州...

    背景:作为个数据分析小菜鸟,深知知行合一的重要性。基于本人目前要在杭州寻找一份数据分析的初阶工作的现实考量,故决定采用前程无忧上关键词‘数据分析’和地点设置在杭州上的招聘信息作为此次数据分析的数据来源来进行实操,同时也为了能让自己更好的了解目前杭州关于数据分析岗位的招聘市场以及岗位的成长性作一个简单的前瞻和展望。

    方法:首先通过爬虫的request和BeatifulSoup库来进行所需数据的抓取(此次主要借鉴网上的源代码进行适当修改爬取杭州的数据)。然后爬取的数据进行适当的清洗和整理,进行可视化和分析操作,主要用到numpy,pandas以及matpotlib和wordcloud等python库。最后对所获的图表进行合理的分析和适当的展望。此次分析采集数据时间为8月6日,样本数为2372.

    具体代码实现:

    # -*- coding: utf-8 -*-
    import pandas as pd 
    import numpy as np 
    import matplotlib.pyplot as plt #首先还是我们的老三样
    df = pd.read_csv(r'/Users/herenyi/Downloads/前程无忧招聘信息.csv', encoding = 'UTF-8') #读取文件
    df.info() #快速浏览文件
    

    在这里插入图片描述

    这就是大致数据全览,数据类型各项标签都为字符串格式。不过这里要提醒下,自己把列名换成英文比较好,不然等下引用列可能会出现不必要的麻烦。接下来就是选取我们想要的列,以及数据是否有重复值和缺失值了,我们继续下一步。

    df_norepeat = df.drop_duplicates(subset =[ '公司'], keep = 'first' )
    df_norepeat.info()  #我们通过drop_duplicates函数去除重复值,并且新建一列以便后面操作。并用info函数加以个数确认。
    

    在这里插入图片描述
    接下来我们处理缺失值,本次报告我们需要的主要数据方面的就是工资这列,所以我们需要处理工资这列的缺失值。而工资这列只有2325个值,相对于公司数字2338来说,是有缺失的,我们去掉没有工资记录的行。

    df_clean = df_norepeat.dropna(subset = ['薪资']) #去掉没有工资的空值,并传递到df_clean中。
    df_clean.info()
    

    在这里插入图片描述
    这时候每个工资和公司都一一标定了,很舒服了。接下来我们要进行薪资里的字符串进行处理,这也是最复杂的部分,因为里面有各种格式。

    df_clean[‘薪资’] # 让我们来看看薪资的构成。
    

    在这里插入图片描述
    我们可以看到,单位有以千/月,万/月,万/年主要这三种格式,我们需要把他们全部转化为。由于还不怎么熟悉正则表达,我们可以尝试分割-来分隔最高和最低工资,以及如何区分单位的差别,我们需要定义个函数。

    def cut_word(word, method): #传入两个参数,一个是数据集,一个是方法
        position1 = word.find('年')
        position2 = word.find('万')
        position3 = word.find('-') #定位到三个地方
        if position1 != -1:
            bottom = float(word[:position3]) * 10 / 12
            top = float(word[position3 + 1:position2]) * 10 / 12 #首先如果找得到年,那单位即为为万/年,此时的最低和最高薪水就可以转化单位了。
        elif position2 != -1 & position1 == -1:
            bottom = float(word[:position3]) * 10
            top = float(word[position3 + 1:position2]) * 10 #如果找不到年且找得到万,那单位即为万/月,计算最低最高薪水。
        else:
            bottom = float(word[:position3])
            top = float(word[position3 + 1:position3 + 2]) #接下来就是千/月了,常规处理。
        if method == 'bottom':
            return bottom
        else:
            return top
          
    df_clean['topsalary']= df_clean.薪资.apply(cut_word, method = 'top')
    df_clean['bottomsalary']= df_clean.薪资.apply(cut_word, method = 'bottom') #求出最高和最低工资
    

    在这里插入图片描述
    然后我们发现这么一个错误,貌似我们看到的前二十项里面不包含这样的格式,从截取的片段来看260元应该是个实习生之类的日结岗位,我们需要再优化下我们的函数来删除这些不规范的数据。

    def cut_word(word, method): #传入两个参数,一个是数据集,一个是方法  
        position1 = word.find('年')
        position2 = word.find('万')
        position3 = word.find('-')
        position4 = word.find('千')
        if position1 != -1:
            bottom = float(word[:position3]) * 10 / 12
            top = float(word[position3 + 1:position2]) * 10 / 12 #首先如果找得到年,那单位即为为万/年,此时的最低和最高薪水就可以转化单位了。
        elif position2 != -1 & position1 == -1:
            bottom = float(word[:position3]) * 10
            top = float(word[position3 + 1:position2]) * 10 #如果找不到年且找得到万,那单位即为万/月,计算最低最高薪水。
        elif position4 != -1:
            bottom = float(word[:position3])
            top = float(word[position3 + 1:position3 + 2]) #接下来就是千/月了,常规处理。
        else:
            import numpy as np
            bottom = np.nan
            top = np.nan #**我们想把不符合的数据全变为空值,以便后面删除这些行**
        if method == 'bottom':
            return bottom
        else:
            return top
    
    

    在这里插入图片描述
    然后神奇的又来了,居然还有2万以下/年的字符段,这就是不会正则精确匹配的坏处,但是土归土,我们这样查找字段也还是能解决的。我们再加个查找就好了。

    def cut_word(word, method): #传入两个参数,一个是数据集,一个是方法  
        position1 = word.find('年')
        position2 = word.find('万')
        position3 = word.find('-')
        position4 = word.find('千')
        position5 = word.find('以') #定位到五个地方
        if position1 != -1 & position5 == -1:
            bottom = float(word[:position3]) * 10 / 12
            top = float(word[position3 + 1:position2]) * 10 / 12 #首先如果找得到年,且找不到以下字段,那单位即为为万/年,此时的最低和最高薪水就可以转化单位了。
        elif position2 != -1 & position1 == -1:
            bottom = float(word[:position3]) * 10
            top = float(word[position3 + 1:position2]) * 10 #如果找不到年且找得到万,那单位即为万/月,计算最低最高薪水。
        elif position4 != -1:
            bottom = float(word[:position3])
            top = float(word[position3 + 1:position3 + 2]) #接下来就是千/月了,常规处理。
        else:
            import numpy as np
            bottom = np.nan
            top = np.nan #**我们想把不符合的数据全变为空值,以便后面删除这些行**
        if method == 'bottom':
            return bottom
        else:
            return top
    

    在这里插入图片描述
    居然还有10万以上/月的数据,我真是***了,所以说处理脏数据这块是真心最烦的。我觉得要精确匹配,不然接下来鬼知道还有什么奇奇怪怪的数据在。

    def cut_word(word, method): #传入两个参数,一个是数据集,一个是方法  
        position1 = word.find('万/年')
        position2 = word.find('万/月')
        position3 = word.find('-')
        position4 = word.find('千/月')
        if position1 != -1 :
            bottom = float(word[:position3]) * 10 / 12
            top = float(word[position3 + 1:position1]) * 10 / 12 
        elif position2 != -1:
            bottom = float(word[:position3]) * 10
            top = float(word[position3 + 1:position2]) * 10 
        elif position4 != -1:
            bottom = float(word[:position3])
            top = float(word[position3 + 1:position4]) 
        else:
            import numpy as np
            bottom = np.nan
            top = np.nan 
        if method == 'bottom':
            return bottom
        else:
            return top
    
    df_clean['topsalary']= df_clean.薪资.apply(cut_word, method = 'top')
    df_clean['bottomsalary']= df_clean.薪资.apply(cut_word, method = 'bottom') 
    df_clean = df_clean.dropna(subset = ['topsalary']) #删除我们之前的空值行
    

    终于处理好这些数据了,也没运行bug。继续下一步,这里引入新的知识点,匿名函数lambda。很多时候我们并不需要复杂地使用def定义函数,而用lamdba作为一次性函数。lambda x: ******* ,前面的lambda x:理解为输入,后面的星号区域则是针对输入的x进行运算。

    df_clean[‘avgsalary’] = df_clean.apply(lambda x: (x.topsalary+x.bottomsalary)/2, axis = 1)
    df_clean = df_clean.rename(columns={'所在地':'location', '公司类型':'type', '工作经验':'exp', '学历':'education', '公司规模': 'scale'})  #不想再不断切换输入法了,把列名替换下。
     df_need = df_clean [['location', 'type', 'exp', 'education', 'scale', 'avgsalary']] #筛选出所需的列。
    df_need.head() #至此数据部分清理基本结束,接下来进行可视化操作。
    

    在这里插入图片描述
    现在的数据就很清爽整洁了。

    df_need.location.value_counts() #对字符串用value_counts方法去分类。
    df_need.avgsalary.describe() #对数值列我们用describe方法看下大概。
    

    在这里插入图片描述
    在这里插入图片描述
    貌似还有很多异地招聘,为了更加准确的获得杭州市场的数据,我们决定删除异地的数据。接下来开始画图。好激动有木有!可以参考本人的matplotlib实战来照葫芦画瓢。

    location = ['杭州',
    '杭州-滨江区',
    '杭州-西湖区',
    '杭州-江干区',
    '杭州-余杭区',
    '杭州-拱墅区',
    '杭州-下城区',
    '杭州-萧山区',
    '杭州-上城区']
    df_need = df_need.loc[df_clean['location'].isin(location)]  #我们又一步精简数据到只剩杭州地区。
    plt.style.use('ggplot') #使用ggplot配色,可以使图片美观,当然还有很多其他风格,大家自行百度
    fig, ax = plt.subplots()
    ax.hist(df_need['avgsalary'], bins = 20) #分成15组
    ax.set_xlim(0, 40) #把x轴刻度缩小点
    

    在这里插入图片描述
    数据大体呈现个单峰状,其中大部分聚集在5k到10k区间,越往后逐渐下降,基本符合现实。接下来我们进行分组,进行细分分析。首先是单因素条件下的分析。

    ax = df_need.boxplot(column = 'avgsalary', by = 'location', figsize = (9,7)) 
    

    在这里插入图片描述
    这时候我们发现x轴刻度标签显示错误了,这时候需要我们导入中文字体。网上的方法有很多,这里我们采用用FontProperties方法。

    #导入中文,我电脑里面随便找了个ttf文件,貌似是堡垒之夜里面自带的中文字体,哈哈。
    
    from matplotlib.font_manager import FontProperties
    chinese = FontProperties(fname = r'/Users/Shared/Epic Games/Fortnite/Engine/Content/Slate/Fonts/DroidSansFallback.ttf')
    ax = df_need.boxplot(column = 'avgsalary', by = 'location', figsize = (9,7)) 
    for label in ax.get_xticklabels():
    	label.set_fontproperties(chinese)
    ax.set_ylim(0,50) 
    ax.set_xlabel('区域', fontproperties=chinese) 
    ax.set_ylabel('平均工资(千/月)', fontproperties=chinese) 
    ax.set_title('不同行政区域之间平均工资的箱体图', fontproperties=chinese) 
    
    

    在这里插入图片描述
    具体的图表分析请参见结尾的PDF报告,这边主要介绍代码实现,以下同理。

    ax = df_need.boxplot(column = 'avgsalary', by = 'exp', figsize = (9,7)) 
    for label in ax.get_xticklabels():
    	label.set_fontproperties(chinese)
    ax.set_ylim(0,50) 
    ax.set_xlabel('工作经验', fontproperties=chinese) 
    ax.set_ylabel('平均工资(千/月)', fontproperties=chinese) 
    ax.set_title('不同工作经验之间平均工资的箱体图', fontproperties=chinese) 
    

    在这里插入图片描述

    以及之后的公司规模,学历背景以及企业性质对平均工资的影响,就直接放图了。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    上面就是单因素分析的过程了,接下来我们想多因素角度下分析对平均薪资的影响。主要用到groupby。

    df_need.groupby('location').count() #等价于之前的value.counts(),不过这是全列在按区域分组的数据
    df_need.groupby(['location','education']).mean()
    

    在这里插入图片描述
    在这里插入图片描述
    我们看到当在groupby里传入一个列表示,得到一组层次化的Series,这时候已经有初步的多因素分析基础了,我们以此可以进行数据可视化操作。

    ax = df_need.groupby('location').mean().plot.bar(figsize = (9,7)) 
    for label in ax.get_xticklabels():
        label.set_fontproperties(chinese)
        label.set_rotation(30)       
    ax.set_xlabel('区域', fontproperties=chinese) 
    ax.set_ylabel('平均工资(千/月)', fontproperties=chinese) 
    ax.set_title('不同行政区域之间平均工资的条形图', fontproperties=chinese) 
    

    在这里插入图片描述

    ax = df_need.groupby(['education', 'exp']).avgsalary.mean().unstack().plot.bar(figsize = (14,6))
    for lable in ax.get_xticklabels():
        lable.set_fontproperties(chinese)
        lable.set_rotation(360)
    ax.legend(prop=chinese)
    ax.set_xlabel('学历', fontproperties=chinese) 
    ax.set_ylabel('平均工资(千/月)', fontproperties=chinese) 
    ax.set_title(u'不同教育背景下平均工资与工作经验的关系', fontproperties=chinese)
    

    在这里插入图片描述

    这是多因素下的条形图,这边就举个例子,大家可以把groupby中的参数调换下,形成新的因素分析。这里自己有个一直困惑的小知识点,可能会影响图形选择,我这里夹带点私货,就是条形图和直方图的区别,貌似网上是这样说的(条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据)。我们接下来用下直方图来展示下数据型数据,也就是我们这里的平均工资这列。

        
    fig, ax = plt.subplots()
    ax.hist(x = df_need[df_need.education == '本科'].avgsalary, bins = 20, normed = 1, 
            facecolor = 'blue', alpha = 0.5, range=(0, 40))
    ax.hist(x = df_need[df_need.education == '大专'].avgsalary, bins = 20, normed = 1, 
            facecolor = 'red', alpha = 0.5, range=(0, 40)) #alpha为透明度,normed=1表示显示百分比。
    ax.legend(['本科', '大专'], prop=chinese) #修改图例名称
    ax.set_xlabel('平均工资(千/月)', fontproperties=chinese) 
    ax.set_title('本科与大专之间各平均工资段百分比人数', fontproperties=chinese)
    

    在这里插入图片描述
    通过直方图,我们可以很清晰的看到本科与大专间的各薪资段百分人数。说明直方图适合显示数据型数据,比箱线图更加清晰明了。最后我想用分桶的方法划分薪资来看下各行政区内的薪资段百分比。

    bins = [0, 5, 10,  20, 100]
    df_need['level'] = pd.cut(df_need['avgsalary'], bins=bins) #我们以此分组为初,中,高,顶级数据分析师。
    

    在这里插入图片描述

    bins = [0, 5, 10,  20, 100]
    df_need['level'] = pd.cut(df_need['avgsalary'], bins=bins) #我们以此分组为初,中,高,顶级数据分析师。
    df_level = df_need.groupby(['location', 'level']).avgsalary.count().unstack()
    df_level_percent = df_level.apply(lambda x: x/x.sum(), axis = 1)
    ax = df_level_percent.plot.bar(stacked = True, figsize = (14,6))
    for label in ax.get_xticklabels():
        label.set_fontproperties(chinese)
        label.set_rotation(30)    
    legends = ['0-5k','5k-10k','10k-20k','30k-100k']
    ax.legend(legends, loc = 'upper right')
    ax.set_xlabel('行政区', fontproperties=chinese)
    ax.set_title('不同行政区内各薪资段百分比组成', fontproperties=chinese)
    

    在这里插入图片描述
    大家可以自己换换参数试一下,可能会发现其他有趣的结论哦。接下来我们就做一下关键字词云吧,看看这些企业到底有什么福利!

    df_clean['labels'] = df_clean.标签 #先把列名改为英文 
    df_clean['labels'] 
    

    在这里插入图片描述

    word = df_clean.labels.str.split('|')
    df_word = word.dropna().apply(pd.value_counts)
    clean_word = df_word.unstack().dropna().reset_index()
    

    在这里插入图片描述
    把数据格式处理成这样,在进行词云操作。

    from wordcloud import WordCloud
    df_word_counts = clean_word.groupby('level_0').count()
    df_word_counts.index = df_word_counts.index.str.replace("'", "")
    wordcloud = WordCloud(font_path=r'/Users/Shared/Epic Games/Fortnite/Engine/Content/Slate/Fonts/DroidSansFallback.ttf',
                          width=900, height=400, background_color='white')
    f, axs = plt.subplots(figsize=(15, 15))
    wordcloud.fit_words(df_word_counts.level_1)
    axs = plt.imshow(wordcloud)
    plt.axis('off')
    

    在这里插入图片描述
    这次实战主要侧重一般的数据清理,以及多维和可视化的建立,通过此次项目大概基本代码都过了一遍,并且提升了自身解决问题能力。关于图表的分析请参见链接: https://pan.baidu.com/s/1hpjkO2_HwwlJt2utMf2ANw 提取码: ihg6。由于是个人第一个项目,图表的分析还很稚嫩,主要关注点还是在实战上,分析的话要结合更多的数理知识比如各因素的比重距离算出来显得更加专业点,后续慢慢完善。

    展开全文
  • 【seo工具】关键词挖掘,获取关键词数据比较基础的部分,渠道很多,这次我们来采集凤巢的关键词数据,对关键词的分析,以及使用才是重点!我们先解决基础部分:每次使用脚本需抓包获取cookies数据登陆百度凤巢后台...

    【seo工具】关键词挖掘,获取关键词数据比较基础的部分,渠道很多,这次我们来采集凤巢的关键词数据,对关键词的分析,以及使用才是重点!我们先解决基础部分:

    每次使用脚本需抓包获取cookies数据登陆百度凤巢后台

    找到返回json关键词数据的链接作为请求对象

    构造header信息,假装你是个人类

    构造data信息,用作post

    使用pycurl模块请求,使用json模块把返回的json数据可识别,这边直接用正则提取

    写入到csv文件当中,就酱了

    #coding:utf-8

    import pycurl,StringIO,json,urllib,re,time,random,csv

    #找到返回json数据的链接

    url = 'https://fengchao.baidu.com/nirvana/request.ajax?path=jupiter/GET/kr/word&reqid=1473662256226_43'

    # filename = raw_input('input your filename\t')

    #轮换ua

    def getUA():#随机取ua

    uaList = [

    'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322;+TencentTraveler)',

    'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729)',

    'Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1',

    'Mozilla/5.0 (Windows NT 6.1; rv:44.0) Gecko/20100101 Firefox/44.0',

    'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'

    ]

    newUa = random.choice(uaList)

    return newUa

    #构造头部信息

    headers = [

    'Accept:*/*',

    'Accept-Encoding:gzip, deflate',

    'Accept-Language:zh-CN,zh;q=0.8',

    'Connection:keep-alive',

    # 'Content-Length:857',

    'Content-Type:application/x-www-form-urlencoded',

    # 'Cookie:-----自定义cookie--------',

    'Cookie:FC-FE-TERMINUS=fc_terminus_user; PSTM=1470278993; BIDUPSID=68D179B9795C9500BE7ECCE65F4DABDE; __cfduid=d76a2eae0d2d244e95526665c082a83c21470281708; BAIDUID=D845C1483B574B75268F3B55DD7C3E99:FG=1; BDUSS=RQQkxEOE5XNVZEdlBjTnpiTVQwdHI1YX5IdDJnQkJ-UnBvMEMtRmpuTjFqUDFYQUFBQUFBJCQAAAAAAAAAAAEAAAABgNQ2Qmlnd2F5c2VvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHX~1Vd1~9VXUT; H_PS_PSSID=1457_18280_21097_20856_20732; SFSSID=1854195357ed9983fd81f60449bb8f68; SIGNIN_UC=70a2711cf1d3d9b1a82d2f87d633bd8a02236744899; uc_login_unique=2fd154d0e97cc43a168b297ce0a3b280; __cas__st__3=0bafc4a741efb26d56acf2af8ec6b681db29020e1105f6d9b48086a98f6689d9cd346297babc34f158f94392; __cas__id__3=21291948; __cas__rn__=223674489; SAMPLING_USER_ID=21291948',

    'Host:fengchao.baidu.com',

    'Origin:https://fengchao.baidu.com',

    'Referer:https://fengchao.baidu.com/nirvana/main.html?userid=21291948',

    #'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',

    'User-Agent: %s' %getUA(),

    ]

    #打开fengchao.csv用来保存关键词数据

    fengchao = open('fengchao.csv','a')

    fengchao.write('关键词,Total,PC,Mobile\n')

    # n=0

    for query in [word.strip() for word in open('word.txt').readlines()]:

    # frist = 'Word:%s\tTotal\tPc\tMobile\n\n' % query #表头

    # fengchao.write(frist)

    # n+=1

    for pagelink in range(1,5):

    #构造需要post的data

    data = urllib.urlencode({

    'params': '{"entry":"kr_station","query":"%s","querytype":1,"pageNo":%d,"pageSize":300}' % (query,pagelink),

    'source':'',

    'path':'jupiter/GET/kr/word',

    'userid':21291948,

    'token':'0bafc4a741efb26d56acf2af8ec6b681db29020e1105f6d9b48086a56f6689d9cd346297babc34f158f94392',

    #'eventId':'1471855302096_47',

    #'reqId':'1471855302096_30',

    'Name':'',

    })

    time.sleep(1)

    c = pycurl.Curl()#通过curl方法构造一个对象

    c.setopt(pycurl.FOLLOWLOCATION, True)#自动进行跳转抓取

    c.setopt(pycurl.MAXREDIRS,5)#设置最多跳转多少次

    c.setopt(pycurl.CONNECTTIMEOUT, 60)#设置链接超时

    c.setopt(pycurl.TIMEOUT,120)#下载超时

    c.setopt(pycurl.ENCODING, 'gzip,deflate')#处理gzip内容,有些傻逼网站,就算你给的请求没有gzip,它还是会返回一个gzip压缩后的网页

    # c.setopt(c.PROXY,ip)# 代理

    c.fp = StringIO.StringIO()

    c.setopt(pycurl.URL, url)#设置要访问的URL

    c.setopt(pycurl.HTTPHEADER,headers)#传入请求头

    c.setopt(pycurl.POST, 1)

    c.setopt(pycurl.POSTFIELDS, data)#传入POST数据

    c.setopt(c.WRITEFUNCTION, c.fp.write)#回调写入字符串缓存

    c.perform()

    code = c.getinfo(c.HTTP_CODE)#返回状态码

    html = c.fp.getvalue()#返回源代码

    # print n

    for word,total,pc,mobile in re.findall(r'rd":"(.*?)","pv":(\d+),"pvPc":(\d+),"pvWise":(\d+),',html):

    print word,total,pc,mobile

    # fengchao.writelines(word + '\t' + total + '\t' + pc + '\t' + mobile + '\n')

    fengchao.writelines('%s,%s,%s,%s\n'%(word,total,pc,mobile))

    fengchao.close()

    脚本中很多地方是需要修改成自己的,注册一个凤巢的账号(免费的),抓包修改信息即可;

    脚本写的有一段时间了,能不能用,不知道,思路清晰就好!

    展开全文
  • SEM数据分析之做好关键词报告

    千次阅读 2018-10-02 16:24:11
    像搜索词报告、无效点击报告、地域报告、高级样式报告都是SEM数据分析的一个重要依据,那么今天我们就来讲讲其中的关键词报告。 对于数据分析中,关键词报表SEMer应从哪几个方面入手分析?关键词报表是数据分析中...
  • 本议题不会深入讨论大数据概念及其相关架构,而是从日志分析这个环节切入进去,介绍360网站卫士团队在纯粹的数据分析层面使用的到技巧和方法,并且围绕与数据分析相关的关键词分析、关键词绕过技巧、异常建模等话题...
  • 数据处理之搜索关键词分析

    千次阅读 2019-05-27 16:09:47
    ####离线数据处理,hive分析(保留汉子、字母、数字、开头数字去除、过滤垃圾数据) select content,count(1) wordsnumber from ( select regexp_replace(split(eventname,'_')[1],' |,|:|/|-|\r|\n|[[^0-9a-zA-Z...
  • 做网站关键词排名就要懂得经常对网站数据进行分析,才能把网站关键词排名做得更高。 广尚传媒介绍了以下四个方面来对网站关键词进行分析,下面一起来了解一下。 一、关键词排名高低 关键词的排名高低是我们每天最...
  • PowerBI与Excel一样,它是一款软件,也是Excel数据处理的亲儿子,毕竟Power BI是从Excel发展而来的,两者之间有着千丝万缕的关系。如果你有听说Excel里面的三大插件Power Query、Power Pivot、 Power View的话,这个...
  • 关键词分析表.zip

    2020-09-04 03:25:01
    新版生意参谋数据分析模型-关键词分析表,含图表分析,Top搜索词指标,搜索分析指标,搜索分析源数据,硬核分析表值得下载,超详细,绝对超值。。
  • 涉及知识点1、抓取数据2、分页爬虫规律分析1、抓取数据,发现每一项都是data-tools标签2、分页分析代码importrequests frombs4importBeautifulSoup importre importjson importjieba #获取html页面信息 ...
  • # -*- coding: utf-8 -*- # @Time : 2020/5/12 14:56 # @Author : 结尾!! # @FileName: day01-将所有前3万的关键词汇总.py... df_demo=pd.read_excel(f"./美国2019年后台6月至9月品牌分析数据/{file}",encoding='ut..
  • 数据分析及报表生成 招聘需求 城市: 北京 职位: Python开发 技能分布 总体结论 文娱/互金行业,D轮以上融资,万人大厂,工资最高 大多数公司入职门槛决定天花板,所以入职薪资水平很关键 职位需求较大的...
  • 关键词排名优化分析

    2020-11-11 15:46:29
    1.旧数据分析:详细分析商品已有的关键词,点击率高的重点培养,点击率低的删除。 2.新数据分析:分析当前行业热门词汇列表,分析交易指数排名,选择最适合商品的热门词汇。 3.选择主推词:选择与商品权重比较相...
  • 导 语问卷调查中,我们喜欢引用他人的测量工具(量表或问卷)或者根据研究目的和理论编制或修订符合自己需要的工具,为了保证问卷具有较高的可靠性和有效性,在正式分析或形成正式问卷之前,我们会对测量结果进行信效度...
  • 数据统计的后台可以看出大部分是通过在百度搜索关键词【seo博客】和【SEO博客】来的,其实【郑州SEO】我也做到了首页,但是呢这个词带来的流量是很少的,这说明搜索郑州SEO这个关键词的大部分是同行来看排名的变化...
  • B站关键词搜索结果寻找数据所在的网址观察数据储存格式json完整代码结果 寻找数据所在的网址 输入关键词,点击搜索 拉到底端点击第三页,从Name中寻找type?context=&page=3&order=&keyword= 点击...
  • SPSS做极差分析的过程有些麻烦,小兵认为是需要经过两次【定制表】菜单,先计算因素水平在试验指标Y上的均值,然后重新录入数据,再计算每个因素的极差,顺便制作因素水平均值趋势图。统计结果如下:这个因素水平-.....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,667
精华内容 1,466
关键字:

关键词数据分析