公众号后台回复“图书“,了解更多号主新书内容

作者:AI悦创

来源:AI悦创

其实,除了使用 Python 编写爬虫来下载资料, Python 在数据分析和可视化方面也非常强大。往往我们在工作中需要经常使用 Excel 来从表格生成曲线图,但步骤往往比较繁琐,而用 Python 则可以轻松实现。

1. 从 csv 或 excel 提取数据来画图

本节需要先安装 pandas 、matplotlib、seaborn

pip install pandas matplotlib seaborn

我们以刚才创建的 tips_2.xlsx 这个 excel 为例,来介绍我们如何把 Excel 表格中的数据画成图。

tips_2.xlsx 是上一篇我们生成的:Python 万能代码模版:爬虫代码篇

我们这次将 excel 中的卖出价一列,生成柱状图。

代码如下所示:

# -*- coding: utf-8 -*-
# @Author: AI悦创
# @Date:   2021-09-14 21:56:37
# @Last Modified by:   aiyc
# @Last Modified time: 2021-09-15 14:27:22
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np# 使用 pandas 读取 excel, csv 文件的话换成 pd.read_csv 即可
df = pd.read_excel("tips2.xlsx")# 因为第一行是中文表头,所以我们先过滤掉
df = df[df.index>0]
sns.set()
figure2 = plt.figure(figsize = (10, 5))
figure2.add_subplot(1,1,1)# 设置轴的属性
plt.xlabel("",fontsize = 14)
plt.ylabel("卖出价", fontsize = 14)
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)
plt.title("外汇情况", fontsize=14)# 设置字体的属性
# plt.rcParams["font.sans-serif"] = ["Arial Unicode MS"]
# plt.rcParams["font.family"] = 'sans-serif'
plt.rcParams["font.sans-serif"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = Falsecategory = df[0]
index_category = np.arange(len(category))# 将卖出价 转换为数字
df[3] = pd.to_numeric(df[3])
plt.xticks(rotation = 90)
plt.bar(x=df[0], height=df[3].values, color=[1,0,1])
plt.show()

输出如下所示:

替换说明:

  1. 替换要画图的 excel 文件夹名称

  2. Y 轴的标题

  3. 图的标题

  4. 横轴的数据(第几列做横轴)

  5. 纵轴的数据(第几列做纵轴)

代码: https://github.com/AndersonHJB/AIYC_DATA/tree/main/02-玩转图表,实现数据可视化/2.1%20从%20csv%20或%20excel%20提取数据来画图

2. 从文本文件中生成词云

需要先安装 wordcloud,jieba

pip install wordcloud jieba

词云是最近数据分析报告中非常常见的数据表现形式了,它会从一段文字中抽取出高频的词汇并且以图片的形式将它们展示出来。

如何用 Python 生成词云呢?

为了做示范,我们首先解析第一步我们抓取的 tips_1.html 网页(考研网),将所有的新闻标题都存储到一个文本文档中。

代码如下:

# -*- coding: utf-8 -*-
# @Author: AI悦创
# @Date:   2021-09-15 22:15:30
# @Last Modified by:   aiyc
# @Last Modified time: 2021-09-15 23:12:34
from bs4 import BeautifulSoup# 输入参数为要分析的 html 文件名,返回值为对应的 BeautifulSoup 对象
def create_doc_from_filename(filename):with open(filename, "r", encoding='utf-8')as f:html_content = f.read()doc = BeautifulSoup(html_content, "lxml")return docdef parse(doc):post_list = doc.find_all("div",class_="post-info")result = []for post in post_list:link = post.find_all("a")[1]result.append(link.text.strip())result_str="\n".join(result)with open("news_title.txt", "w", encoding='utf-8') as fo:fo.write(result_str)def main():filename = "tips1.html"doc = create_doc_from_filename(filename)parse(doc)if __name__ == '__main__':main()

接下来我们将 news_title.txt 这个文本文件中的汉字进行分词,并生成词云。代码如下:

import jieba
import wordcloud
import matplotlib.pyplot as pltdef create_ciyun():text = ""with open ("news_title.txt", encoding="utf-8") as fo:text = fo.read()split_list = jieba.lcut(text)final_text = " ".join(split_list)stopwords= ["的", "是", "了"]# Windows 系统的 font_path 替换为'C:\Windows\Fonts\STZHONGS.ttf'wc = wordcloud.WordCloud(font_path = r"C:\Windows\Fonts\STZHONGS.TTF", width=1000, height=700, background_color="white",max_words=100,stopwords = stopwords)wc.generate(final_text)plt.imshow(wc)plt.axis("off")plt.show()

然后,在 main 函数中调用:

def main():filename = "tips1.html"doc = create_doc_from_filename(filename)parse(doc)create_ciyun()

为了方便阅读,这里我也把整合好的代码放出来:

# -*- coding: utf-8 -*-
# @Author: AI悦创
# @Date:   2021-09-15 22:15:30
# @Last Modified by:   aiyc
# @Last Modified time: 2021-09-15 23:21:44
import jieba
import wordcloud
import matplotlib.pyplot as plt
from bs4 import BeautifulSoup# 输入参数为要分析的 html 文件名,返回值为对应的 BeautifulSoup 对象
def create_doc_from_filename(filename):with open(filename, "r", encoding='utf-8')as f:html_content = f.read()doc = BeautifulSoup(html_content, "lxml")return docdef parse(doc):post_list = doc.find_all("div",class_="post-info")result = []for post in post_list:link = post.find_all("a")[1]result.append(link.text.strip())result_str="\n".join(result)with open("news_title.txt", "w", encoding='utf-8') as fo:fo.write(result_str)def create_ciyun():text = ""with open ("news_title.txt", encoding="utf-8") as fo:text = fo.read()split_list = jieba.lcut(text)final_text = " ".join(split_list)stopwords= ["的", "是", "了"]# Windows 系统的 font_path 替换为'C:\Windows\Fonts\STZHONGS.ttf'wc = wordcloud.WordCloud(font_path = r"C:\Windows\Fonts\STZHONGS.TTF", width=1000, height=700, background_color="white",max_words=100,stopwords = stopwords)wc.generate(final_text)plt.imshow(wc)plt.axis("off")plt.show()def main():filename = "tips1.html"doc = create_doc_from_filename(filename)parse(doc)create_ciyun()if __name__ == '__main__':main()

不过还是建议阅读源代码文件,源代码文件我此片段最后会放出来。

输出结果如下:

如果你想生成自己的词云,首先你需要想清楚你的数据来源,一般是一个网页或者一个文本文件。

  • 如果是网页的话可以首先保存到本地,提取文本,之后就可以进行代码替换来生成了。(对于网页文件,需要自行提取文本咯,实在不会就把网页的文件的内容,复制出来。保存成 .txt 格式文件。

  • 如果是文本,直接复制在 text,再执行下文即可。)

我们代码模板,实际是下面这个模板:

def create_ciyun():text = ""with open ("news_title.txt", encoding="utf-8") as fo:text = fo.read()split_list = jieba.lcut(text)final_text = " ".join(split_list)stopwords= ["的", "是", "了"]# Windows 系统的 font_path 替换为'C:\Windows\Fonts\STZHONGS.ttf'wc = wordcloud.WordCloud(font_path = r"C:\Windows\Fonts\STZHONGS.TTF", width=1000, height=700, background_color="white",max_words=100,stopwords = stopwords)wc.generate(final_text)plt.imshow(wc)plt.axis("off")plt.show()

替换说明:

  1. 替换为你准备的网页或者文本文件的文件名。

PS:上面的模板生成的词语适合非专业的使用,毕竟如果要较真的话,还是很糙的。

代码:https://github.com/AndersonHJB/AIYC_DATA/tree/main/02-玩转图表,实现数据可视化/2.2%20从文本文件中生成词云

◆ ◆ ◆  ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。管理员二维码:猜你喜欢● 卧槽!原来爬取B站弹幕这么简单
● 厉害了!麟哥新书登顶京东销量排行榜!
● 笑死人不偿命的知乎沙雕问题排行榜● 用Python扒出B站那些“惊为天人”的阿婆主!
● 你相信逛B站也能学编程吗

Python 万能代码模版:数据可视化篇相关推荐

  1. Python 万能代码模版:自动办公,提升 X10 倍工作效率

    你好,我是悦创. 本篇文章首发公众号:AI悦创 :https://mp.weixin.qq.com/s/jhSiOimrNpbhIUpNyoR6TQ,博客原文:https://www.aiyc.top ...

  2. python柱形图代码_Python数据可视化:基于matplotlib绘制「条形图」

    简介 条形图 (bar chart)是用宽度相同条形的高度或长短来表示数据多少的图形,可以横置或纵置.纵置时的条形图也称为 柱形图 (column chart). 绘制条形图 1 import mat ...

  3. python与excel做数据可视化-我在工作中是怎么玩数据的—数据可视化系列教程—Python篇...

    一. 为什么是Python? Python现在已经成为数据科学的语言!基于 Python 代码实现批量化,流程化的数据探索与汇报!按照地产大佬***的话讲--就是重复性的工作直接用Python搞定就可 ...

  4. Python爬虫实战,pyecharts模块,Python实现中国地铁数据可视化

    前言 利用Python实现中国地铁数据可视化.废话不多说. 让我们愉快地开始吧~ 开发工具 Python 版本:3.6.4 相关模块: requests模块; wordcloud模块; 熊猫模块; n ...

  5. python qt5 gui快速编程_现货正版 Python Qt GUI与数据可视化编程 pyqt5教程书籍 pyqt5快速开发与实战Qt5 GUI快速编程 计算机网络程序设计人民邮电出版社...

    热销单品 查看更多 > RMB:85.00 立即购买 RMB:63.50 立即购买 RMB:73.50 立即购买 RMB:49.50 立即购买 RMB:127.80 立即购买 RMB:66.00 ...

  6. Python matplotlib模块实现数据可视化

    Python matplotlib模块实现数据可视化 代码如下: # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import nump ...

  7. 毕业设计-基于Python爬虫的疫情数据可视化系统

    基于Python爬虫的疫情数据可视化系统 采用ECharts+Flask+Requests架构: 源码加3105088663

  8. Python项目实战:数据可视化与股票数据分析-关东升-专题视频课程

    Python项目实战:数据可视化与股票数据分析-333人已学习 课程介绍         本视频内容包括使用Matplotlib绘制图表.MySQL数据库.Python访问数据库和Lambda表达式. ...

  9. 新书《Python Qt GUI与数据可视化编程》

    经过一年多写作和出版社的编辑加工,我的第二本书<Python Qt GUI与数据可视化编程>马上就正式上架了,敬请关注. 本书介绍在Python中使用PyQt5和其他模块进行GUI和数据可 ...

  10. Python爬取豆瓣+数据可视化

    博客原文和源码下载:Python爬取豆瓣+数据可视化 前言 前段时间应我姐邀请,看了一下Python爬虫.不得不说Python的语法确实简洁优美,可读性强,比较接近自然语言,非常适合编程的初学者上手. ...

最新文章

  1. Spring Boot 太重,Vert.x 真香!
  2. 北大博士“最高荣誉”,出炉!
  3. 最近发现了好多好资源,赶紧收藏一下!【粒子特效】
  4. VC两个线程协作运行,轮流运行的
  5. 中国茶叶行业投资策略分析预测及发展发展规划咨询报告2022年版
  6. php ibm mq,php linux IBM MQ安装以及php对接
  7. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)
  8. 05 使用VS程序调试的方法和技巧1214
  9. Oracle 连接查询的理解
  10. CCCC-GPLT L2-017. 人以群分 团体程序设计天梯赛
  11. python3 re正则匹配数据获取案例
  12. Zabbix 4.2.5 安装部署实践详解
  13. 移远ec20 4g模块linux驱动移植,Hi3798移植4G模块(移远EC20)
  14. 彻底解决电脑空闲时,Win音频设备图形隔离(系统进程)占用CPU的问题
  15. FreeMarker模板引擎实现页面静态化
  16. Movidius神经计算棒初体验
  17. P0 口输出级具有能带 8个 LSTTL 门负载能力(指每个端口线例如P0.0P0.1每条位线,而不是整个P0口反证P2地址高8位,如果只能带4个怎么用)这个是门电路的扇出系数也就扇出带门负载能力
  18. Hadoop详解(七)——Hive的原理和安装配置和UDF,flume的安装和配置以及简单使用,flume+hive+Hadoop进行日志处理
  19. (入门、全面、通用)树莓派Raspbian系统安装配置,篇一
  20. ipad怎么压缩文件?教你一招快捷压缩图片

热门文章

  1. IntelliJ IDEA 2017 破解
  2. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java新华书店o2o服务系统89nml
  3. 苹果x漫画脸_【漫画大全】:漫画韩国全集
  4. JAVA打印中文乱码问题
  5. python内置函数type(x)的作用_Python内置函数(43)——type
  6. 蓝牙网关走进智慧校园
  7. 值得收藏!深度报告解读NB-IoT
  8. 物联网模块--esp8266的wifi模块
  9. Teststand 界面打不开问题解决
  10. SENSOR DVP接口介绍