刚学python爬虫的时候写了一段下载妹子图片的代码,前两天把他翻出来爬了一堆图片,现在给大家分享一下我的“使用姿势”。

爬的网站是这里
这个网站很有规律,非常适合新手学习、练手。
我在爬图片的时候不仅下载了图片,顺便收割了套图的名字,人气(我理解的是访问量),喜欢(实验证明,点一下就会+1,所以我称它为点赞量),发表时间,编号;将这些内容存在数据库中,由于数据量很小,只有1000行左右,所以用个sqlite就行了,没必要用MySQL,当然写成csv,txt也是可以的。
至于怎么爬取,这不是本文的重点,本文的重点是利用python的pandas进行数据分析。
获得以上信息之后,我用jieba做了个分词,储存在数据库中,可以使用SQL语句中的alter命令在原来的表结构中新增一列。分完词之后就可以进行一波操作了。我分别用Excel和python操作了一番。

Excel部分


虽然Excel处于鄙视链的倒数,但是我不怕被鄙视。

这是初始数据,查看没有缺失值。解释一下标题吧:
id:索引
name:套图的名字
NOs:套图的编号
numbers:一套图中图片的数量
url:套图地址
year:发表与那一年
date:发表时间
poputarity:人气(访问量)
like:喜欢(点赞量)
words:分好的词
我们先把没用的数据隐藏(最好不要删,万一有用呢?),保留year,numbers,date,popularity,like和words就可以了,但是words成这样我们没法操作,需要对它进行分列。这是分好的数据:

先做个数据透视表,计个数,然后就可以根据需要实现数据可视化,关于数据透视表的操作百度经验一搜一大堆,我就不说了,直接上成果吧!

由上图可知,15,16,17年发图的套数和数量,虽然15年的套数比16年多了100多,但总数量并没有多多少,平均每套图的数量也在逐年上升。下面来看详细情况:

我们发现2015年套图数量多,是因为第一,第二季度发的比较多。具体是哪个月我就懒得用excel弄了,还是用python方便一些。下面是每套图中图片数量的箱线图(Excel2016可以直接画箱线图,老一点版本的也可以画出来就是比较麻烦):

均值和中位数大致重合,说明数据没有明显的偏态,16年明显比15年上升了一个台阶,16年只有一个离群值点,17年3个,15年5个。
上面这些都是用户关心的,网站运营者主要关心的是流量(虽然我不知道该网站是如何盈利的)。

可以看出,不管是点赞数还是访问量,15年的都非常小,16年和17年的都明显右偏(15年的太小,看不出来),尤其是17年的点赞量(均值比上四分位数都大,简直不可描述),这是由于17年有几个异常大的离群值,只是被我隐藏了。
此外我还用Excel做了个词频统计:

‘写真’与’性感’突破200,荣获状元和榜眼,探花被’妹子’摘下,’美女’仅比’妹子’少了12票,屈居第四。词频在100次以上的有七个。

python部分


还是python用起来得心应手,直接用pandas搞一搞就出来了。
直接上代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sqlite3
from datetime import datetimeSQL="select * from pictures as p join names on p.id=names.id"
#我当时存到了两个table里面,所以读的时候还要关联,也可以先读取,再用pandas的函数关联
conn=sqlite3.connect(r'G:\mqiqi\meizitu.db')
df=pd.read_sql(SQL,conn) #直接用pandas的函数将数据库中的数据写入数据框
df.info() #查看数据框的信息


可以将没用的数据用del删掉(我没删),有些数据需要转化类型,像NOs要变成字符串,不然我们调用describe方法的时候也会对它操作,year和date要由字符串变成时间格式,方便我们后续操作,另外新增一个month列,对月份进行描述统计还是比较合理的。相关代码如下:

del df['id']
df['date']=pd.to_datetime(df.date,format="%Y-%m-%d")
#Y匹配的是四位年:2017,y匹配二位年:17
df['month']=df.date.values.astype('datetime64[M]')
df.NOs=df.NOs.values.astype('str')
df.year=pd.to_datetime(df.year,format="%Y")
df.info()

再次查看信息,发现已经变了:

输入’df.describe()’,查看一下描述统计:

这些东西在Excel中也能计算,但一想到python中只要一行代码,我就懒了。我们看一下点赞量的最大值是上四分位数的45倍左右,导致均值被拉的虚高,简直丧心病狂,实际操作中可以去掉异常值,但我不想这么做。
直接看看走势吧。

import matplotlib.lines as mlines
plt.rcParams['font.sans-serif'] = ['SimHei'] #中文字体,不然中文会显示成口
plt.figure()
x1=df.groupby('month').popularity.sum()
x2=df.groupby('month').like.sum()
p1=x1.plot(color='b',label=u'每月总访问量')
p2=x2.plot(secondary_y=True,style='--',color='r',label=u'每月总点赞量') #设置次坐标轴
blue_line = mlines.Line2D([],[],linestyle='-',color='blue',markersize=2, label=u'每月总访问量')
red_line= mlines.Line2D([],[],linestyle='--',color='red',markersize=2, label=u'每月总点赞量')
plt.legend(handles=[blue_line,red_line],loc='upper left')
plt.grid(True)
plt.show()

得到下图:

大写的PS:这些指标都是虚荣指标,除了放出来给浏览的客户看看,没什么卵用,真正有用的指标不会给我们看到的
大体上是波动上升,其中在15年2、3、4月网站的总访问量明显较高,16年8、9月也显著增加,17年1月的点赞量异常高,应该就是那几个丧心病狂的造成的。
接下来将访问量和点赞量平均到每套图上看看:

df['rate']=df.like/df.popularity*10000*100
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure()
x1=df.groupby('month').popularity.sum()/(df.groupby('month').count().popularity)
x2=df.groupby('month').like.sum()/(df.groupby('month').count().like)
x3=df.groupby('month').rate.sum()/(df.groupby('month').count().rate)
p1=x1.plot(color='b',label=u'每月平均访问量')
p2=x2.plot(secondary_y=True,style='--',color='r',label=u'每月平均点赞量')
p3=x3.plot(secondary_y=True,style='--',color='g',label=u'每月平均点赞率')
blue_line = mlines.Line2D([],[],linestyle='-',color='blue',markersize=2, label=u'每月平均访问量')
red_line= mlines.Line2D([],[],linestyle='--',color='red',markersize=2, label=u'每月平均点赞量')
green_line=mlines.Line2D([],[],linestyle='--',color='green',markersize=2, label=u'每月平均点赞量')
plt.legend(handles=[blue_line,red_line,green_line],loc='upper left')
plt.grid(True)
plt.show()

这里添加一个新的变量rate,代表点赞率,它的数量级是万分之一,为了能和坐标轴匹配,我将它扩大了1百万倍(为什么大家看完不点赞呢?)

可以看出,15年2,3,4月平均每套图访问量并没有升高,主要原因是多发了几套图。如果我们假定一个用户对一套图只进行一次浏览,我们可以认为网站的活跃用户在此期间并没有明显的增加。至于转现率,用户留存率之类的,我搞不到数据。
点赞率也在缓缓上升,这能不能算作网民素质提高的一种表现呢?
最后放一张箱线图:

可以看出来,比Excel的好看多了,为了图形的美观,我把离群值都忽略了,右上角的是点赞率的图,只有万分之几,这究竟是道德的沦丧还是人性的悲哀。单纯从网站访问量和点赞量来看,该网站的运营情况挺好的。
我也用python做了词频图和一些条形图,和Excel的没啥差别,就不贴出来了。
说了这么多,总得给大家几张福利图片冲击一下视觉吧。

怎么样,够刺激吧!!!


第一次发文,各位大佬多多指教。

福利图网站的正确使用姿势相关推荐

  1. android markdown 框架,Android Studio MarkDown风格README的正确打开姿势

    万事开头难,这是我的第一篇简书,讲一讲我是怎么在AS上安装MarkDown编辑器插件的. 前言 其实吧刚开始我并没有觉得AS自带的文本编辑器有什么不好,README文件也就是记录一些相关信息,也没想着 ...

  2. 透明图片怎么发给别人_如何在网上 1 分钟就搜到高清优质图片?这 3 个搜图网站一定要收藏好...

    一图胜千言,如果你的工作经常和图片打交道,那你一定明白这句话的重要性! ​ 比如,你要准备一个演讲,但 PPT 里却一直找不到合适的配图,凸显不出高大上: 比如,你要给公众号推文配图,但百度出来的图片 ...

  3. Redis 作者 Antirez 讲如何实现分布式锁?Redis 实现分布式锁天然的缺陷分析Redis分布式锁的正确使用姿势!...

    Redis分布式锁基本原理 采用 redis 实现分布式锁,主要是利用其单线程命令执行的特性,一般是 setnx, 只会有一个线程会执行成功,也就是只有一个线程能成功获取锁:看着很完美. 然而-- 看 ...

  4. python word2vec怎么用_小白看Word2Vec的正确打开姿势|全部理解和应用

    有个用心的读者最近做了一篇论文,想知道Word2Vec的相关理论和应用方法,作为一个有强迫症的我,去翻查了大量的文献资料,决定从Word2Vec的上下文来温习一下这个NLP的基础以及做相关的知识体系的 ...

  5. Scrapy爬虫:抓取大量斗图网站最新表情图片

    一:目标 第一次使用Scrapy框架遇到很多坑,坚持去搜索,修改代码就可以解决问题.这次爬取的是一个斗图网站的最新表情图片www.doutula.com/photo/list,练习使用Scrapy框架 ...

  6. easyuefi只能在基于uefi启动的_如何以简单正确的姿势理解“UEFI”和“BIOS”?

    在进行电脑重装的时候,我们常会听到UEFI和BIOS这两个词,例如怎么进入BIOS启动设置页面,电脑不支持UEFI启动等等,但是我们对其背后的含义却没有什么了解,实际上这些都是比较基础的知识,理解这些 ...

  7. Python爬取福利图要在中午,因为早晚会出事!我才存了2000文件夹

    爱美之心人皆有之,我们爬取找寻这些漂亮小姐姐的图片并不是出于什么龌龊的目的.而是欣赏美好的东西总是会让人心情愉悦的,对于美丽事物的追求是人与生俱来的天性. 爬虫成果 发现很多想要学习Python却不知 ...

  8. robocraft一直显示正在联系服务器,Robocraft如何正确的姿势开飞机攻略

    这篇攻略由高玩网友提供,主要是告诉Robocraft的新手玩家如何用正确的姿势开飞机.首先,你得有一架飞机. 另外我这里主要说轰炸的进攻方式和躲避,当然,玩截击机的也可以来看看,还是有一些帮助的. 先 ...

  9. PCA、碎石图、PCA+正确的维度个数、增量PCA(IncrementalPCA)、随机PCA(Randomized PCA)、KernelPCA

    PCA.碎石图.PCA+正确的维度个数.增量PCA(IncrementalPCA).随机PCA(Randomized PCA).KernelPCA 目录 PCA

最新文章

  1. Android使用SQLite数据库(1)
  2. referer 访问控制
  3. kettle预览点两下才出数_BBG代王 | 7.16直播预览
  4. Qt Creator添加套件
  5. python连接mongo数据库
  6. JSP标准标签库、通用标签
  7. xp彻底删除mysql_xp彻底清除mysql数据库
  8. c语言抽签系统_抽签小程序(C语言随机数)
  9. vfp连接高拍仪难不难,只看这篇就能搞定
  10. 7-10 365次方 (10 分)
  11. matlab 画根轨迹,4.4 绘制根轨迹的MATLAB函数 | 学步园
  12. 重新编译使用CMake的旧项目的问题处理
  13. linux winqq 不能输入中文的解决办法
  14. ELK - docker
  15. 前端入门CSS(1)
  16. 【系统分析师之路】计算机组成原理章节错题集锦
  17. 怎么往日历里面加时钟java,怎样在博客里添加钟表和日历
  18. 全球工业半导体市场占有率十大排名出炉
  19. BZOJ 4864: [BeiJing 2017 Wc]神秘物质 解题报告
  20. week03-面向对象

热门文章

  1. 第一章 无线通信收发机结构 杨远望 和习题
  2. 信息爆炸的时代,太早进入社会不是好选择
  3. ubuntu 录屏软件
  4. atx860和java_JAVA 版 ATX-Client
  5. 高等数学上册前三章思维导图(自制)
  6. 【python】文本转换为语音——pyttsx3模块的使用
  7. 输出集合的所有子集(幂集)-C语言
  8. R basics: R语言修改默认显示语言
  9. 图书查重器 图书外采查重器 图书盘点机 图书采集器 老师的好帮手
  10. 如何快速提高英语听力水平|学习心得+听写经验,附进入英文新闻殿堂的垫脚石