1.2.1 pyecharts的数据类型以及新的数据导入逻辑
由于pyecharts背后封装的js库,会涉及到数据类型转化。它暂时要求输入数据必须是python的基础数据类型,比如字符串,列表,字典,而不能是序列这样的数据类型。因此序列输入需要事先被转化为list等基础数据类型才能被pyecharts支持。
参考代码段:
import pandas as pd
a=pd.read_csv(r"shoes.csv")
a.columns
a.head(1)
p0=a.groupby("info.鞋面材质").size()
p0=p0.sort_values(ascending=False)
p0.tolist()
1.2.2 饼图实现比例数据可视化
2、自行设计数据,生成饼图
随机生成数据方法(也可以自行设计数据,注意数据格式是列表):
图5-3 随机生成数据
以自己随机生成的数据/自行设计的数据为基础,生成基础饼图
- 生成南丁格尔玫瑰图
1.2.3 极坐标堆叠柱形图绘制
1、复现极坐标绘制效果
半径表示日期:
参考:https://gallery.pyecharts.org/#/Polar/polar_radius
圆边表示时间:
参考:https://gallery.pyecharts.org/#/Polar/polar_angleaxis
2、由csv包导入外部数据
pandas的read_csv函数可以用于读取csv文件数据,本次实验需要学习python读取csv文件的模块,python库自带有csv模块,读取csv文件简单,如以下代码读取csv文件,并输出每个单元的值:
import csv
file = open('hot-dog-places.csv','r')
RowsList = csv.reader(file) #file为文件对象
for perRow in RowsList: #遍历每一行,返回列表
for colum in perRow: #遍历一行中每个列单元格
print(colum) #打印单元格
(1)上传csv文件到我们的开发环境中
(2)导入csv文件内容
3、用极坐标进行实现堆叠柱状图(饼状)
(1)用极坐标进行实现可视化
图5-8 极坐标柱形图例
将三组数据均实现出来(半径表示时间):
图5-9 极坐标堆叠图例
4、有一csv文件colleges_universities.csv(该文件可以从超星上下载)按gbk格式存储,包含有部分省份高校本专科数据,请参考以下代码分别实现高校本专科数据的堆叠柱形图和不堆叠柱形图。
#堆叠柱形图代码
from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd
a=pd.read_csv(r"presidential_approval_rate.csv", encoding="gbk")
X=list(a["政治举措"])
Y=list(a["支持"])
Y1=list(a["反对"])
Y2=list(a["不发表意见"])
data= [list(z) for z in zip(X,Y)]
c=Bar()
c.add_xaxis(X)
c.add_yaxis("支持",Y,stack='stack1')
c.add_yaxis("反对",Y1,stack='stack1')
c.add_yaxis("不发表意见",Y2,stack='stack1')
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
c.set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=30)),)
c.render_notebook()
1.2.4 复现矩形树图
TreeMap是pyecharts绘图包的矩形树图函数(文件GDP_data_1.json可在超星上下载),可在https://gallery.pyecharts.org/#/Treemap/treemap_levels上学习TreeMap的功能,复现图5-10代码,绘制矩形树图。
5-10 TreeMap代码
1.2.5 实现堆叠面积图
1、在Jupter NoteBook中加载文件us-population-by-age.xls
2、查阅pyecharts有关堆叠面积图的文档,复现图4-1代码,绘制图4-2堆叠面积图。
图5-11 堆叠面积图
1.2.6 Calendar日历图
1、复现日历图
图5-12 复现日历图及代码
2、自行设计数据,生成Calendar
图5-13 生成Calendar图例及代码
2.3.1 安装包
安装jieba、wordcloud
pip install jieba
pip install wordcloud
2.3.2 文本数据可视化
数据来源于2014年阿里天池数据竞赛,为天猫14年某月用户消费行为记录抽样,第一列是用户号,第二列是品牌号,第三列是记录类型(浏览:0;购买:1;收藏:2,购物车:3),第四列是时间。
1、文件的基本操作,文件的读取
open
readlines()
数据读入的三种方式
readlines(会自动关闭文件)
readline
read(会自动关闭文件)
close
readline读取结构化数据
read经常读取非结构化数据,比如说小说数据的读取,并且对读取结果做统计(词云的单词统计可借鉴这里):
2、文件的基本操作,文件的写入
w:重新写
a:添加
格式化写入,和格式化输出类别:%s
会把原来的清除掉,是重新写入心的内容。
追加,直接添加在后面
格式化的输入,记得close()
5.3.2.2 urllib、requests和BeautifulSoup
urllib是python的基本库之一,内置四大模块,即request,error,parse,robotparser,常用的request,error,一个用于发送HTTP请求,一个用于处理请求的错误。parse用于对URL的处理,拆分,全并等。
requests是python的第三方库,它是对urllib的再次封装。
爬虫的通用步骤:抓取、解析、存储
1、网页的获取
urllib.request.urlopen().read()#获得网页并用read函数读入源代码的查看
2、网页的解析
处理网页包 BeautifulSoup
标签与特征
find_all,attrs={},contents
2.3.3 热门电影影评的爬取过程
豆瓣电影
1、爬取豆瓣影评数据步骤:
(1)获取网页请求
(2)解析获取的网页
(3)提取影评数据
(4)保存文件
(5)词云分析
涉及到的库:requests、BeatifulSoup
(1)获取网页请求:
https://movie.douban.com/subject/25881778/comments?start=20&limit=20&status=P&sort=new_score
25881778:电影ID
start=20:开始页面
limit=20:每页评论条数
(2)解析获取的网页(按下F12查看源码)
找到特殊标签:
<span class="short">看着屈楚萧的脸,你就觉得他为爱痴情这么多年很扯淡。</span>
获取第一条影评:
所以,循环可以获取到该url的所有影评内容
- 将抓取的内容写入到txt文档当中
提示:前面部分都是对一个url,进行处理,请大家思考,针对我们影评实际上是很多个url的,那么应该如何处理呢?
#生成大量的url链接
urls = ['https://movie.douban.com/subject/25881778/comments?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for i in range(0,1000,20)]
for url in urls:
#对获取的当前url爬取处理
time.sleep(1)
建议大家获取前50页的影评,每页20条,如果出现溢出提示,大家可以自行缩少页数,并进行说明。
- 生成词云
https://gallery.pyecharts.org/#/WordCloud/basic_wordcloud
import jieba #中文分词库
2.3.4 几种生成词云的方法介绍
https://gallery.pyecharts.org/#/WordCloud/basic_wordcloud
5.3.5 文本数据可视化的案例
1、数据源:post_data.csv,记录了某网站上最受用户喜爱的100篇文章的浏览量、评论数和文章分类。要求计算出各类文章总的浏览量,然后用pyecharts库中的WordCloud()函数绘制词云图。