我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python数据可视化举例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python数据可视化举例分析

这篇文章主要介绍“Python数据可视化举例分析”,在日常操作中,相信很多人在Python数据可视化举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python数据可视化举例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

01 网页分析

Python数据可视化举例分析

获取微信公众号文章信息,、开头、公众号、发布时间。

请求方式为GET,请求网址为红框部分,后面的信息没什么用。

02 反爬破解

Python数据可视化举例分析

什么时候出现上图这种情况呢?

两种,一种同一个IP重复访问页面,另一种同一个Cookies重复访问页面。

两个都有,挂的更快!完整爬取我只成功了一次...

因为我最开始就是先什么都不设置,然后就出现验证码页面。然后用了代理IP,还是会跳转验证码页面,直到***改变Cookies,才成功爬取。

01 代理IP设置

def get_proxies(i):     """     获取代理IP     """     df = pd.read_csv('sg_effective_ip.csv', header=None, names=["proxy_type", "proxy_url"])     proxy_type = ["{}".format(i) for i in np.array(df['proxy_type'])]     proxy_url = ["{}".format(i) for i in np.array(df['proxy_url'])]     proxies = {proxy_type[i]: proxy_url[i]}     return proxies

代理的获取以及使用这里就不赘述了,前面的文章有提到,有兴趣的小伙伴可以自行去看看。

经过我两天的实践,免费IP确实没什么用,两下子就把我真实IP揪出来了。

02 Cookies设置

def get_cookies_snuid():     """     获取SNUID值     """     time.sleep(float(random.randint(2, 5)))     url = "http://weixin.sogou.com/weixin?type=2&s_from=input&query=python&ie=utf8&_sug_=n&_sug_type_="     headers = {"Cookie": "ABTEST=你的参数;IPLOC=CN3301;SUID=你的参数;SUIR=你的参数"}     # HEAD请求,请求资源的首部     response = requests.head(url, headers=headers).headers     result = re.findall('SNUID=(.*?); expires', response['Set-Cookie'])     SNUID = result[0]     return SNUID

总的来说,Cookies的设置是整个反爬中最重要的,而其中的关键便是动态改变SNUID值。

这里就不详细说其中缘由,毕竟我也是在网上看大神的帖子才领悟到的,而且领悟的还很浅。

成功爬取100页就只有一次,75页,50页,甚至到***一爬就挂的情况都出现了...

我可不想身陷「爬-反爬-反反爬」的泥潭之中,爬虫之后的事情才是我的真正目的,比如数据分析,数据可视化。

所以干票大的赶紧溜,只能膜拜搜狗工程师。

03 数据获取

1 构造请求头

head = """ Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding:gzip, deflate Accept-Language:zh-CN,zh;q=0.9 Connection:keep-alive Host:weixin.sogou.com Referer:'http://weixin.sogou.com/', Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 """  # 不包含SNUID值 cookie = '你的Cookies'  def str_to_dict(header):     """     构造请求头,可以在不同函数里构造不同的请求头     """     header_dict = {}     header = header.split('\n')     for h in header:         h = h.strip()         if h:             k, v = h.split(':', 1)             header_dict[k] = v.strip()     return header_dict

2 获取网页信息

def get_message():     """     获取网页相关信息     """     failed_list = []     for i in range(1, 101):         print('第' + str(i) + '页')         print(float(random.randint(15, 20)))         # 设置延时,这里是度娘查到的,说要设置15s延迟以上,不会被封         time.sleep(float(random.randint(15, 20)))         # 每10页换一次SNUID值         if (i-1) % 10 == 0:             value = get_cookies_snuid()             snuid = 'SNUID=' + value + ';'         # 设置Cookies         cookies = cookie + snuid         url = 'http://weixin.sogou.com/weixin?query=python&type=2&page=' + str(i) + '&ie=utf8'         host = cookies + '\n'         header = head + host         headers = str_to_dict(header)         # 设置代理IP         proxies = get_proxies(i)         try:             response = requests.get(url=url, headers=headers, proxies=proxies)             html = response.text             soup = BeautifulSoup(html, 'html.parser')             data = soup.find_all('ul', {'class': 'news-list'})             lis = data[0].find_all('li')             for j in (range(len(lis))):                  h4 = lis[j].find_all('h4')                 #print(h4[0].get_text().replace('\n', ''))                 title = h4[0].get_text().replace('\n', '').replace(',', ',')                  p = lis[j].find_all('p')                 #print(p[0].get_text())                 article = p[0].get_text().replace(',', ',')                  a = lis[j].find_all('a', {'class': 'account'})                 #print(a[0].get_text())                 name = a[0].get_text()                  span = lis[j].find_all('span', {'class': 's2'})                 cmp = re.findall("\d{10}", span[0].get_text())                 #print(time.strftime("%Y-%m-%d", time.localtime(int(cmp[0]))) + '\n')                 date = time.strftime("%Y-%m-%d", time.localtime(int(cmp[0])))                  with open('sg_articles.csv', 'a+', encoding='utf-8-sig') as f:                     f.write(title + ',' + article + ',' + name + ',' + date + '\n')             print('第' + str(i) + '页成功')         except Exception as e:             print('第' + str(i) + '页失败')             failed_list.append(i)             continue     # 获取失败页码     print(failed_list)   def main():     get_message()   if __name__ == '__main__':     main()

***成功获取数据。

Python数据可视化举例分析

Python数据可视化举例分析

04 数据可视化

1 微信文章发布数量***0

Python数据可视化举例分析

这里对搜索过来的微信文章进行排序,发现了这十位Python大佬。

这里其实特想知道他们是团队运营,还是个人运营。不过不管了,先关注去。

这个结果可能也与我用Python这个关键词去搜索有关,一看公众号名字都是带有Python的(CSDN例外)。

from pyecharts import Bar import pandas as pd  df = pd.read_csv('sg_articles.csv', header=None, names=["title", "article", "name", "date"])  list1 = [] for j in df['date']:     # 获取文章发布年份     time = j.split('-')[0]     list1.append(time) df['year'] = list1  # 选取发布时间为2018年的文章,并对其统计 df = df.loc[df['year'] == '2018'] place_message = df.groupby(['name']) place_com = place_message['name'].agg(['count']) place_com.reset_index(inplace=True) place_com_last = place_com.sort_index() dom = place_com_last.sort_values('count', ascending=False)[0:10]  attr = dom['name'] v1 = dom['count'] bar = Bar("微信文章发布数量***0", title_pos='center', title_top='18', width=800, height=400) bar.add("", attr, v1, is_convert=True, xaxis_min=10, yaxis_rotate=30, yaxis_label_textsize=10, is_yaxis_boundarygap=True, yaxis_interval=0, is_label_show=True, is_legend_show=False, label_pos='right', is_yaxis_inverse=True, is_splitline_show=False) bar.render("微信文章发布数量***0.html")

2 微信文章发布时间分布

Python数据可视化举例分析

因为这里发现搜索到的文章会有2018年以前的,这里予以删除,并且验证剩下文章的发布时间。

毕竟信息讲究时效性,如果我搜索获取的都是老掉牙的信息,就没什么意思了,更何况还是在一直在变化的互联网行业。

import numpy as np import pandas as pd from pyecharts import Bar  df = pd.read_csv('sg_articles.csv', header=None, names=["title", "article", "name", "date"])  list1 = [] list2 = [] for j in df['date']:     # 获取文章发布年份及月份     time_1 = j.split('-')[0]     time_2 = j.split('-')[1]     list1.append(time_1)     list2.append(time_2) df['year'] = list1 df['month'] = list2  # 选取发布时间为2018年的文章,并对其进行月份统计 df = df.loc[df['year'] == '2018'] month_message = df.groupby(['month']) month_com = month_message['month'].agg(['count']) month_com.reset_index(inplace=True) month_com_last = month_com.sort_index()  attr = ["{}".format(str(i) + '月') for i in range(1, 12)] v1 = np.array(month_com_last['count']) v1 = ["{}".format(int(i)) for i in v1] bar = Bar("微信文章发布时间分布", title_pos='center', title_top='18', width=800, height=400) bar.add("", attr, v1, is_stack=True, is_label_show=True) bar.render("微信文章发布时间分布.html")

3 、文章开头词云

from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt import pandas as pd import jieba  df = pd.read_csv('sg_articles.csv', header=None, names=["title", "article", "name", "date"])  text = '' # for line in df['article'].astype(str):(前文词云代码) for line in df['title']:     text += ' '.join(jieba.cut(line, cut_all=False)) backgroud_Image = plt.imread('python_logo.jpg') wc = WordCloud(     background_color='white',     mask=backgroud_Image,     font_path='C:\Windows\Fonts\STZHONGS.TTF',     max_words=2000,     max_font_size=150,     random_state=30 ) wc.generate_from_text(text) img_colors = ImageColorGenerator(backgroud_Image) wc.recolor(color_func=img_colors) plt.imshow(wc) plt.axis('off') # wc.to_file("文章.jpg")(前文词云代码) wc.to_file(".jpg") print('生成词云成功!')

到此,关于“Python数据可视化举例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python数据可视化举例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python数据可视化举例分析

这篇文章主要介绍“Python数据可视化举例分析”,在日常操作中,相信很多人在Python数据可视化举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python数据可视化举例分析”的疑惑有所帮助!接下来
2023-06-16

python数据分析绘图可视化实例分析

本篇内容介绍了“python数据分析绘图可视化实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:数据分析初始阶段,通常都要进行可视
2023-07-02

Python数据分析之绘图和可视化的示例分析

小编给大家分享一下Python数据分析之绘图和可视化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言matplotlib是一个用于创建出版质量图表
2023-06-15

Python数据处理及可视化的示例分析

这篇文章主要介绍Python数据处理及可视化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、NumPy的初步使用表格是数据的一般表示形式,但对于机器来说是不可理解的,也就是无法辨识的数据,所以我们需要对表
2023-06-29

Python不可变数据结构举例分析

这篇文章主要讲解了“Python不可变数据结构举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python不可变数据结构举例分析”吧!我们从思考正方形和矩形开始。如果我们抛开实现细节,
2023-06-17

python实现股票历史数据可视化分析案例

目录1 数据预处理1.1 股票历史数据csv文件读取1.2 关键数据——在csv文件中选择性提取“列”1.3 数据类型转换1.4 数据按列提取并累加性存入列表2 pyecharts实现数据可视化2.1 导入库2.2 初始化画布2.3 根据需
2022-06-03

Python爬虫数据举例分析

本篇内容介绍了“Python爬虫数据举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!获取数据打开斗鱼直播界面,连续点击翻页Networ
2023-06-02

Python可视化技巧实例代码分析

这篇“Python可视化技巧实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python可视化技巧实例代码分析”文
2023-07-06

python可视化plotly图例设置的示例分析

这篇文章主要介绍python可视化plotly图例设置的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、图例(legend)import plotly.io as pioimport plotly.expr
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录