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() # 看一看数据哈~

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第1张图片

配置参数

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

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第2张图片

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

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第3张图片

分布分析

  • distplot
  • jointplot
daily_data.head()

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第4张图片

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')
# 要是发现有的图形显示不全,就先画那个显示不全的图形在画布上

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第5张图片

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

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第6张图片
pearsonr相关系数比想象得高哦~

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

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第7张图片
画了二维的kde后,可以看到人的行为模式都会固定在上面的圈圈中,有助于帮助我们找到其中究竟有怎样的共同点。

组间分析

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

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第8张图片
提琴图看其中的分布,可以看到每天预约租车的都基本是正态分布。

  • 提琴图的说明:

    • 白色点是中位数,很粗的线可以看出来箱图的上下边界,猫须就是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

Python数据可视化 | 9、基于Seaborn的真实数据上的可视化分析_第9张图片
非预约租车的每天差不多都有指数衰减的趋势, 尤其是工作日。
源码获取:关注微信公众号“AI阅读知识图谱”,回复“Python数据可视化”获取已更新内容全部代码。

你可能感兴趣的:(人工智能,python)