第二十五天-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://www.hqwc.cn/news/545114.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

矩阵中移动的最大次数

文章目录 所属专栏:BFS算法 题目链接 思路如下: 1.首先我们需要从第一列开始遍历,寻找每一个都能够满足条件的位置,将它插入到数组里面 2.第一列遍历完了后我们先判断第一列的数是否都满足条件插入到数组里面,如果数组为空&#…

Tomcat Seeion 集群

部署:nginx服务器:11-11;tomcat1:11-3; tomcat2:11-6 nginx服务器11-11做搭建: [rootmcb-11 ~]# systemctl stop firewalld [rootmcb-11 ~]# setenforce 0 [rootmcb-11 ~]# yum install epel-release.noarch -y [rootmcb…

【C++】类和对象终章

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、初始化列表1.1 初始化列表的形式1.2 初始化列表的注意事项 二、explicit关键…

c++实现简单搜索二叉树<K,V>形

文章目录 搜索二叉树节点类BSTreeNode(节点类的构造) BSTree(功能实现类)Insert(插入)Erase(删除)Find(查找这个节点) 搜索二叉树 搜索二叉树本质:左节点比我小 右节点比我大 节点类 BSTreeNode:给自身节点封装一个类 用这个类来添加节点的操作 我们写的是一个key.value型的搜…

第二十四天-数据可视化Matplotlib

目录 1.介绍 2.使用 1. 安装: 2.创建简单图表 3.图表类型 1.一共分为7类 2.变化 1.折线图 3.分布 ​编辑 1.直方图 2.箱型图 4.关联 1. 散点图: 2.热力图: 5.组成 1.饼图 2.条形图 6.分组 1.簇型散点图 2.分组条形图 3.分…

程序人生——Java多线程和并发的使用建议

目录 引出多线程和并发建议118:不推荐覆写start方法建议119:启动线程前stop方法是不可靠的建议120:不适用stop方法停止线程 建议121:线程优先级只使用三个等级建议122:使用线程异常处理器提升系统可靠性建议123&#x…

主干网络篇 | YOLOv8更换主干网络之ShuffleNetV2

前言:Hello大家好,我是小哥谈。ShuffleNetV2是一种轻量级的神经网络架构,用于图像分类和目标检测任务。它是ShuffleNet的改进版本,旨在提高模型的性能和效率。ShuffleNetV2相比于之前的版本,在保持模型轻量化的同时&am…

什么是CRM系统?全面解析,学会利用CRM提升业务效率

在客户心目中,200家CRM企业可能会有200种CRM管理系统,很多客户接触客户经理的第一句话都是:“你家是什么CRM?”。CRM系统是什么?很多技术商、企业管理者自己往往都没有概念,我们通过一文全面解析。简单来说…

我打算修一段时间仙,望周知

1、大科学家牛顿也修过仙,虽然修的是西方的仙;我们东方人不信那个邪,有自己优秀的传统文化,我只修东方的仙;另外,作为普通凡人我成就和智慧都无法望牛顿老人家项背的普通人,即使现在暂时“修仙”…

记录对NSIS的一些微调 实现Electron安装包美化

利洽科技-nsNiuniuSkinUI - NSIS 实现了electron 的安装包美化,免费,便捷。 下面我整理了一些关于它的微调,使其安装卸载更加简单快捷。 1. 默认展示安装路径部分 (1)将moreconfiginfo标签visible 设置为 true&#…

SpringCloud-深度理解ElasticSearch

一、Elasticsearch概述 1、Elasticsearch介绍 Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,构建在Apache Lucene基础上。它提供了一个强大而灵活的工具,用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用…

探索设计模式的魅力:探索发布-订阅模式的深度奥秘-实现高效、解耦的系统通信

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并坚持默默的做事。 探索发布-订阅模式的深度奥秘:实现高效、解耦的系统通信 文章目录 一、案例场景&am…