用python/R数据分析可视化汽车使用燃料情况

分析的是美国一个网站统计的多年汽车使用燃料情况的数据,需要从网上下载,在此利用好python爬虫大有裨益,可作为实战运行分析。

此篇文章案例来源于:

本书文章中用R语言实现的数据可视化,是从网上直接下的文件然后分析,我打算在此用python实现爬取相关文件,并且运用python进行可视化分析。

分析

进入主页,得到了下载文件的主链接:

在此可见资源的下载地址:


接下来就是运用爬虫知识实现此文件的下载了。

爬虫代码

我们可有这样的思路:从主页出发 –> 爬取到下载文件页面的链接 –> 再从此爬取到下载地址链接 –> 之后运用相关的函数下载至本目录即可。以下是实现过程。

'''

    函数目标:
    用python爬取相关的下载文件

    编写时间:
    2018-03-21

'''
import requests
import re
from bs4 import BeautifulSoup
from urllib.request import urlretrieve

'''
    first_url方法获取进入下载页面的地址
    运用了正则表达式的匹配方法
                                        '''
def first_url():

    url = 'https://www.fueleconomy.gov/'
    # 添加代理
    header = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh',
            'Cache-Control': 'max-age=0',
            'Connection': 'keep-alive',
            'Host': 'www.fueleconomy.gov',
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36}'
            }

    request = requests.get(url=url, headers=header)
    # 指定编码格式
    request.encoding = 'utf-8'

    '''
        发现不用指定re.S亦可以完成匹配,用了反而会报错...
        注意每次匹配到的数据之后还有索引要记得标明
    '''
    link = re.findall(r'<a href="(.*?)">Developer Tools</a>', request.text)[0]
    return link


'''
    second_url方法是用来获取下载文件的地址
    方法也是运用了正则表达式
                                            '''
def second_url():

    # 进入下载资源的页面
    se_url = 'https://www.fueleconomy.gov' + first_url()
    # 添加代理,基本上的代理信息没什么变化
    header_2 = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh',
            'Cache-Control': 'max-age=0',
            'Connection': 'keep-alive',
            'Host': 'www.fueleconomy.gov',
            'Upgrade-Insecure-Requests': '1',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36}'
            }

    request_2 = requests.get(url=se_url, headers=header_2)
    request_2.encoding = 'utf-8'

    # 匹配正则表达式
    link_2 = re.findall(r'<a href="(.*?)">CSV</a>', request_2.text)[0]

    return link_2


'''
    已经得到了资源下载地址,在主函数中进行下载并且进行解压
                                                    '''
if __name__ == '__main__':

    # 获取下载文件的资源地址
    down_url = 'https://www.fueleconomy.gov' + second_url()
    print('数据采集完成...')
    print('开始下载文件...')

    # 文件名称是:vehicles.csv.zip,格式也是非常的重要!
    urlretrieve(url=down_url, filename='vehicles.csv.zip')
    print('下载完成!可在本工程目录查收!')

至此可在本目录下查看到下载好的压缩文件:

当然也可加上运用python解压这一部分的模块,有兴趣的朋友可自行学习运用。

代码可视化分析阶段

在解压之后可先用excel打开来看看(会发现有39000+行数据),在此只需要知道其中的参数yearcom08,前者为年份,后者为燃料的使用情况相关的数值。

可视化实现代码在下:

最后

这是一个平时做的小项目,适合新手入门。

另外,以上代码中不懂的模块知识,我建议你利用好搜索引擎,查看相关的文档或者是找本书看看。

---------------本文终---------------

文章作者:刘俊

最后更新:2019年01月02日 - 14:01

许可协议: 转载请保留原文链接及作者。