Análisis de caso de visualización de datos Seaborn - bicicleta compartida

Tabla de contenido

 1. Introducción a Seaborn

2. Introducción de datos

3. Análisis de datos

Estadísticas sobre el número de usuarios de bicicletas compartidas en el primer trimestre de 2011 y 2012


 1. Introducción a Seaborn

        Seaborn es una biblioteca de visualización de datos de Python de alto nivel desarrollada en base a matplotlib. Se utiliza para dibujar gráficos más refinados y hermosos. Su lógica de dibujo es básicamente la misma que la de matplotlib, pero el efecto de representación es más claro y hermoso que matplotlib. Los gráficos comunes incluyen diagramas de dispersión, gráficos de líneas, histogramas, etc.

        Este artículo toma como ejemplo los datos de bicicletas compartidas, presenta el histograma, el diagrama de dispersión en Seaborn y los métodos de procesamiento de datos relacionados con pandas, y utiliza el histograma y el diagrama de dispersión para realizar el análisis visual de los datos de bicicletas compartidas.

Los datos de bicicletas compartidos en este artículo se pueden obtener en el recurso de puntos. Enlace de descarga: https://download.csdn.net/download/m0_52051577/87794022?spm=1001.2014.3001.5503


2. Introducción de datos

        Los datos seleccionados en este documento son los datos de bicicletas compartidas de 2011 a 2012. Los atributos de los datos incluyen fecha y hora (fecha), temporada (trimestre), feriado (día festivo), día laborable (día laborable), clima (clima), temp (temperatura). ), atemp (temperatura corporal), humedad (humedad), windspeed (velocidad del viento), casual (número de alquileres de usuarios no registrados iniciados), registrado (número de alquileres de usuarios registrados), count (número total de alquileres de automóviles).

3. Análisis de datos

Estadísticas sobre el número de usuarios de bicicletas compartidas en el primer trimestre de 2011 y 2012

(1) El proceso de implementación es el siguiente:

(2) Funciones relacionadas con Seaborn involucradas:

Función sns.barplot(x,y,data,hue,palette): donde x,y representan los nombres de columna en el marco de datos, donde data representa la tabla o matriz de datos. El matiz indica la base de la clasificación y la paleta indica la configuración del matiz.

(3) Pasos de implementación

Datos de importacion:

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

 Extraer columnas de destino de datos: temporada, conteo, columnas de fecha y hora. Segmente la columna de fecha y hora.

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

 Extraiga los datos de 2011 y 2012 respectivamente, y tome las primeras tres columnas de datos, y cuente el número de alquileres de automóviles correspondientes a cada trimestre por trimestre.

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

 Combinar datos

s_count1=pd.concat([s_count_st,s_count_st2],axis=0)
s_count1

 

Estadísticas sobre el número de alquileres de coches en cada mes de 2011 y 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

Después de que la columna de fecha en la tabla de datos original se divida en año, mes y día, la columna de día se divide en marcas de tiempo y la marca de tiempo se divide en horas.

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

 Datos de 2011 y 2012:

#分别筛选出2011、2012的数据
data_2011=data2.loc[data2['year']=='2011']
data_2012=data2.loc[data2['year']=='2012']

Visualización gráfica (diagrama de conglomerados):

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

 Se puede ver en el histograma que en cada trimestre, el número de alquileres de coches en 2012 es mayor que en 2011, y el número de alquileres de coches en verano y otoño es mayor que en invierno puro.

 Trace un diagrama de dispersión de la temperatura del aire frente al viento:

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

Se puede ver en el diagrama de dispersión que el número de personas que alquilan un automóvil se concentra en el rango donde la temperatura es 20-35 y el viento es 10-40.

 Dibuje un diagrama de dispersión de temperatura y humedad:

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

 Se puede ver en el gráfico de dispersión que el número de coches de alquiler se concentra en el intervalo entre la temperatura de 20-35 y la humedad de 20-80.

Supongo que te gusta

Origin blog.csdn.net/m0_52051577/article/details/130735989
Recomendado
Clasificación