# 用python对汽车油耗进行数据分析

- 进入jupyter notebook（ipython notebook）并新建一个New Notebook

- 输入命令

[python] view plain copy

1. import pandas as pd
2. import numpy as np
3. from ggplot import *
4. import matplotlib.pyplot as plt
5. %matplotlib inline
6. vehicles = pd.read_csv("vehicles.csv")

# 描述汽车油耗等数据

- 查看有多少观测点（行）和多少变量（列）

- 查看年份信息

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

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

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

- 最终选取在unique_makes集合中存在的品牌

boolean_mask = [] for index, row in vehicles_non_hybrid_4.iterrows(): make = row['make'] boolean_mask.append(make in unique_makes)

- 先将数据框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')

822 篇文章226 人订阅

0 条评论

## 相关文章

53660

### 用python对汽车油耗进行数据分析

- 从http://fueleconomy.gov/geg/epadata/vehicles.csv.zip 下载汽车油耗数据集并解压 - 进入jupyte...

48780

39220

22140

9310

30580

### 【工具】用R软件绘制中国分省市地图

【注】新版本的maptools包对很多函数进行了修改，对于修改的内容，文章中用红色的文字进行了说明。 鉴于最近有不少人在讨论用R软件绘制地图的问题，我也就跟着凑...

51790

83020

### SSE图像算法优化系列二：高斯模糊算法的全面优化过程分享（二）。

相关链接： 高斯模糊算法的全面优化过程分享（一）      在高斯模糊算法的全面优化过程分享（一）一文中我们已经给出了一种相当高性能的高斯模糊过程，...

45360

51960