人工智能-seaborn单双多变量绘图、两案例:NBA球员数据分析、北京租房数据统

news2024/11/20 13:39:11

1、 seaborn

作用:更高效地绘图

#安装
pip3 install seaborn

#导入
import seaborn as sns

单变量:直方图或核密度曲线
双变量:散点图、二维直方图、

主要函数:distplot()与joinplot()函数

1.1 单变量绘图

API
在这里插入图片描述

import seaborn as sns
import numpy as np

np.random.seed(0) #确定随机数种子
arr = np.random.rand(100)
sns.distplot(arr,bins=10,hist=True,kde=True,rug=True)

在这里插入图片描述

1.2 双变量绘图

散点图-kind = ‘scatter’
在这里插入图片描述

import pandas as pd
df = pd.DataFrame({'x':np.random.randn(500),'y':np.random.randn(500)})
df.head()
sns.joinplot('x','y',data = df)

在这里插入图片描述
核密度估计曲形-kind = ‘kde’

sns.joinplot('x','y',data = df,kind = 'kde')

在这里插入图片描述
颜色越深,表示数据越密集

二维直方图-kind = ‘hex’


sns.joinplot('x','y',data = df,kind = 'hex')

在这里插入图片描述
多个成对的双变量分布

dataset = sns.load_dataset('iris')

sns.pairplot(dataset)

在这里插入图片描述

1.3 总结

  • 绘制单变量分布图像:seaborn.distplot()
  • 绘制双变量分布图像:seaborn.jointplot()
  • 绘制成对的双变量分布图像:seaborn.pairplot()

2、分类数据绘图

2.1 类别散点图

在这里插入图片描述

data = sns.load_dataset('tips')
data.load()
sns.stripplot(x='day',y='total_bill',data=data)

在这里插入图片描述

sns.stripplot(x='day',y='total_bill',data=data,hue='time')
#hue='time'按time类别分颜色,这里只有两类

在这里插入图片描述

sns.stripplot(x='day',y='total_bill',data=data,hue='time',jitter=True)
#jitter=True不让数据重叠起来

在这里插入图片描述

sns.swarmplot('day','total_bill',data=data)
#swarmplot-完全没有重叠

在这里插入图片描述

2.2 类别内的数据发布

箱线图、小提琴图
在这里插入图片描述
小提琴图结合了箱线图和密度图的特征,主要用来显示数据的分布
在这里插入图片描述
箱线图API

seaborn.boxplot(x=None,y=None,hue=None,data=None,orient=None,color=None,saturation=0.9)
#hue--分组
#palette=['g','b','y',''b]设置颜色,是对hue分组类别的颜色
#saturation颜色设置的饱和度

#举例
sns.boxplot('day','total_bill',data=data)

小提琴图

#API
seaborn.violinplot(x=None,y=None,hue=None,data=None)

#举例
sns.violinplot('day','total_bill',data=data)

条形图sns.barplot与点图sns.pointplot

#条形图(及其置信区间)
sns.barplot(x='day',y='total_bill',data=tips)

#点图(点估计及其置信区间)
sns.pointplot(x='day',y='total_bill',data=tips)

在这里插入图片描述
在这里插入图片描述

3、案例:NBA球员数据分析

NBA数据

3.1获取数据且初识数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#获取数据且初识数据
data = pd.read_csv('F:/人工智能/nba_2017_nba_players_with_salary.csv')
data.head()
data.shape
data.describe()

3.2 热力图

#数据分析
##数据相关性
data_cor = data.loc[:,['RPM','AGE','SALARY_MILLIONS','ORB','DRB','TRB','AST','STL','BLK','TOV','PF','POINTS','GP','MPG','ORPM','DRPM']]
data_cor.head()
#列名太多,只对部分列求一下相关性
corr = data_cor.corr()
corr.head()
###热力图
plt.figure(figsize=(20,8),dpi=100)#设置图大小
sns.heatmap(corr,square=True,linewidths=0.1,annot=True)
#square=True调至方形,linewidths=0.1中间加宽度为0.1的线,annot=True显示数据

在这里插入图片描述

3.3数据排名分析

#基本数据排名分析
data.loc[:,['PLAYER','RPM','AGE']].sort_values(by='RPM',ascending=False).head()
#按照RPM降序排名

在这里插入图片描述

#按照球员薪资排名
data.loc[:,['PLAYER','RPM','AGE','SALARY_MILLIONS']].sort_values(by='SALARY_MILLIONS',ascending=False).head()

在这里插入图片描述

3.4seaborn常用的三个数据可视化方法

3.4.1单变量

#seaborn常用的三个数据可视化方法
##单变量
#利用seaborn中的distplot绘图来分别看薪水、效率值、年龄三个信息的分布情况
sns.set_style('darkgrid')#设置基本模式
plt.figure(figsize=(10,10))

plt.subplot(3,1,1)
sns.distplot(data['SALARY_MILLIONS'])
plt.ylabel('salary')

plt.subplot(3,1,2)
sns.distplot(data['RPM'])
plt.ylabel('RPM')

plt.subplot(3,1,3)
sns.distplot(data['AGE'])
plt.ylabel('AGE')

在这里插入图片描述

3.4.2双变量-散点图

##双变量jointplot
#使用jointplot查看年龄和薪水之间的关系
sns.jointplot(data.AGE,data.SALARY_MILLIONS,kind='hex') #hex显示六边形形式

在这里插入图片描述

3.4.3多变量

##多变量
multi_data = data.loc[:,['RPM','SALARY_MILLIONS','AGE','POINTS']]
multi_data.head()
sns.pairplot(multi_data)

在这里插入图片描述

3.5 衍生变量的一些可视化实践-以年龄为例

自定义了一个年龄分层

#年龄划分
def age_cut(df):
    if df.AGE <=24:
        return 'young'
    elif df.AGE >=30:
        return 'old'
    else:
        return 'best'
    
#使用apply对年龄进行划分
data['age_cut'] = data.apply(lambda x:age_cut(x),axis=1)
data.head()

分层散点图

#方便计数再加一个cut列
data['cut'] = 1

data.loc[data.age_cut == 'best'].SALARY_MILLIONS.head()

#通过年龄对球员薪水和效率值进行分析
sns.set_style('darkgrid')
plt.figure(figsize=(10,10),dpi=100)
plt.title('RPM and SALARY')

x1 = data.loc[data.age_cut == 'old'].SALARY_MILLIONS
y1 = data.loc[data.age_cut == 'old'].RPM
plt.plot(x1,y1,"^")#"^"上三角形式

x2 = data.loc[data.age_cut == 'best'].SALARY_MILLIONS
y2 = data.loc[data.age_cut == 'best'].RPM
plt.plot(x2,y2,"^")

x3 = data.loc[data.age_cut == 'young'].SALARY_MILLIONS
y3 = data.loc[data.age_cut == 'young'].RPM
plt.plot(x3,y3,".")

在这里插入图片描述
成对双变量绘图pairplot

dat2 = data.loc[:,['RPM','POINTS','TRB','AST','STL','BLK','age_cut']]
sns.pairplot(dat2,hue='age_cut')

在这里插入图片描述

3.6 球队数据分析

查看不同类别下的情况,求均值,最值等—agg聚合函数
排名sort_values

data.groupby(by='age_cut').agg({"SALARY_MILLIONS":np.mean})
#利用agg函数输出各年龄段的平均薪资

#按照球队分组,平均薪水降序排序
data_team = data.groupby(by='TEAM').agg({"SALARY_MILLIONS":np.mean}) #TEAM球队
data_team.sort_values(by='SALARY_MILLIONS',ascending=False).head(10)

#按照分年龄段分球队,上榜球员数降序排列。若上榜球员数相同,则按效率值降序排列
data_rpm = data.groupby(by=['TEAM','age_cut']).agg({"SALARY_MILLIONS":np.mean,"RPM":np.mean,"PLAYER":np.size})
data_rpm.sort_values(by=['PLAYER','RPM'],ascending=False).head()
                                    

用图像来展示各球队的情况

#利用箱线图和小提琴图进行数据分析
sns.set_style('whitegrid')
plt.figure(figsize=(20,10))

data_team2 = data[data.TEAM.isin(['GS','CLE','SA','LAC','OKC','UTAH','CHA','TOR','NO','BOS'])]#只取了部分球队名
#绘图箱线图
plt.subplot(3,1,1)
sns.boxplot(x='TEAM',y='SALARY_MILLIONS',data =data_team2) #部分球队的薪资分布

plt.subplot(3,1,2)
sns.boxplot(x='TEAM',y='AGE',data =data_team2)  #部分球队的年龄分布

plt.subplot(3,1,3)
sns.boxplot(x='TEAM',y='MPG',data =data_team2)#部分球队的出场时间分布

在这里插入图片描述

#小提琴图
sns.set_style('whitegrid')
plt.figure(figsize=(20,10))

plt.subplot(3,1,1)
sns.violinplot(x='TEAM',y='3P%',data =data_team2) #部分球队的3分球命中率分布

plt.subplot(3,1,2)
sns.violinplot(x='TEAM',y='POINTS',data =data_team2)  #部分球队的得分分布

plt.subplot(3,1,3)
sns.violinplot(x='TEAM',y='eFG%',data =data_team2)#部分球队的真实命中率分布

在这里插入图片描述

4、案例:北京租房数据统计分析

需求:
在这里插入图片描述
链家北京租房数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

#获取数据
file_data = pd.read_csv('F:/淘宝-人工智能-课件/链家北京租房数据.csv')
file_data

file_data.shape
file_data.info()
file_data.describe()#只计算数值列的

数据基本处理

4.1,重复值和空值处理

file_data = file_data.drop_duplicates()#删除重复值,第一次出现不删除,后面出现重复的会被删除
file_data.shape

#空值处理
file_data = file_data.dropna()#删除空值
file_data.shape

在这里插入图片描述

4.2 数据类型转换

想把”面积列“转换成float类型
户型列的表达,有“几房间几厅”的表达,把该列统一为“几室几厅”的表达

#面积列
file_data['面积(㎡)'].values
file_data['面积(㎡)'].values[0][:-2]

#创建一个空的数组,用来存储改格式后的面积列
data_new = np.array([])
data_area = file_data['面积(㎡)'].values
for i in data_area:
    data_new = np.append(data_new,np.array(i[:-2]))
    
data_new

#转换data_new中数据类型
data_new = data_new.astype(np.float64)
data_new
file_data.loc[:,'面积(㎡)'] = data_new #替换
file_data.head()
#户型表达方式替换
house_data = file_data['户型']
temp_list=[]
for i in house_data:
    new_info = i.replace('房间','室')
    temp_list.append(new_info)
    
file_data.loc[:,"户型"] = temp_list
file_data

调整后的数据
在这里插入图片描述

p0655

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

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

相关文章

cookie, session,redis全解析

cookie session redis 一. 前言 最近在学习node的过程中对于cookie&#xff0c;session&#xff0c;redis有了和之前不一样的理解&#xff0c;记录一下之前不了解的知识点。二.cookie的重点概念 存储在客户端浏览器中的字符串&#xff0c;最大5kb跨域不共享&#xff0c;每一个…

限定城市|临床医生自费赴日本大阪公立大学医学院访学观摩

X医生拟自费访学&#xff0c;目标是日本大阪都市圈&#xff0c;包括大阪、京都、奈良、神户等&#xff0c;优先考虑大阪市及京都市。最终我们申请到大阪公立大学医学院&#xff0c;对方在一周内连续发来两封邀请函&#xff0c;以便于X医生办理护照及单位的审批手续。对于首次办…

Zabbix与乐维监控对比分析(五)——可视化篇

前面我们详细介绍了Zabbix与乐维监控的架构与性能、Agent管理、自动发现、权限管理、对象管理、告警管理方面的对比分析&#xff0c;相信大家对二者的对比分析有了相对深入的了解&#xff0c;接下来我们将对二者的可视化功能进行对比分析。可视化是当代IT监控的一个创举&#x…

java+ssh+mysql客户关系管理系统

项目介绍&#xff1a; 本系统为基于jspsshmysql的客户关系管理系统&#xff0c;系统实现了权限自动化&#xff0c;可以自由创建角色&#xff0c;并为每个角色赋予权限&#xff0c;全部功能如下&#xff1a; 1.我的桌面&#xff1a;列出了一些办公常用快捷方式 2.信息中心&am…

CSDN第17次竞赛题解与总结

前言 临近期末考&#xff0c;博主时间较少&#xff0c;本文质量可能不高&#xff0c;请见谅。 2022/12/21 19:00~21:00 CSDN第17次竞赛开考 本场竞赛由「清华大学出版社 & CSDN」联合主办。 《算法竞赛》 本书解析了算法竞赛考核的数据结构、算法&#xff1b;组织了每个…

Python基础库及机器学习笔记

1.介绍 本节将主要介绍Python中的常用第三方库。这些库都是实现了各种计算功能的开源库&#xff0c;它们极大地丰富了Python的应用场景和计算能力&#xff0c;这里主要介绍NumPy、pandas和Matplotlib三个库的基础使用。其中NumPy是Python用来进行矩阵运算、高维度数组运算的数…

jQuery Ajax

文章目录jQuery Ajax概述load()简单使用加载部分内容传递数据回调函数$.get()$.post()$.getJSON()$.getScript()jQuery Ajax 概述 Ajax&#xff0c;全称“Asynchronous JavaScript and XML”&#xff0c;即“异步的JavaScript和XML”。其核心是通过JavaScript的XMLHttpReques…

分布式开源工作流引擎有什么特点?

在竞争越来越激烈的社会中&#xff0c;拥有提质增效的办公软件&#xff0c;可以为企业带来更可观的市场价值。分布式开源工作流引擎在企业数字化发展进程中深受欢迎&#xff0c;在帮助企业提升办公效率上发挥了重要的作用。今天&#xff0c;我们就一起里盘点下分布式开源工作流…

【轻松掌握C语言】程序环境和预处理

目录 一、程序的翻译和执行环境 1、翻译环境 2、执行环境 二、预处理详解 1、预定义符号 2、#define 3、#undef 4、命令行定义 5、条件编译 6、文件包含 一、程序的翻译和执行环境 1、翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令。 2、执行环境&#xff0…

笔记本怎么录制屏幕?只需2分钟,快速学会

如今&#xff0c;大多数人会在笔记本电脑上使用屏幕录制功能&#xff0c;如&#xff1a;在线直播课程、在线会议、电影和电视剧等场景。笔记本怎么录制屏幕&#xff1f;事实上&#xff0c;用电脑录制视频并不像你想象的那么困难。我们每天使用的电脑都有自己的屏幕录制功能&…

高性能数据分析时代,HPDA平台需要什么样的数据存储?

在海量基因数据中进行全基因数据分析&#xff0c;了解各种疾病与DNA之间的隐秘联系&#xff1b;对海洋气候进行预测&#xff0c;利用强大的数据分析性能&#xff0c;实现分钟级的数据刷新、精准预测海洋气候&#xff1b;利用高速相机模拟人脑上亿个神经元之间联接与工作&#x…

善康医药冲刺科创板上市:计划募资13亿元,上半年亏损5000万元

近日&#xff0c;深圳善康医药科技股份有限公司&#xff08;下称“善康医药”&#xff09;在上海证券交易所递交招股书&#xff0c;准备在科创板上市。本次冲刺上市&#xff0c;善康医药计划募资13.27亿元&#xff0c;将用于新药研发项目、创新药高端制剂生产基地建设项目、营销…

redis学习第二天

Redis事务 Redis事务是一个单独的隔离操作&#xff1a;事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中&#xff0c;不会被其他客户端发送来的命令插队。 Redis事务的主要作用就是串联多个命令防止别的命令插队。 Multi、Exec、discard 从输入Multi命令开始、…

【c++基础】第六章 STL标准模板库

第六章 STL标准模板库认识STLstring字符容器库vector容器迭代器与空间配置器deque容器容器适配置list容器set容器map容器观察者设计模型认识STL STL的概述 STL采用泛型思想&#xff0c;把C中所用到的所有的数据结构&#xff0c;按照一定的标准&#xff0c;全部封装成了一个个…

虚拟机docker网络问题处理

问题 我们有2台设备&#xff0c;ip 为 172.20.30.1 172.20.30.2 &#xff0c;虚拟机上的服务需要连接这2台设备&#xff0c;网络已经做通了&#xff0c;可以正常连接虚拟机异常关闭&#xff0c;重新开启后。发现服务有些问题&#xff0c;就打算将docker服务重新部署&#xff0…

Vue后台项目的记录 (一)

一、下载模板 简洁版: https://github.com/PanJiaChen/vue-admin-template 下载下来的文件介绍 build ----index.js webpack配置文件【很少修改这个文件】 mock ----mock数据的文件夹【模拟一些假的数据mockjs实现的】&#xff0c;因为咱们实际开发的时候&#xff0c;利用的是…

STM32——FATFS文件系统

可裁剪意味着可以选择部分功能&#xff0c;减小占用的空间。 与Windows兼容意味着可以在电脑上直接读取文件。 ①底层接口&#xff0c;包括存储媒介读&#xff0f;写接口&#xff08;disk I/O&#xff09;和供给文件创建修改时间的实时时钟&#xff0c;需要我们根据平台和存储…

深度学习笔记(1)| 导数、偏导数、梯度和方向导数的理解

1. 梯度&#xff08;Gradient&#xff09;的理解 深度学习尝试在权重空间中找到一个方向&#xff0c;沿着该方向能降低损失函数的损失值。其实不需要随机寻找方向&#xff0c;因为可以直接计算出最好的方向&#xff0c;这就是从数学上计算出最陡峭的方向。这个方向就是损失函数…

单页扒手-基于Node的实现

做网站的朋友经常遇见别人的好看的页面&#xff0c;想保存到本地自己用&#xff0c;可是用以前的老办法网页另存为&#xff0c;发现很不好&#xff0c;规则不好处理&#xff0c;路径也不好处理&#xff0c;用这个网页克隆&#xff08;单页模板扒手&#xff09;就很好处理了&…

阿里「杀手锏」级语音识别模型来了!推理效率较传统模型提升10倍,已开源

阿里达摩院&#xff0c;又搞事儿了。 这两天&#xff0c;它们发布了一个全新的语音识别模型&#xff1a; Paraformer。 开发人员直言不讳&#xff1a;这是我们“杀手锏”级的作品。 ——不仅识别准确率“屠榜”几大权威数据集&#xff0c;一路SOTA&#xff0c;推理效率上相比…