统计2011、2012年个季度使用共享单车用户量

目录
一、介绍
二、数据介绍
三、数据分析
统计2011、2012年个季度使用共享单车用户量
一、介绍
是基于开发的高阶数据可视图库,用于绘制更精致、美观的图形,其绘图逻辑与基本一致,但呈现效果比要清晰美观 。常见的图表有散点图、折线图、柱状图等 。
本文以共享单车数据为例,介绍的中的柱状图、散点图以及对数据的相关处理方式 , 用柱状图、散点图实现对共享单车数据的可视化分析 。
本文共享单车数据可在积分资源中获取 。下载链接:
二、数据介绍
本文选取的数据为共享单车2011-2012年的数据,数据属性包括(日期)、(季度)、(节日)、(工作日)、(天气)、temp(温度)、atemp(体感温度)、(湿度)、(风速)、(发起的非注册用户租赁数量)、(已注册用户租赁的数量)、count(总租车人数) 。
三、数据分析 统计2011、2012年个季度使用共享单车用户量
(1)实现流程如下:
(2) 涉及到的相关函数:
sns.(x,y,data,hue,)函数:其中x,y表示中的列名,其中data表示数据表或数组 。hue表示分类的依据 , 表示色调的设置 。
(3)实现步骤
导入数据:
##导入数据并预览import pandas as pddata=http://www.kingceram.com/post/pd.read_csv(r"D://jupyter_data/bike_train.csv")data
提取数据目标列:,count,列 。将列切分处理 。
##提取datetime列并以'-'为分隔符进行切分,将日期分为年、月、日data1=data[['season','count','datetime']]year=data1['datetime'].str.split('-',expand=True)[0]month=data1['datetime'].str.split('-',expand=True)[1]day1=data1['datetime'].str.split('-',expand=True)[2]data1.insert(2,'year',year)data1.insert(3,'month',month)data1.insert(4,'day',day1)data1
分别提取2011、2012的数据,并取前三列数据,按季度统计每个季度对应的租车人数 。
data1_2011=data1[data1['year']=='2011'].iloc[:,0:3]data1_2012=data1[data1['year']=='2012'].iloc[:,0:3]group1=data1_2011.groupby('season').agg({'count':'sum'})group2=data1_2012.groupby('season').agg({'count':'sum'})
# 表格转置并重置索引,重设列名group1.columns=['2011']s_count_st=pd.DataFrame(group1.stack(),columns=['count'])s_count_st=s_count_st.reset_index()s_count_st.columns=['season','year','count']mid=s_count_st['year']s_count_st.pop('year')s_count_st.insert(2,'year',mid)s_count_st
合并数据
s_count1=pd.concat([s_count_st,s_count_st2],axis=0)s_count1
分别统计2011、2012每个月份的租车人数
month1_2011=data1[data1['year']=='2011'].iloc[:,[0,1,3]]#提取出季度、租车人数、月份三列m_count2011=month1_2011.groupby('month').agg({'count':'sum'})#按月份分组,统计每个月的租车人数m_count2011.columns=['2011']m_count_st=pd.DataFrame(m_count2011.stack(),columns=['count'])#重置索引m_count_st=m_count_st.reset_index()m_count_st.columns=['month','year','count']midpro=m_count_st['year']m_count_st.pop('year')m_count_st.insert(2,'year',midpro)m_count_st
month1_2012=data1[data1['year']=='2012'].iloc[:,[0,1,3]]m_count2012=month1_2012.groupby('month').agg({'count':'sum'})m_count2012.columns=['2012']m_count_st1=pd.DataFrame(m_count2012.stack(),columns=['count'])m_count_st1=m_count_st1.reset_index()m_count_st1.columns=['month','year','count']midpro1=m_count_st1['year']m_count_st1.pop('year')m_count_st1.insert(2,'year',midpro1)m_count_st1

统计2011、2012年个季度使用共享单车用户量

文章插图
将原数据表中的日期列进一步划分为年月日之后 , 将日一列切分出时间戳,并对时间戳进一步切分 , 切分出小时 。
#提取年year=data['datetime'].str.split('-',expand=True)[0]#提取月month=data['datetime'].str.split('-',expand=True)[1]#提取日+时间day1=data['datetime'].str.split('-',expand=True)[2]#提取日day=day1.str.split(' ',expand=True)[0]#提取年月日date=data['datetime'].str.split(' ',expand=True)[0]#提取时间timestamp=data['datetime'].str.split(' ',expand=True)[1]#提取小时hour=timestamp.str.split(':',expand=True)[0]data2=data.drop(['datetime'],axis=1)data2.insert(11,'date',date)data2.insert(12,'timestamp',timestamp)data2.insert(13,'year',year)data2.insert(14,'month',month)data2.insert(15,'day',day)data2.insert(16,'hour',hour)data2
2011、2012年数据:
#分别筛选出2011、2012的数据data_2011=data2.loc[data2['year']=='2011']data_2012=data2.loc[data2['year']=='2012']
作图展示(簇状图):
plt.figure(figsize=[10,6])sns.barplot(data=http://www.kingceram.com/post/s_count1,x='season',y='count',hue='year',palette='Set2')plt.xticks(ticks=range(4),labels=['spring','summer','autumn','winter'])plt.tight_layout()plt.show()
从柱状图中可看出,各个季度来看,2012年租车人数比2011年租车人数要多,且租车人数夏秋季比纯冬季要多 。
绘制气温与风度的散点图:
sns.scatterplot(data=http://www.kingceram.com/post/data_2011,x='temp',y='windspeed',hue='count')plt.tight_layout()plt.show()
从散点图可看出,租车人数集中在气温为20-35、风度为10-40的区间段中 。
绘制气温与湿度的散点图:
sns.scatterplot(data=http://www.kingceram.com/post/data_2011,x='temp',y='humidity',hue='count')plt.tight_layout()plt.show()
【统计2011、2012年个季度使用共享单车用户量】从散点图可看出,租车人数集中在气温为20-35、湿度为20-80的区间段中 。