第二十五天-Seaborn数据可视化库

目录

1.介绍

2.使用

1.seaborn官网:

2.安装

3.基础用法

4.导入数据

5.分析基金数据

1.绘制每个月收盘价的趋势线

2.计算涨跌幅

3.设置统计基点

4.分布图:分析涨跌幅数量

5.箱型图

6.回归图

7.热力图


1.介绍

1.与matplotlib区别

2.基于matplotlib进行开发的,更高效更高阶的绘制图表

2.使用

1.seaborn官网:

seaborn: statistical data visualization — seaborn 0.13.2 documentation

2.安装

pip install seaborn

3.基础用法

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as sns# 模拟数据,50行4列
sample = pd.DataFrame(np.random.random(200).reshape(50, 4), columns=["a", "b", "c", "d"])
#设置全局样式样式 sxtyle:背景颜色
sns.set(sxtyle="dark")#直接赋值
sns.scatterplot(data=sample)plt.show()

4.导入数据

1. 模拟数据 seaborn中默认自带的可测试数据集

# 模拟数据 seaborn中默认自带的可测试数据集
names=sns.get_dataset_names()
print(names)

['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds', 'dots', 'dowjones', 'exercise', 'flights', 'fmri', 'geyser', 'glue', 'healthexp', 'iris', 'mpg', 'penguins', 'planets', 'seaice', 'taxis', 'tips', 'titanic']

  1. anscombe:Anscombe 的四重奏数据集,包含四个具有相同统计属性的数据集,但它们的图形表示截然不同。
  2. attention:一个关于注意力缺陷/多动障碍(ADHD)的研究数据集,包含年龄、性别、智商和注意力得分等信息。
  3. car_crashes:关于汽车碰撞的数据集,包括天气、道路条件、速度等因素。
  4. diamonds:钻石价格数据集,包含钻石的多个属性(如重量、颜色、清晰度等)和价格。
  5. dots:一个简单的二维点数据集,用于演示散点图。
  6. flares:关于太阳耀斑的数据集,包含时间、位置、大小等信息。
  7. flights:关于航班延误的数据集,包括起飞和到达时间、延误时间等。
  8. fmri:功能性磁共振成像数据集,用于神经科学研究。
  9. games:一个关于视频游戏的数据集,包含游戏类型、评分、发行年份等信息。
  10. iris:鸢尾花数据集,包含三种鸢尾花的各种测量数据,常用于分类算法演示。
  11. line_tips:一个关于餐厅小费的数据集,包括账单金额、就餐人数、小费金额等。
  12. load_dataset:这不是一个数据集,而是一个函数,用于加载 Seaborn 提供的多个数据集。
  13. penguins:企鹅数据集,包含企鹅的多种测量数据,如体型、喙长等。
  14. planets:关于太阳系行星的数据集,包括质量、轨道周期等属性。
  15. tips:与 line_tips 类似,但可能包含不同的变量或格式。
  16. titanic:泰坦尼克号相关数据

2.分析泰坦尼克号数据

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as sns# 模拟数据 seaborn中默认自带的可测试数据集
names = sns.get_dataset_names()sample = sns.load_dataset("titanic")
print(sample.columns)
#绘制散点图:
# x:为船票价格fare,
# y:年龄age;
# hue:进行类别数据拆分,如是否存活:survived
# style:区分类别数据,如男女
sns.scatterplot(data=sample,x=sample["fare"],y="age",hue="survived",style="sex")plt.show()

5.分析基金数据

1.绘制每个月收盘价的趋势线

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)#调整index日期为日期类型
sample.index=pd.to_datetime(sample.index)
#调整日期频率:日>月,数据为每个月第一天的数据
bymonth=sample.resample("M").first()#绘制每个月收盘价的趋势线
sns.lineplot(bymonth)plt.show()

2.计算涨跌幅

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)# 调整index日期为日期类型
sample.index = pd.to_datetime(sample.index)
# 调整日期频率:日>月,数据为每个月第一天的数据
bymonth = sample.resample("M").first()
# 绘制每个月收盘价的趋势线
#sns.lineplot(bymonth)# 方式一 计算涨跌幅
# 收益率(涨跌幅)=(期末值-期初值)/期末值
# bymonth.shift(1) 获取上一条数据
#byrate = (bymonth - bymonth.shift(1)) / bymonth.shift(1)#方式二
byrate = bymonth.pct_change()
print("byrate:",byrate)
#绘制涨跌幅
sns.lineplot(byrate)plt.show()

3.设置统计基点

1. 由于4只基金基点不一致,所以涨跌幅看起来不清晰,如果设置统计基点就可以明显看出来;

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)# 调整index日期为日期类型
sample.index = pd.to_datetime(sample.index)
# 调整日期频率:日>月,数据为每个月第一天的数据
bymonth = sample.resample("M").first()
# 绘制每个月收盘价的趋势线
#sns.lineplot(bymonth)# 方式一 计算涨跌幅
# 收益率(涨跌幅)=(期末值-期初值)/期末值
# bymonth.shift(1) 获取上一条数据
#byrate = (bymonth - bymonth.shift(1)) / bymonth.shift(1)#方式二
byrate = bymonth.pct_change()
print("byrate:",byrate)
#绘制涨跌幅
#sns.lineplot(byrate)#统一基点:假如每个基金初始值为1000,收盘价=基点*(1+涨跌幅)
bases=byrate
bases.iloc[0]=1000
bases.iloc[1:]=1+bases.iloc[1:]
bases=bases.cumprod()
sns.lineplot(bases)plt.show()

4.分布图:分析涨跌幅数量

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)# 调整index日期为日期类型
sample.index = pd.to_datetime(sample.index)
# 调整日期频率:日>月,数据为每个月第一天的数据
bymonth = sample.resample("M").first()
#月涨跌幅 涨跌幅
byrate = bymonth.pct_change()
#日涨跌幅
dayrate=sample.pct_change()#绘制分布图
indexs=byrate.columns.tolist()
for i in indexs:sns.distplot(byrate[i])
plt.xlabel("涨跌幅")
plt.ylabel("数量")plt.show()

5.箱型图

1. 绘制每个基金涨跌幅的分布

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)# 调整index日期为日期类型
sample.index = pd.to_datetime(sample.index)
# 调整日期频率:日>月,数据为每个月第一天的数据
bymonth = sample.resample("M").first()
#月涨跌幅 涨跌幅
byrate = bymonth.pct_change()
#日涨跌幅
dayrate=sample.pct_change()indexs=byrate.columns.tolist()#箱型图绘制
sns.boxplot(data=byrate)
#绘制散点
sns.swarmplot(data=byrate)plt.show()

由此可分析,沪深300涨跌幅是最稳定的,并且收益率也是正向的偏多

6.回归图

1. 用于做数据预测,来描述未来的走向

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)# 调整index日期为日期类型
sample.index = pd.to_datetime(sample.index)
# 调整日期频率:日>月,数据为每个月第一天的数据
bymonth = sample.resample("M").first()
# 月涨跌幅 涨跌幅
byrate = bymonth.pct_change()
# 日涨跌幅
dayrate = sample.pct_change()
# 列值
indexs = byrate.columns.tolist()# 绘制回归图
# 改变数据结构
temp = pd.DataFrame()
res = pd.DataFrame()
for c in indexs:temp["rate"] = byrate[c]temp["tag"] = ctemp["index"] = np.arange(len(byrate))res=pd.concat([res,temp],ignore_index=True)sns.lmplot(data=res, x="index", y="rate", hue="tag")plt.show()

7.热力图

1. 做相关性分析,

2.如:观察不同基金之间的相关性

# coding:utf-8import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import seaborn as snsmpl.rcParams["font.family"] = "FangSong"  # 设置字体
mpl.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 基金分析
sample = pd.read_csv("index_close_price.csv", index_col="date")
# 更名称
sample.rename(columns={"000016.XSHG": "上证50", "000905.XSHG": "中证500", "000300.XSHG": "沪深300", "399673.XSHE": "创业板50"},inplace=True)# 调整index日期为日期类型
sample.index = pd.to_datetime(sample.index)
# 调整日期频率:日>月,数据为每个月第一天的数据
bymonth = sample.resample("M").first()
# 月涨跌幅 涨跌幅
byrate = bymonth.pct_change()
# 日涨跌幅
dayrate = sample.pct_change()
# 列值
indexs = byrate.columns.tolist()#计算相关性
sample_corr=sample.corr()print("sample_corr",sample_corr)
#绘制相关性
sns.heatmap(sample_corr,annot=True,cmap="YlGnBu")plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2871205.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

还看YOLOv8,YOLOv9呢,烂怂卷积有啥好看的?教你利用多模态大模型做目标检测!

文章大纲 大模型业态与idea 来源可行性探索现有成果国内多模态APP 探索利用现有平台进行快速开发 MVP参考文献大模型业态与idea 来源 有一次我在单位汇报的时候,大领导问:深度学习先在还这么落后嘛?每次解决一个问题还要重新训练一个模型࿱

zookeeper快速入门三:zookeeper的基本操作

在zookeeper的bin目录下,输入./zkServer.sh start和./zkCli.sh启动服务端和客户端,然后我们就可以进行zookeeper的基本操作了。如果是windows,请参考前面章节zookeeper快速入门一:zookeeper安装与启动 目录 一、节点的增删改查 …

python之前端css样式(一)

css ID选择器 #c1{color:red;#边框为红色border:1px solid red; } <div id"c2">中国移动</div> 类选择器 .xx{color:blue; } <div class"xx">中国联通</div> 标签选择器 li{color: pink; } <ul><li>北京</li…

reloading,一个很实用的Python库!

Python是一门非常流行的编程语言&#xff0c;它的广泛应用和丰富的第三方库使得开发者们能够轻松完成各种任务。reloading是Python中一个强大的库&#xff0c;它能够在程序运行时重新加载修改过的模块&#xff0c;为开发者提供了便利和灵活性。本文将全面介绍reloading库&#…

SqlServer2008(R2)(二)SqlServer2008(R2)安装和卸载注意事项整理

二、注意事项 1、 安装数据中心版 说明&#xff1a;此激活版仅用于测试和学习使用。 这是官方的下载页面&#xff08;需要付费订阅&#xff09;&#xff1a; http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx 数据中心版&#xff1a; PTTFM-X467G-P7RH…

实战Python Socket编程:开发多用户聊天应用

实战Python Socket编程&#xff1a;开发多用户聊天应用 Python Socket 编程概述什么是Socket编程&#xff1f;Socket编程的应用场景Socket编程的重要性基本概念 环境准备Python版本必要的库开发环境配置调试工具 基本Socket编程创建Socket绑定Socket到端口监听连接接受连接发送…

【首次抽奖】16G、32G免费送!云服务器选购推荐 京东云 阿里云 腾讯云对比 幻兽帕鲁 雾锁王国 省钱学生党

好消息&#xff1a;抽奖活动开启&#xff01;时间&#xff1a;3月17日——3月24日 最高奖品&#xff1a;16G 6个月&#xff1b;32G 3个月 抽奖规则&#xff1a;B站点赞评论关注即可参与抽奖&#xff0c;3.24日公布获奖名单。 抽奖地址&#xff1a; 【首次抽奖】16G、32G免费…

车载电子与软件架构

车载电子与软件架构 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎,出门靠自己,四海…

release版本修改exe的图标

大家都知道&#xff0c;在vs中&#xff0c;release版本是可以生成程序的exe执行文件的&#xff0c;意思就是编译之后&#xff0c;直接运行exe文件&#xff0c;即可运行程序&#xff0c;而不用在vs中运行程序。这样就大大的方便了用户使用程序的过程。 但是我们有时候生成的图标…

【go语言开发】性能分析工具pprof使用

本文主要介绍如何在项目中使用pprof工具。首先简要介绍pprof工具的作用&#xff1b;然后介绍pprof的应用场景&#xff0c;主要分为工具型应用和服务型应用。最后数据分析项目&#xff0c;先采集项目信息&#xff0c;再可视化查看 文章目录 前言应用场景工具型应用服务型应用 数…

五、保持长期高效的七个法则(二)Rules for Staying Productive Long-Term(1)

For instance - lets say youre a writer.You have a bunch of tasks on your plate for the day, but all of a sudden you get a really good idea for an essay. You should probably start writing now or youll lose your train of thought.What should you do? 举例来说…

【JS】数组查重

码 /*** 数组查重* param {Array} arr 查重的数组* returns Array 返回不重复的数组 */ const noReArr arr > [...new Set(arr)]const a [12,12,3,4] console.log( noReArr(a) );效果图

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FormLink)

提供静态卡片交互组件&#xff0c;用于静态卡片内部和提供方应用间的交互&#xff0c;当前支持router、message和call三种类型的事件。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件仅可…

Python电梯楼层数字识别

程序示例精选 Python电梯楼层数字识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python电梯楼层数字识别》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应…

leetcode代码记录(不同路径

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在…

后端程序员入门react笔记(八)-redux的使用和项目搭建

一个更好用的文档 添加链接描述 箭头函数的简化 //简化前 function countIncreAction(data) {return {type:"INCREMENT",data} } //简化后 const countIncreAction data>({type:"INCREMENT",data })react UI组件库相关资料 组件库连接和推荐 antd组…

力扣细节题:字符串中的最大奇数

奇数只要找到第一位是奇数的即可&#xff0c;不是找单个数字 //即从最低位开始&#xff0c;找到第一位为奇数的位 //然后之前的就是需要的数字char * largestOddNumber(char * num){int i strlen(num) - 1;while(i > 0){if((num[i] - 0) % 2 1)break;i--;}//先找到低位开…

计算机考研|怎么备考「科软」?

学好408和考研数学就可以了 大家对于科软已经回到了理性的区间&#xff0c;很难再出现刚开始的300分上科软的现象&#xff0c;也不会再出现388分炸穿地心的现象。 如果大家想报考科软&#xff0c;我觉得一定要认真对待复习&#xff0c;不要抱有抄底的心态去复习。 众所周知&am…

【智能算法】引力搜索算法(GSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2009年&#xff0c;Esmat Rashedi等人受到万有引力定律启发&#xff0c;提出了引力搜索算法(Gravitational Search Algorithm&#xff0c;GSA)。 2.算法原理 2.1算法思想 GSA基于万有引力定律&am…

安装Pytorch——CPU版本

安装Pytorch——CPU版本 1. 打开pytorch官网2. 选择pip安装pytorch-cpu3.复制安装命令4. 在cmd命令窗口&#xff0c;进入你的虚拟环境4.1 创建虚拟环境4.2 进行安装 5. 安装成功6. 进行测试——如下面步骤&#xff0c;如图6.1 输入 python6.2 输入 import torch6.2 输入 print …