用 seaborn 绘制数据分布统计图

数据文件为 Libreoffice 编制的 ods 类型,为了能直接读取 ods 文件生成 dataframe 格式数据,安装 pandas_ods_reader 包。 1 pip install pandas_ods_reader 然后导入相关库,读取数据。 1 2 3 4 5 6 7 import seaborn as sns import pandas as pd from pandas_ods_reader import read_ods %matplotlib inline ffftime = read_ods('dataset.ods', 1) 1 2 3 # 挑取目标列数据 thedata = ffftime.loc[ffftime['人种']=='黄', ['连续输出1']] print(len(thedata)) 195 目标列中一共有 195 个待分析数据。对这些数据绘制直方图,查看各数据段内的分布占比,图中柱宽为 2。 1 2 3 4 5 6 7 8 9 # 绘制密度分布图 rc = {'axes.unicode_minus': False} sns.set(context='notebook', style='ticks', font='simhei', rc=rc) ax = sns.histplot(data=thedata, x='连续输出1', binwidth=2, stat='proportion') x = range(0, 50, 5) ax.set_xticks(x) ax.set_ylabel("占比", fontsize=14) ax.set_xlabel("连续输出时间/min", fontsize=14) ax.set_title('连续输出时间样本统计', fontsize=14) 从占比直方图可以看出,5~7min 为占比最多区间,大约的18.5%样本落在此区间。 ...

2022年11月21日 · 2 分钟 · tsingk

设置 seaborn 绘图中的字体及字体大小

1 设置 seaborn 绘图中的字体 Seaborn 基于 Matplotlib,Matplotlib 基于 Python,Python 运行于电脑系统中。 因此,要在 Seaborn 中使用某款字体,该字体要满足以下条件: 字体已安装在系统中; Python 能检索到此字体; Matplotlib 字体缓存中能检索到此字体; 绘图时在 Seaborn 中设置使用该字体。 1.1 在电脑上安装字体 以「文泉驿微米黑」字体为例,下载到的字体安装包为「文泉驿微米黑.ttf」,双击会自动打开系统自带的字体管理器,点击安装既可。 ...

2021年11月24日 · 5 分钟 · tsingk

用 seaborn 绘图,分析西北七市潮湿度变化

年初写了篇文章《2020 年,西安气温变舒适了》,通过对过去几年平均月度气温的分析,可看出: 2020 年西安确实变温暖了,但夏天却比其他年份要稍微凉快点。 根据生活体验,除了气温,感觉近几年也越来越潮湿。年中网上有篇文章,标题大意是「西北地区正变得湿热,西安恐成最大赢家」,这说法相当惊艳。反正找数据,顺带找来西北七个市区的,一同分析下是不是这样。 气相数据集来自一款软件「小麦芽」,内容为各地气象站逐年数据,分别是:泾河站(西安)、榆中站(兰州)、银川站、酒泉站、西宁站、格尔木站、乌鲁木齐站。有五个气象站位于西北五省省会,甘肃和青海因为地域太广袤,各选了距离一千多公里的两个气相站。数据集中与潮湿有关的参数有四个:年降水量、年降水天数、露点温度、单日最大降水量。 ...

2021年11月16日 · 8 分钟 · tsingk

学习 seaborn [07]: 绘制累积条形图

使用 seaborn 绘制累积条形图 最近想看下某地区近几年降雨量如何变化,获得的数据是分年分月的,打算绘制按年份累积每月降雨量的条形图。搜索教程,主要有以下几种方法。 方法1:使用 seaborn 的 barplot() 函数,在 x 相同位置,分别绘制112月累积量、111月累积量、1~10月累积量,以此类推直至1月降雨量。每次绘制使用颜色不同,后绘制的相当于把前绘制的条状遮住一部分。需要调用12次 barplot() 函数。参考文章点这里 方法2:使用 matplotlib 的 bar() 函数,按年分别绘制每月的降雨量条形图,通过参数bottom指定所绘制的月份条形图下方是哪个月的条形图,相当于一层一层的柱子码起来。需要调用12次 bar() 函数。参考文章点这里 方法3:使用 seaborn 的 histplot() 函数,设置 multiple 参数为 stack,weights 参数为需要累积的量,既可绘制累积条形图。只需条用1次 histplot() 函数。参考文章点这里。这篇文章另外还介绍了如何使用 matplotlib、pandas、plotnine、altair 绘制累积条形图。 前两种方法太繁琐,采用第3种方法。搜相关教程有个感悟,要想快速准确找到资料,搜英文文章,或者直接在 seaborn 官方教程找。 ...

2021年11月8日 · 3 分钟 · tsingk

学习 seaborn [06]: 设置中文显示

2020年12月16日 · 0 分钟 · tsingk

学习 seaborn [05]: 调色板

title: 学习 seaborn [05]: 调色板 slug: color-seaborn date: 2020-12-14 tags: seaborn python category: 数据分析 link: description: type: text 选择调色板 调色板是一组颜色搭配方案,绘图时候程序从中选取颜色进行数据可视化。调色板中颜色之间的色相、饱和度、明度等差异,区别出不同系列的数据关系,因此调色板比其他元素更加影响绘图的视觉效果。 seaborn提供了一些现成的配色方案,也可以利用其提供的函数自定义调色板。 调色板分类 定性调色板:一组在视觉上有差异的颜色,用于区分不具有内在顺序的离散数据; 顺序调色板:一组视觉温度递增或递减的颜色,一般是单一色相,也可以是多种色相,用于当数据集的范围从相对低值(不感兴趣)到相对高值(很感兴趣)时; 发散调色板:一组颜色的中间位置颜色的视觉温度最亮或最暗,然后分别向两端递增或递减,用于当数据集的低值和高值都很重要,且数据集中有明确定义的中点时。 生成调色板的函数 可生成三种调色板的函数 color_palette():生成调色盘,接受所有的seaborn调色板或者matplotlib Colormap或者Color Brewer库的配色方案,返回RGB元组的列表; set_palette():接受与color_palette()相同参数,设置所有图像的默认配色方案; xkcd_rgb():使用xkcd颜色名字设置单一颜色; xkcd_palette():使用xkcd颜色名字生成调色板,适用于各种调色板; choose_colorbrewer_palette():通过交互式组件辅助进行Color Brewer库的配色方案选择,适用于各种调色板,只能在Jupyter Notebook中使用; 用于生成定性调色板的函数 hls_palette():使用hls颜色空间生成间距相等的颜色(色调变化,明度和饱和度不变),适用于定性调色板; husl_palette():使用HSLuv颜色空间生成间距相等的颜色,比上述hls更符合人眼视觉感受,适用于定性调色板; 用于生成顺序调色板的函数 cubehelix_palette():使用cubehelix调色板系统生成配色方案,适合黑白打印,且对色盲友好,适用于顺序调色板; choose_cubehelix_palette():通过交互式组件辅助进行cubehelix调色板的配色方案选择,只能在Jupyter Notebook中使用; light_palette()和dark_palette():指定一个颜色,会由明向暗或由暗向明生成一组颜色,适用于顺序调色板; 用于生成发散调色板的函数 diverging_palette():用来创建发散调色板; choose_diverging_palette():通过交互式组件辅助进行发散调色板的配色方案选择,使用HSLuv颜色空间,只能在Jupyter Notebook中使用; 生成调色板的方式 seaborn中生成调色板的方式大致有三种: ...

2020年12月14日 · 4 分钟 · tsingk

学习 seaborn [04]: 修改样式、移动座标轴

title: 学习 seaborn [04]: 修改样式、移动座标轴 slug: beautify-seaborn date: 2020-12-11 16:23:05 tags: seaborn python category: 数据分析 link: description: type: text 控制图像的美学样式 相比与matplotlib详细的样式设置,seaborn提供了成套的样式主题可供直接使用,同时提供高级设置接口供用户自定义主题。 以装修房子比喻,用matplotlib就像全部考自己装修,窗台、地砖、墙壁等细节都要自己考虑,费时费力但高度可定制化。而用seaborn相当于从装修公司已设计好的装修方案中挑选一个,然后还能在此基础进行部分的修改定制。 ...

2020年12月11日 · 4 分钟 · tsingk

学习 seaborn [03]: 线性回归图

title: 学习 seaborn [03]: 线性回归图 slug: lmplot date: 2020-12-9 tags: seaborn python category: 数据分析 link: description: type: text 线性关系可视化 此线性可视化并非统计关系中的折线图,而是excel做图中的趋势线概念,对x、y关系进行线性拟合得到关系式,对关系式的绘图。 seaborn的线性可视化不直接提供拟合关系式的各具体参数,只绘制出趋势线和置信区间,从而引导和帮助进行数据关系探索。 主要用到两个函数: lmplot():FacetGrid级函数,可绘制多子图;将data作为必须参数,x和y变量必须被指定为字符串。 regplot():轴级函数。x和y可以是简单的 numpy 数组,pandas Series对象,或者作为对传递给data的 pandas DataFrame对象。 1 2 3 4 5 6 7 8 import seaborn as sns import pandas as pd import numpy as np %matplotlib inline sns.set() tips = pd.read_csv('seaborn-data-master/tips.csv') display(tips) total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 ... ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 240 27.18 2.00 Female Yes Sat Dinner 2 241 22.67 2.00 Male Yes Sat Dinner 2 242 17.82 1.75 Male No Sat Dinner 2 243 18.78 3.00 Female No Thur Dinner 2 244 rows × 7 columns ...

2020年12月9日 · 3 分钟 · tsingk

学习 seaborn [02]: 条形图、线箱图 & 分类散点图

可视化分类数据 可视化分类数据的统一FacetGrid图级接口为catplot()函数,通过kind参数,可以选择轴级函数有: 分类散点图: stripplot() (with kind=“strip”; the default) swarmplot() (with kind=“swarm”) 分类分布图: boxplot() (with kind=“box”) violinplot() (with kind=“violin”) boxenplot() (with kind=“boxen”) 分类估计图: pointplot() (with kind=“point”) barplot() (with kind=“bar”) countplot() (with kind=“count”) 条形图 绘制两种不同的条形图: barplot() 或 catplot(kind=‘bar’):x为分类,y为该分类下的数据的估计值;需要给x、y赋值。 countplot() 或 catplot(kind=‘count’):x为分类,y为该分类下的数据的数量;只需给x赋值。 两种图形的其他参数使用方法一致。 ...

2020年12月3日 · 2 分钟 · tsingk

学习 seaborn [01]: 散点图 & 线型图

title: 学习 seaborn [01]: 散点图 & 线型图 slug: seaborn-scatter-line date: 2020-11-30 tags: seaborn python category: 数据分析 link: description: type: text 可视化统计关系 表示统计关系的图分为散点图和线型图两类。统一的FacetGrid图级接口函数为relplot()。 散点图 1 2 3 4 5 6 7 8 9 10 import seaborn as sns import pandas as pd %matplotlib inline # seaborn预设主题:darkgrid(默认),whitegrid,dark,white 以及 ticks sns.set() # 导入数据集。由于sns.load_dataset连接不上服务器,使用pandas导入本地下载的数据集 tips = pd.read_csv('seaborn-data-master/tips.csv') display(tips) total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 ... ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 240 27.18 2.00 Female Yes Sat Dinner 2 241 22.67 2.00 Male Yes Sat Dinner 2 242 17.82 1.75 Male No Sat Dinner 2 243 18.78 3.00 Female No Thur Dinner 2 244 rows × 7 columns ...

2020年11月30日 · 3 分钟 · tsingk