原标题:用python对汽车油耗进行数据分析

- 从http://fueleconomy.gov/geg/epadata/vehicles.csv.zip

下载汽车油耗数据集并解压

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

- 输入命令

[python]view plaincopy

importpandas as pd

importnumpy as np

fromggplotimport*

importmatplotlib.pyplot as plt

%matplotlib inline

vehicles = 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')

结果参见下图:

责任编辑:

python计算汽车的平均油耗_用python对汽车油耗进行数据分析相关推荐

  1. python计算汽车的平均油耗_用python对汽车油耗进行数据分析(anaconda python3.6完全跑通)...

    原标题:用python对汽车油耗进行数据分析(anaconda python3.6完全跑通) 编者按:前两天我们微信发了一篇文章<用python对汽车油耗进行数据分析 >,有一网友学习后用 ...

  2. python计算相关性显著性p值_基于python实现计算两组数据P值

    我们在做A/B试验评估的时候需要借助p_value,这篇文章记录如何利用python计算两组数据的显著性. 一.代码# TTest.py # -*- coding: utf-8 -*- ''' # C ...

  3. python计算十年平均录取率_如何在Python中使用Pandas计算多年平均值

    首先,根据Pandas时间戳创建一个列:df = df.dropna() df['date'] = df.apply(lambda x: pd.Timestamp('{year}-{month}-{d ...

  4. 用python对汽车油耗进行数据分析(anaconda python3.6完全跑通)

    1.下载汽车油耗数据集并解压 下载地址:https://www.fueleconomy.gov/feg/download.shtml vehiclesData.py: #encoding = utf- ...

  5. 用python计算绩点的代码_使用Python计算研究生学分绩(绩点)

    最近看了CSDN上一个专栏< 具体过程专栏作者写得很清楚,详见 根据那篇博文,整个过程分为以下几步: 打开教务系统网站,查看登陆时发送了哪些信息,分析POST和GET信息,并在模拟登陆时使用: ...

  6. 用python计算绩点的代码_【Python】计算GPA

    最近开始我的研究生生涯了,周围都在谈论GPA这种高深的东西,像我这种工科学校背景的孩子一向是个喜欢在键盘上耕耘的人,对考高分没有多大兴趣(其实是没有那个本事).不过我也想知道我自己本科的GPA是多少来 ...

  7. python计算菜单消费总额字典_用Python中的字典来处理索引统计的方法

    最近折腾索引引擎以及数据统计方面的工作比较多, 与 Python 字典频繁打交道, 至此整理一份此方面 API 的用法与坑法备案. 索引引擎的基本工作原理便是倒排索引, 即将一个文档所包含的文字反过来 ...

  8. python计算平均值画折线图_【Python数据分析】一、matplotlib绘制折线图

    matplotlib是最流行的Python会图库,主要做数据可视化图表. 本节目标:学习绘制折线图(plt.plot) 设置图片的大小和分辨率(plt.figure) 实现图片的保存(plt.save ...

  9. 用python计算绩点的代码_重庆大学GPA计算python程序

    GPA计算方法来源于百度文库的方法,<重庆大学学分绩点计算办法(试行)> 运行环境:python 3.x 脚本源码: # 用于重庆大学GPA计算 # author: DYBOY input ...

  10. python圆的半径计算圆的周长列表_用python计算圆的周长

    Python编程题:输入圆半径,输出圆面积 R=eval(input("请输入圆的半径:")) pi=3.14 S=pi*R**2 print("圆的面积是:{}&quo ...

最新文章

  1. CssVariables_01
  2. WildFly上具有AngularJS的Java EE 7和Java WebSocket API(JSR 356)
  3. $JavaScript(3)
  4. 官网下载的mysql密码忘了怎么办_MySQL密码忘了怎么办?MySQL重置root密码方法
  5. 承接一个外包开发项目后,开发流程以及如何做好。
  6. Jquery 提交 乱码的问题
  7. 群晖做网页服务器_群晖NAS服务器管理后台的登入教程
  8. python 电力系统时域仿真_电力系统暂态计算_时域仿真方法
  9. mac安装telnet命令
  10. QTTabBar+Office Tab+Quicker 助力高效使用Windows办公
  11. 全加器,半加器公式推演
  12. 不同比例尺地形图上,典型地物的表示方法
  13. 腾讯云推出“版权音乐助手”让音乐版权使用“按量付费“
  14. RFM模型实现用户分层
  15. sprintf函数的详解及sprint与printf结合使用 —————— 开开开山怪
  16. tj大神的 co库.优雅的解决 nodejs callback无限嵌套(回调地狱)问题
  17. 图像标注的基础内容介绍
  18. cad零点坐标标注lisp_CAD_XY坐标标注AUTO_LISP程序
  19. 键盘 部分 按键 ~ 需要长按才能打出来
  20. 下载网站 favicon 图标的 3 种方法

热门文章

  1. shell 脚本初步,启动可执行 jar 文件
  2. 如何让fragment刷新界面_快速实现android版抖音主界面的心得
  3. 机器学习从入门到精通50讲(二)-千万级流量压力测试
  4. php生成txt文件_php 批量生成html,txt文件的实现代码
  5. java json写入内存_如何在客户端上减少JSON.stringify使用的内存量?
  6. php在苹果手机上传不了图片大小,ThinkPHP后台上传图片无默认尺寸解决方法
  7. 8、路由 router
  8. Markdown 进阶
  9. javascript中令人迷惑的this
  10. SSH登录太慢(等很久才提示输入密码)的问题