Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析

确认数据

import pandas as pd # 读取数据到DataFrame
from scipy import stats, integrate
from warnings import filterwarnings
filterwarnings('ignore')
import urllib # 获取网络数据
import tempfile # 创建临时文件系统
import shutil # 文件操作
import zipfile # 压缩解压

temp_dir = tempfile.mkdtemp() # 建立临时目录
data_source = 'http://archive.ics.uci.edu/ml/machine-learning-databases/00275/Bike-Sharing-Dataset.zip' # 网络数据地址
zipname = temp_dir + '/Bike-Sharing-Dataset.zip' # 拼接文件和路径
try:
    urllib.urlretrieve(data_source, zipname) # 获得数据
except:
    urllib.request.urlretrieve(data_source, zipname) # 获得数据

zip_ref = zipfile.ZipFile(zipname, 'r') # 创建一个ZipFile对象处理压缩文件
zip_ref.extractall(temp_dir) # 解压
zip_ref.close()

daily_path = temp_dir + '/day.csv'
daily_data = pd.read_csv(daily_path) # 读取csv文件
daily_data['dteday'] = pd.to_datetime(daily_data['dteday']) # 把字符串数据传换成日期数据
drop_list = ['instant', 'season', 'yr', 'mnth', 'holiday', 'workingday', 'weathersit', 'atemp', 'hum'] # 不关注的列
daily_data.drop(drop_list, inplace = True, axis = 1) # inplace=true在对象上直接操作

shutil.rmtree(temp_dir) # 删除临时文件目录

daily_data.head() # 看一看数据哈~

在这里插入图片描述

配置参数

%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("white")

关联分析

  • lmplot
g = sns.lmplot(x="temp", y="cnt", data=daily_data)

在这里插入图片描述

g = sns.lmplot(x="temp", y="cnt", data=daily_data)
g.fig.set_size_inches(14, 7)# 设置尺寸等可用matplotlib里的函数即可
g.set_axis_labels('Normalized temperature (C)', 'Check outs')

在这里插入图片描述

分布分析

  • distplot
  • jointplot
daily_data.head()

在这里插入图片描述

sns.distplot(daily_data["casual"],label = 'casual')# 红色类似指数衰减
sns.distplot(daily_data["cnt"], label = 'cnt')# 绿色
sns.distplot(daily_data["registered"], label = 'registered')# 蓝色类似正态分布
plt.legend()
plt.xlabel('Value')
# 要是发现有的图形显示不全,就先画那个显示不全的图形在画布上

在这里插入图片描述

sns.jointplot(data=daily_data, x="registered", y="casual", kind="hex").annotate(stats.pearsonr)

在这里插入图片描述
pearsonr相关系数比想象得高哦~

sns.jointplot(data=daily_data, x="registered", y="casual", kind="kde")

在这里插入图片描述
画了二维的kde后,可以看到人的行为模式都会固定在上面的圈圈中,有助于帮助我们找到其中究竟有怎样的共同点。

组间分析

# sns.boxplot(data=daily_data, x="weekday", y="registered")
sns.violinplot(data=daily_data, x="weekday", y="registered", scale="count")

在这里插入图片描述
提琴图看其中的分布,可以看到每天预约租车的都基本是正态分布。

  • 提琴图的说明:

    • 白色点是中位数,很粗的线可以看出来箱图的上下边界,猫须就是1.5倍的四分卫截距。
# sns.boxplot(data=daily_data, x="weekday", y="casual")
sns.violinplot(data=daily_data, x="weekday", y="casual", scale="count") 
# count, area, width

在这里插入图片描述
非预约租车的每天差不多都有指数衰减的趋势, 尤其是工作日。
源码获取:关注微信公众号“AI阅读知识图谱”,回复“Python数据可视化”获取已更新内容全部代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值