准备分析汽车油耗

-  从http://fueleconomy.gov/geg/epadata/vehicles.csv.zip(这里请使用科学上网咯~亲测!)下载汽车油耗数据集并解压

-  进入jupyter  notebook(ipython  notebook)并新建一个New Notebook
-  输入命令

import pandas as pd
import numpy as np
from ggplot import *
import matplotlib.pyplot as plt%matplotlib inlinevehicles = pd.read_csv("vehicles.csv")
vehicles.head

按下Shift +Enter 键,可以看到如下结果:

其中 pandas中Data Frame类的边界方法head,查看一个很有用的数据框data frame的中,包括每列的非空值数量和各列不同的数据类型的数量。

描述汽车油耗等数据

-  查看有多少观测点(行)和多少变量(列)
-  查看年份信息
len(pd.unique(vehicles.years))
min(vehicles.year)
max(vehicles.year)
 
-  查看燃料类型
pd.value_counts(vehicles.fuelTypel)
-  查看变速箱类型
pd.value_counts(vehicles.trany)
trany变量自动挡是以A开头,手动挡是以M开头;故创建一个新变量trany2:
vehicles['trany2'] = vehicles.trany.str[0]
pd.value_counts(vehicles.trany2)
同理可以查看其它特征数据

分析汽车油耗随时间变化的趋势

-  先按照年份分组

grouped = vehicle.groupby('year')
-  再计算其中三列的均值
averaged= grouped['comb08', 'highway08', 'city08'].agg([np.mean])
-  为方便分析,对其进行重命名,然后创建一个‘year’的列,包含该数据框data frame的索引
averaged.columns = ['comb08_mean', 'highwayo8_mean', 'city08_mean']
averaged['year'] = averaged.index
-  使用ggplot包将结果绘成散点图
print ggplot(averaged, aes('year', 'comb08_mean')) + geom_point(colour='steelblue') + xlab("Year") + \
ylab("Average MPG") + ggtitle("All cars")
-  去除混合动力汽车
criteria1 = vehicles.fuelType1.isin(['Regular Gasoline', 'Premium Gasoline', 'Midgrade Gasoline'])
criteria2 = vehicles.fuelType2.isnull()
criteria3 = vehicles.atvType != 'Hybrid'
vehicles_non_hybrid = vehicles[criteria1 & criteria2 & criteria3]
-  将得到的数据框data frame按年份分组,并计算平均油耗
grouped = vehicles_non_hybrid.groupby(['year'])
averaged = grouped['comb08'].agg([np.mean])
averaged['hahhahah']  = averaged.index
-  查看是否大引擎的汽车越来越少
pd.unique(vehicles_non_hybrid.displ)
-  去掉nan值,并用astype方法保证各个值都是float型的
criteria = vehicles_non_hybrid.displ.notnull()
vehicles_non_hybrid = vehicles_non_hybrid[criteria]
vehicles_non_hybrid.loc[:,'displ'] = vehicles_non_hybrid.displ.astype('float')
criteria = vehicles_non_hybrid.comb08.notnull()
vehicles_non_hybrid = vehicles_non_hybrid[criteria]
vehicles_non_hybrid.loc[:,'comb08'] = vehicles_non_hybrid.comb08.astype('float')
-  最后用ggplot包来绘图
print ggplot(vehicles_non_hybrid, aes('displ', 'comb08')) + geom_point(color='steelblue') + \
xlab('Engine Displacement') + ylab('Average MPG') + ggtitle('Gasoline cars')
-  查看是否平均起来汽车越来越少了
grouped_by_year = vehicles_non_hybrid.groupby(['year'])
avg_grouped_by_year = grouped_by_year['displ', 'comb08'].agg([np.mean])
-  计算displ和conm08的均值,并改造数据框data frame
avg_grouped_by_year['year'] = avg_grouped_by_year.index
melted_avg_grouped_by_year = pd.melt(avg_grouped_by_year, id_vars='year')
-  创建分屏绘图
p = ggplot(aes(x='year', y='value', color = 'variable_0'), data=melted_avg_grouped_by_year)
p + geom_point() + facet_grid("variable_0",scales="free") #scales参数fixed表示固定坐标轴刻度,free表示反馈坐标轴刻度
==========================================很皮的更新分隔线==========================================

调查汽车的制造商和型号

接下来的步骤会引导我们继续深入完成数据探索

-  首先查看cylinders变量有哪些可能的值

pd.unique(vehicles_non_hybrid.cylinders)

-  我们再将cylinders变量转换为float类型,这样可以轻松方便地找到data frame的子集

vehicles_non_hybrid.cylinders = vehicles_non_hybrid.cylinders.astype('float')

pd.unique(vehicles_non_hybrid.cylinders)

-  现在,我们可以查看各个时间段有四缸引擎汽车的品牌数量

vehicles_non_hybrid_4 = vehicles_non_hybrid[(vehicles_non_hybrid.cylinders==4.0)]

import matplotlib.pyplot as plt
%matplotlib inline

grouped_by_year_4_cylinder = \
vehicles_non_hybrid_4.groupby(['year']).make.nunique()
fig = grouped_by_year_4_cylinder.plot()
fig.set_xlabel('Year')
fig.set_ylabel('Number of 4-Cylinder Maker')

随后,print fig 显示出图像,参见下图:

分析:

我们可以从上图中看到,从1980年以来四缸引擎汽车的品牌数量呈下降趋势。然而,需要注意的是,这张图可能会造成误导,因为我们并不知道汽车品牌总数是否在同期也发生了变化。为了一探究竟,我们继续一下操作。

-  查看各年有四缸引擎汽车的品牌的列表,找出每年的品牌列表

grouped_by_year_4_cylinder = vehicles_non_hybrid_4.groupby(['year'])

unique_makes = []
for name, group in grouped_by_year_4_cylinder:
    unique_makes.append(set(pd.unique(group['make'])))

unique_makes = reduce(set.intersection, unique_makes)
print unique_makes

我们发现,在此期间只有12家制造商每年都制造四缸引擎汽车。
接下来,我们去发现这些汽车生产商的型号随时间的油耗表现。这里采用一个较复杂的方式。首先,创建一个空列表,最终用来产生布尔值Booleans。我们用iterrows生成器generator遍历data frame中的各行来产生每行及索引。然后判断每行的品牌是否在此前计算的unique_makes集合中,在将此布尔值Blooeans添加在Booleans_mask集合后面。
-  最终选取在unique_makes集合中存在的品牌
boolean_mask = []
for index, row in vehicles_non_hybrid_4.iterrows():
    make = row['make']
    boolean_mask.append(make in unique_makes)
df_common_makes = vehicles_non_hybrid_4[boolean_mask]
-  先将数据框data frame按year和make分组,然后计算各组的均值
df_common_makes_grouped = df_common_makes.groupby(['year', 'make']).agg(np.mean).reset_index()
-  最后利用ggplot提供的分屏图来显示结果
ggplot(aes(x='year', y='comb08'), data = df_common_makes_grouped) \
+ geom_line() + facet_wrap('make')
结果参见下图:
【注】:主要来源于Practical Data Science Cookbook

【Python】 利用汽车数据进行可视化分析相关推荐

  1. 【手把手教你】Python获取财经数据和可视化分析

    内容来自:微信公众号:python金融量化 关注可了解更多的金融与Python干货. "巧妇难为无米之炊",找不到数据,量化分析也就无从谈起.对于金融分析者来说,获取数据是量化分析 ...

  2. 汽车数据之可视化分析

    作者:Irain GitHub项目链接:https://github.com/Irain-LUO/Resume_Projects. 二手车之家数据之可视化分析 1 引用库.数据文件.清洗函数: 2 数 ...

  3. Python爬取天气数据及可视化分析!

    来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...

  4. Python爬取天气数据及可视化分析

    Python爬取天气数据及可视化分析 文章目录 Python爬取天气数据及可视化分析 说在前面 1.数据获取 请求网站链接 提取有用信息 保存csv文件 2.可视化分析 当天温度变化曲线图 当天相对湿 ...

  5. 【计算机专业毕设之基于python爬虫的汽车销量预测可视化分析系统-哔哩哔哩】 https://b23.tv/2gOjMVB

    [计算机专业毕设之基于python爬虫的汽车销量预测可视化分析系统-哔哩哔哩] https://b23.tv/2gOjMVB https://b23.tv/2gOjMVB

  6. Python爬虫-猫眼电影《冰雪奇缘2》评论数据的可视化分析

    [TPython爬虫-猫眼电影<冰雪奇缘2>评论数据的可视化分析 项目简介 爬虫,称为网页蜘蛛或网络机器人,用于自动获取互联网上的信息.我通过python爬虫来爬取猫眼电影的评论,对最新热 ...

  7. python3对拉勾数据进行可视化分析的方法详解

    这篇文章主要给大家介绍了关于python3对拉勾数据进行可视化分析的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 ...

  8. Python使用matplotlib进行3D可视化分析:3d柱状图、3d直方图、3d线框图、3d曲面图、3d翼面图(莫比乌斯环)

    Python使用matplotlib进行3D可视化分析:3d柱状图.3d直方图.3d线框图.3d曲面图.3d翼面图(莫比乌斯环) 目录

  9. 开源开放 | 图数据交互可视化分析框架 InteractiveGraph v0.3 版本发布

    图数据交互可视化分析框架 InteractiveGraph 日前发布 v0.3 版本,下载地址:https://github.com/grapheco/InteractiveGraph/release ...

最新文章

  1. String,StringBuffer
  2. java中的IO操作总结(一)
  3. 【从0到1学Web前端】javascript中的ajax对象(一)
  4. 上海市国资大数据课题启动仪式暨数据资产技术及金融行业应用沙龙隆重开幕...
  5. 来电通java版_我的世界基岩版1.19正式版下载-我的世界基岩版1.19下载手机版v1.19...
  6. html下拉选择框箭头改为年,CSS自定义select下拉选择框的样式(不用其他标签模拟)...
  7. golang sql注入问题
  8. 计算机桌面变成立体,win7系统将桌面变成立体桌面的两种方法介绍
  9. day16【前台】项目展示
  10. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
  11. 计算机实训大纲,计算机专业实训大纲
  12. 流式计算之Storm简介
  13. STL源码剖析(侯杰)——读书笔记
  14. 微信卡券管理 - 修改卡券基本信息
  15. 怎样清理苹果电脑磁盘空间_Mac空间不足怎么办,快速清理Mac系统垃圾与磁盘|Crucial(英睿达)...
  16. Ueditor详细配置说明文档
  17. 数据可视化之美-动态图绘制(以Python为工具)
  18. 全产业链落实循环减碳实践 宝马在华持续推进绿色转型
  19. time gmtime localtime strftime 时间函数
  20. C/C++ printf 输入16进制文本数据 多出许多ffffff的问题

热门文章

  1. 我收藏的罗永浩语录MP3(老罗语录)
  2. Centos7 ping不通百度
  3. QT使用QMediaPlayer + QVideoWidget播放视频文件
  4. 如何利用笔记本分享热点(不用软件)
  5. 如何用tensorflow board可视化训练过程的详细过程
  6. 软件工程期末展示材料——RUC自习助手
  7. 2020数字化转型“飞轮”上阵,华为云WeLink来了!
  8. 2021年数维杯数学建模C题运动会优化比赛模式探索求解全过程文档及程序
  9. npm、nrm两种方式查看源和切换镜像
  10. 通过串口给STM32单片机下载程序