seaborn数据可视化案例分析—共享单车

目录

 一、Seaborn介绍

二、数据介绍

三、数据分析

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


 一、Seaborn介绍

        Seaborn是基于matplotlib开发的高阶Python数据可视图库,用于绘制更精致、美观的图形,其绘图逻辑与matplotlib基本一致,但呈现效果比matplotlib要清晰美观。常见的图表有散点图、折线图、柱状图等。

        本文以共享单车数据为例,介绍的Seaborn中的柱状图、散点图以及pandas对数据的相关处理方式,用柱状图、散点图实现对共享单车数据的可视化分析。

本文共享单车数据可在积分资源中获取。下载链接:https://download.csdn.net/download/m0_52051577/87794022?spm=1001.2014.3001.5503


二、数据介绍

        本文选取的数据为共享单车2011-2012年的数据,数据属性包括datetime(日期)、season(季度)、holiday(节日)、workingday(工作日)、weather(天气)、temp(温度)、atemp(体感温度)、humidity(湿度)、windspeed(风速)、casual(发起的非注册用户租赁数量)、registered(已注册用户租赁的数量)、count(总租车人数)。

三、数据分析

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

(1)实现流程如下:

(2) 涉及到的seaborn相关函数:

sns.barplot(x,y,data,hue,palette)函数:其中x,y表示dataframe中的列名,其中data表示数据表或数组。hue表示分类的依据,palette表示色调的设置。

(3)实现步骤

导入数据:

##导入数据并预览
import pandas as pd
data=pd.read_csv(r"D://jupyter_data/bike_train.csv")
data

 提取数据目标列:season,count,datetime列。将datetime列切分处理。

##提取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

将原数据表中的日期列进一步划分为年月日之后,将日一列切分出时间戳,并对时间戳进一步切分,切分出小时。

#提取年
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=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=data_2011,x='temp',y='windspeed',hue='count')
plt.tight_layout()
plt.show()

从散点图可看出,租车人数集中在气温为20-35、风度为10-40的区间段中。

 绘制气温与湿度的散点图:

sns.scatterplot(data=data_2011,x='temp',y='humidity',hue='count')
plt.tight_layout()
plt.show()

 从散点图可看出,租车人数集中在气温为20-35、湿度为20-80的区间段中。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
共享单车数据可视化是通过使用各种数据可视化技术,将共享单车的相关数据转化为易于理解和分析可视化图形或图表的过程。 共享单车数据可视化可以帮助我们更好地了解和理解共享单车的使用情况,以及相关的趋势和模式。通过可视化,我们可以直观地看到每个城市的共享单车使用情况,以及不同时间段和区域的使用量、热点等信息。 在共享单车数据可视化中,我们可以使用地图来展示不同地区的共享单车使用情况,其中不同颜色的标记可以表示不同的使用量。同时,我们也可以使用折线图来展示不同时间段内的使用情况,以及对比不同城市的使用量。 此外,共享单车数据可视化还可以帮助我们分析共享单车的用户特征和习惯。例如,我们可以使用柱状图来展示不同年龄段的用户比例,以及使用共享单车的主要原因。这些数据可以帮助共享单车企业更好地了解用户需求,以便进行相应的运营和改进。 共享单车数据可视化对于政府和城市规划者也具有重要意义。他们可以通过分析可视化数据,了解城市不同区域的共享单车需求和流量情况,并据此进行道路规划和交通管理的调整。 总而言之,共享单车数据可视化是一种利用数据可视化技术来呈现共享单车相关数据的方法,可以帮助我们更好地了解共享单车的使用情况和用户特征,为企业和政府决策提供参考和支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那个叫马尔的大夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值