本节选取自行车的租赁数据,利用numpy、pandas、matplotlib三个库,数据清洗后,做数据分析,研究时间段与自行车租赁的关系。
数据来源
本节以自行车的租赁数据为例,数据来源于网络,利用时间序列分析的方法,通过可视化技术,分析自行车租赁随时间及天气变化的分布情况,其中datetime、season、holiday、workingday、weather、temp、atemp 、humidity、windspeed、casual 、registered、count字段分别代表租赁时间、季节、是否为假期、是否为工作日、天气数字越大,天气越差、temp atemp气温、湿度、风速、普通用户、注册用户、租赁自行车数量。
import numpy asimport pandas asimport matplotlib.pyplot as%matplotlib inline
bike = pd.read_csv(open(r'D:\python数据分析\数据\bike.csv'))bike.head()
问题探索
研究时间段与自行车租赁的关系情况。
数据清洗
bike.isnull().sum()
查看缺失值,无缺失值。
bike.dtypes
查看数据类型,datetime字段不是时间数据类型。
bike['datetime'] = pd.to_datetime(bike['datetime'])bike.dtypes
将to_datetime函数转换为datetime类数据。
bike = bike.set_index('datetime') #将datetime字段设置为DataFrame的索引,成为时间序列数据bike.head()
bike.index #索引
bike.tail()
数据探索
y_bike = bike.groupby(lambda x: x.year).mean() # 降采样年份数据y_bike['count']
y_bike['count'].plot(kind='bar') # 绘制柱状图
2012年的租赁数据多于2011年数据。
m_bike = bike.resample('M', kind='period').mean() # 重采样到月份,类型为时期类型
m_bike.head()
fig, axes = plt.subplots(2, 1) #两行一列m_bike['2011']['count'].plot(ax=axes[0],sharex=True) #贡献X轴m_bike['2012']['count'].plot(ax=axes[1])
2011年和2012年的趋势大致相同,前几个月逐渐增加,到5、6月份到达峰值,再到9月份后逐渐减少。
bike['day'] = bike.index.daybike['hour'] = bike.index.hour # 单独存储日和时的数据
bike.head()
d_bike = bike.groupby('day')['count'].mean() #对day字段分组统计
d_bike
d_bike.plot() # 自行车每日租赁数分布
h_bike = bike.groupby('hour')['count'].mean() #对hour字段分组统计
h_bike
h_bike.plot() # 自行车每小时租赁数分布
图中有明显的两个峰值,都是上下班时间段,并且晚上的峰值更高。
work_bike = bike.groupby('workingday')['count'].mean()
work_bike #对workingday字段分组统计
work_bike.plot(kind='bar')
天气越差,自行车租赁数越少。
weather_bike = bike.groupby('weather')['count'].mean()
weather_bike #对weather字段分组统计
weather_bike.plot(kind='bar')
天气越差,自行车租赁数越少,但在极端天气情况下却略有上升。
标签:数据分析,实战,plot,Python,count,datetime,字段,bike,租赁 From: https://blog.51cto.com/u_15828536/5757010