1 绘制python图书封面的照片墙


import math
import os
from PIL import Imagedef makePicturesWall(picdir):picslist = os.listdir(picdir)num_pics = len(picslist)size = 64line_numpics = int(math.sqrt(num_pics))picwall = Image.new('RGBA', (line_numpics * size, line_numpics * size))x = 0y = 0for pic in picslist:img = Image.open(os.path.join(picdir, pic))img = img.resize((size, size), Image.ANTIALIAS)picwall.paste(img, (x * size, y * size))x += 1if x == line_numpics:x = 0y += 1print('[INFO]: Generate pictures wall successfully......')picwall.save('picwall.png')if __name__ == '__main__':imgDir = '/home/kiosk/PycharmProjects/Spider/mySpider/img/full'makePicturesWall(imgDir)
  • 照片墙效果显示如下:

2 图书的价格分布南丁格尔图


import pandas as pd
from pyecharts import Piedef load_data(filename):""":param filename: 加载数据的文件名:return:prices: 书籍的价格null_price_count: 空数据的个数"""#  1). 读取csv文件;df = pd.read_csv(filename)# 2). 删除缺失值;#   axis=0:----表示轴向。默认为0,表示删除所有含有空值的行#   how='any'----表示删除的方式。默认为any。为any的时候,表示只要存在缺失值就删除。#                为all的时候,表示全部是缺失值才能删除。all_count = df.shape[0]prices = df.price.dropna(axis=0, how='any')data_count = prices.shape[0]null_price_count = all_count - data_countprint("缺失值数量为:", null_price_count)# 3). 对书籍的价格数据进行预处理, 转换成float类型;prices = [float(price.strip('¥')) for price in prices]return prices, null_price_countdef data_cut(prices):"""根据书籍价格的区域进行切分, 返回切分后的统计数据;:param prices::return:"""# 设置切分区域priceBins = [0, 50, 100, 150, 200, 10000]# 设置切分后对应标签priceLabels = ['50元以下', '50-100', '100-150', '150-200', '200以上']# 利用pd.cut进行数据离散化切分# pd.cut(price, bins=5, right=True, labels=None, retbins=False, precision=3, include_lowest=False)cut_prices = pd.cut(prices, bins=priceBins, labels=priceLabels, include_lowest=True).value_counts()return cut_pricesdef show_picture(cut_prices):pie = Pie("python书籍价格分布")pie.add("", cut_prices.keys(), cut_prices.values(),# center为调整饼图圆心坐标center=[50, 50],# is_random是否随即排列颜色列表(bool)is_random=False,# radius为半径,第一个为内半径,第二个是外半径radius=[30, 75],# rosetype为是否展示成南丁格尔图#         'radius' 圆心角展现数据半分比,半径展现数据大小#         'area' 圆心角相同,为通过半径展现数据大小rosetype='area',is_legend_show=False,#  is_label_show为是否显示标签(各个属性的数据信息)is_label_show=True,#  label_text_size为调整标签字体大小label_text_size=18)pie.render()if __name__ == '__main__':filename = 'items.csv'prices, null_price_count = load_data(filename)cut_prices = dict(data_cut(prices))cut_prices['缺失值'] = null_price_countshow_picture(cut_prices)
  • 效果显示如下:

3 评论数量TOP10的图书条形图

import pandas as pddef load_data(filename):"""加载并处理数据, 返回根据评论数排序好的数据变量df;:param filename: 文件名:return:"""df = pd.read_csv(filename)# 根据评论数量进行排序;sorted_df = df.sort_values(by='comment_num')return sorted_dfdef show_picture(df):"""绘制条形图:param df: 根据评论排序好的数据:return:"""# 1). 获取评论量排前10的书籍名称和评论数量;commentTop10 = df.tail(10)[['title', 'comment_num']][::-1]# 2). 绘制条形图from pyecharts import Barbar = Bar("Python相关图书评论数量分布TOP10", title_text_size=24)bar.add("",# x轴commentTop10.title,# y轴commentTop10.comment_num,# 显示label信息is_label_show=True,#  bar_category_gap调整的是柱形间距bar_category_gap='70%',# 标记虚线: 此处标出最大值最小值的虚线。mark_line=["min", "max"],# 标记点: 此处标出平均值的地方。mark_point=["average"],# 横、纵坐标值偏转的角度,当坐标值过于密集时,可采用此方法。xaxis_rotate=30,yaxis_rotate=30,# 绘图为竖向条形图的设置;# is_convert=True)bar.render()if __name__ == '__main__':filename = 'items.csv'sorted_df = load_data(filename)show_picture(sorted_df)
  • 条形图效果展示:

注意: 此处的图书名称太长, 显示不好看, 可以对标题进一步处理,只提取书名的前6个字符即可.

3 书籍简介词云可视化分析


import re
from collections import Counter
import pandas as pd
import jieba
from pyecharts import WordClouddef load_data(filename):"""加载与预处理数据:param filename::return:"""# 1). 读取当当网数据信息;df = pd.read_csv(filename)before_drop_count = df.shape[0]# 2). 删除书籍简介的缺失值descs = df.introduction.dropna()after_drop_count = descs.shape[0]null_num = before_drop_count - after_drop_countprint('缺失值数量', null_num)# 3). 拼接所有的书籍简介为一个字符串并清洗数据(删除所有的空格并将大写字母全部转换为小写字母;)all_descs = "".join(descs)# 将所有的空格和非字母数字下划线的字符串替换为空;all_descs = re.sub(r'[\s\W]', '', all_descs).lower()# 4). 中文分词切割与统计;cut_descs = list(jieba.cut(descs))counter_descs = Counter(cut_descs)counter_descs = {key: value for key, value in counter_descs.items() if len(key) != 1}return counter_descsdef show_picture(counter_descs):""":param counter_descs: 切割并统计好的书籍简介数据(类似字典格式):return: """wordcloud = WordCloud("python书籍评论词云统计", width=1300, height=1000)wordcloud.add("",# word数据,词云图中显示的词语;counter_descs.keys(),# 词语权重,相当于词频;counter_descs.values(),# 生成的词云图轮廓, 有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选shape='star',# 单词间隔,默认为20word_gap=50,# 单词字体大小范围,默认为[12,60]word_size_range=None,# 旋转单词角度,默认为45; 仅当 shape 为默认的'circle'时 rotate_step 参数才生效# rotate_step=60)wordcloud.render()if __name__ == '__main__':filename = 'items.csv'descs = load_data(filename)show_picture(descs)
  • 效果展示如下:

基于Pandas和PyEcharts的当当网图书信息可视化分析相关推荐

  1. scrapy框架的简单使用——爬取当当网图书信息

    ** Scrapy爬取当当网图书信息实例 --以警察局办案为类比 ** 使用Scrapy进行信息爬取的过程看起来十分的复杂,但是他的操作方式与警局办案十分的相似,那么接下来我们就以故事的形式开始Scr ...

  2. Python爬虫实战+Scrapy框架 爬取当当网图书信息

    1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...

  3. python 爬虫 爬取当当网图书信息

    初次系统的学习python,在学习完基本语法后,对爬虫进行学习,现在对当当网进行爬取,爬取了基本图书信息,包括图书名.作者等 import requests from time import slee ...

  4. 爬虫入门经典(二十四) | 爬取当当网图书信息并进行数据清洗

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  5. Python基于Matplotlib实现双Y轴绘图——图书销售数据可视化分析

    今天遇上一个小的需求就是需要绘制双轴的图,这个之前使用excel的话是可以很快绘制出来的,但是基于代码实现的话好像还么怎么用过,所以这里研究了下,绘制好后,分享记录一下,首先看下数据: 主要是不同种类 ...

  6. Redis-Scrapy分布式爬虫:当当网图书为例

    Scrapy-Redis分布式策略: Scrapy_redis在scrapy的基础上实现了更多,更强大的功能,具体体现在: reqeust去重,爬虫持久化,和轻松实现分布式 假设有四台电脑:Windo ...

  7. python爬虫之静态网页(以当当网图书畅销榜榜为例)

    在编写爬虫代码时,将网页分为静态网页和动态网页两种,不同类型的网页数据有着不同的处理办法,这篇文章简述爬取静态网页的方法,以当当网的图书销量为例,使用爬虫技术可以获得网页的页面数据并且自动生成exce ...

  8. 使用selenium爬取当当网图书

    1.目标 利用Selenium抓取当当网图书并用正则表达式获取到得到商品的图片.名称.价格.评论人数信息. 2.开发环境 python2.7 +windows10 +pycharm 3.页面分析 如图 ...

  9. Scrapy爬取当当网图书销售前100

    scrapy爬取当当网图书畅销榜 一.采集任务 爬取当当网图书畅销榜信息,获取热销图书前500相关数据. 二.网页解析 1. 打开当当网,按照图书榜>图书畅销榜 进入当当网图书畅销榜[http: ...

最新文章

  1. mongDB的常用操作总结
  2. 辞九门回忆用计算机,辞九门回忆(单轨,曲速70,适合UTAU调教;midishow首发)...
  3. mysql 删除重复数据_MySQL查找和删除重复数据
  4. 7、Flask实战第7天:Jinjia2模板
  5. leetcode-python-优先级队列与时间复杂度
  6. 适用于python机器学习与实践的twenty_newsgroups.py文件内容
  7. [Java基础]反射概述
  8. maven 结合idea入门
  9. 【资源下载】DeepMindUCL深度学习与强化学习进阶课程
  10. android 编译宏,android 添加全局变量宏开关的三种方式
  11. 浅析计算机应用管理及前景,论计算机应用技术的现状及前景
  12. Python 数据可视化之matpotlib画图
  13. bleeding edge是什么意思
  14. 库存明细帐处理示例(包含结存数).sql
  15. 汉高2020财年第三季度实现强劲的有机销售额增长,增幅达3.9%
  16. 我制作了python脚本自动抢购淘宝秒杀产品,学会优先享受双十一福利
  17. 华为机试真题 C++ 实现【最短木板长度】【100%通过率】【2022.11 Q4 新题】
  18. java.lang.RuntimeException:Unable to start activity ComponentInfo{com.meizu.beautify/com.my.viewc.Ma
  19. cxf webservice接口
  20. debian之网易云音乐的安装

热门文章

  1. IDEA最全图标详解
  2. VSCode 显示 GB2312 编码格式的中文乱码
  3. S7-200 SMART V2.7安装包下载链接及安装教程
  4. linux下如何读取使用iso 镜像文件的方法【转】
  5. (三)视觉处理算法基础
  6. redis密码、端口号、连接IP的修改
  7. 可以永久清除您的隐私——MacCleanse for Mac v8.0特别版垃圾清理软件!
  8. 2021-03-22linux内核编译和安装过程
  9. PCA(主成分分析法)的Python代码实现(numpy,sklearn)
  10. 生活随记 - 台风里最可爱的人