文章目录

  • 数据背景
  • 初(粗)看数据
  • 数据简单清理
  • 数据可视化
  • 总结:

数据背景

A data frame with 53940 rows and 10 variables:
这是一个10列53940行的数据集。下面是它每个属性的介绍:

price carat cut color clarity x y z
价格 重量 切割质量 色彩 净度

价格是以美元计价;
重量的单位是克拉;
切割质量分为:Fair, Good, Very Good, Premium, Ideal;
色彩分为:J (worst) to D (best);
净度分为I1 (worst), SI2, SI1, VS2, VS1, VVS2, VVS1, IF (best);
长,宽,深的单位是mm

初(粗)看数据

加载数据到dataframe

import pandas as pd
import seaborn as sns
sns.set(style="whitegrid", palette="muted")
diamonds = pd.read_csv("/Users/sqian/Documents/GitHub/seaborn-data-master/diamonds.csv")
diamonds.describe()


这里可以看出一些属性的取值范围和整个数据集的数量。

diamonds.head()


可以看到有三个属性是非数字型的,后面可以对其进行处理。

diamonds.columns

Index([‘carat’, ‘cut’, ‘color’, ‘clarity’, ‘depth’, ‘table’, ‘price’, ‘x’, ‘y’, ‘z’],dtype=‘object’)
这个地方打印一下是为了后面选列时,复制列名用的。

diamonds.isnull().sum()


看一下有没有空白值,没有发现!

数据简单清理

  1. 先把非数字型的属性替换成非数字的,当然也可以不替换,我这里是为了装逼,哈哈哈!
import collections
# 统计列表元素出现次数
collections.Counter(diamonds['color'])
collections.Counter(diamonds['clarity'])
collections.Counter(diamonds['cut'])


这里通过查看这些列里频繁出现的值来找出需要替换的值。

diamonds['cut_no']=diamonds['cut']
diamonds['clarity_no']=diamonds['clarity']
diamonds['color_no']=diamonds['color']
# 准备好替换map
cut_rp_map={'Fair':1,'Good':2,'Very Good':3,'Premium':4,'Ideal':5}
co_rp_map={'J':1,'I':2,'H':3,'G':4,'F':5,'E':6,'D':7}
cl_rp_map={'I1': 1,'SI2': 2,'SI1': 3,'VS2': 4,'VS1': 5,'VVS2': 6,'VVS1': 7,'IF': 8}
# inplace 默认值是False,为True则替换原数据集,否则不替换原数据而是返回替换结果
diamonds['cut_no'].replace(cut_rp_map,inplace=True)
diamonds['clarity_no'].replace(cl_rp_map,inplace=True)
diamonds['color_no'].replace(co_rp_map,inplace=True)
  1. 替换空值,虽然没有,逼还是要继续装的
# 应用于原数据集
diamonds.dropna(inplace=True)
# 删除至少两个空值的行
diamonds.dropna(thresh=2)
# 删除所有值都是空的行
diamonds.dropna(how='all')
# 删除列
diamonds.dropna(axis='columns')
  1. 数值归一化

参考:https://blog.csdn.net/hjxzb/article/details/78610961

数据可视化

废话不多说,直接先看多对关系,观察整体数据的分布,肉眼看看是否有相关性

import matplotlib.pyplot as plt
import seaborn as sns
# 用Seaborn画成对关系
sns.pairplot(diamonds)
plt.show()


可以看到有点多,这里放大看一下左上角的图

这里可以看出不是所有属性都独立的,这里再来个相关性分析

# Correlation matrix
def plotCorrelationMatrix(df, graphWidth):df = df.dropna('columns') # drop columns with NaNdf = df[[col for col in df if df[col].nunique() > 1]] # keep columns where there are more than 1 unique valuesif df.shape[1] < 2:print(f'No correlation plots shown: The number of non-NaN or constant columns ({df.shape[1]}) is less than 2')returncorr = df.corr()plt.figure(num=None, figsize=(graphWidth, graphWidth), dpi=80, facecolor='w', edgecolor='k')corrMat = plt.matshow(corr, fignum = 1)plt.xticks(range(len(corr.columns)), corr.columns, rotation=90)plt.yticks(range(len(corr.columns)), corr.columns)plt.gca().xaxis.tick_bottom()plt.colorbar(corrMat)plt.title(f'Correlation Matrix for Diamonds', fontsize=15)plt.show()plotCorrelationMatrix(diamonds, 14)


从图中看x,y,z的相关性还是很高的。下面我们来用散点图和折现图来看一下这部分数据。这里不要多想为啥用这个图,纯粹是为了实践一下之前学习的这部分知识。

# 用Seaborn画散点图
sns.jointplot(x="x", y="y", data=diamonds,color='blue', kind='scatter');
plt.show()

# 使用Seaborn画折线图
sns.lineplot(x="x", y="z", data=diamonds)
plt.show()

# 用Seaborn画直方图
sns.distplot(diamonds['z'], kde=False)
plt.show()
sns.distplot(diamonds['z'], kde=True)
plt.show()


这个图里有两个问题,一是kde=True,这个是开启核密度函数,具体可以参考我的另一篇文章;另外一个就是大部分值都聚集在2到10之间,只有几个值取到了15之上,这里可以用盒子图看一下。(哈哈,硬编了个装逼借口···)

# 用Seaborn画箱线图
sns.boxplot(data=diamonds['z'])
plt.show()


由此可以看到只有一个极值,这里用程序把它去除掉

#删除/选取某行含有特定数值的行
r=[x for i,x in enumerate(diamonds.index) if diamonds.z[i]>10]
#利用enumerate对row0进行遍历,将含有数字3的列放入r中
print('Remvove row: ',r)
#利用drop方法将含有特定数值的列删除
diamonds.drop(r,axis=0,inplace=True)
# 用Seaborn画箱线图
sns.boxplot(data=diamonds['z'])
plt.show()

当然如果知道那个值是多少的话,还有一种写法如下:

new_diamonds=diamonds[~diamonds['z'].isin([31.8])]
#通过~取反
print(new_diamonds.z)

清理和的盒子图看起来稍微正常些了

下面来做个饼图看看从色彩,切割等属性来看看不同品质的钻石数量占比:

import collections
# 统计列表元素出现次数
color_cnt=collections.Counter(diamonds['color'])
color_keys=color_cnt.keys()
color_values=color_cnt.values()
# 用Matplotlib画饼图
plt.pie(x = color_values, labels=color_key)
plt.show()

fig,axj=plt.subplots(nrows=2,ncols=2,figsize=(8, 8),dpi=200) #建立饼图坑
axes = axj.flatten() #子图展平
color_cnt=collections.Counter(diamonds['color'])
color_keys=[x for x in color_cnt.keys()]
color_values=[x for x in color_cnt.values()]c_cnt=collections.Counter(diamonds['cut'])
c_keys=[x for x in c_cnt.keys()]
c_values=[x for x in c_cnt.values()]cl_cnt=collections.Counter(diamonds['clarity'])
cl_keys=[x for x in c_cnt.keys()]
cl_values=[x for x in c_cnt.values()]axes[0].set_title("color pie")
axes[0].pie(x=color_values,labels=color_keys)
axes[1].set_title("cut pie")
axes[1].pie(x=c_values,labels=c_keys)
axes[2].set_title("clarity pie")
axes[2].pie(x=cl_values,labels=cl_keys)plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.5, hspace=0.2)  # 调整子图间距
plt.show()


最后再装一个逼

# 用Seaborn画二元变量分布图(散点图,核密度图,Hexbin图)
sns.jointplot(x="cut_no", y="price", data=diamonds, kind='scatter')
sns.jointplot(x="cut_no", y="price", data=diamonds, kind='kde')
sns.jointplot(x="cut_no", y="price", data=diamonds, kind='hex')
plt.show()



总结:

本文主要是用Diamonds数据来实践之前学的数据可视化程序,所以如果出现看数据方式不对请勿当真。这里还是没有用到Seaborn的多图模式,后面争取学会来进行补充。

利用数据可视化技术来学习钻石鉴别相关推荐

  1. 机器学习--Iris数据集的Fisher线性分类以及数据可视化技术的学习

    Iris数据集的Fisher线性分类以及数据可视化技术的学习 1.Iris数据集的Fisher线性分类 2.数据可视化技术的学习 1.数据集介绍 2.观看数据前5行 3.特征工程 1.数据清洗 2.数 ...

  2. 《大数据可视化技术》可视化大作业:“个人信息可视化展示”:1学习生活数据可视化 2社会社交关系可视化 3地理信息可视化 4其他个人数据可视化

    <大数据可视化技术>个人信息可视化展示: (文末附源代码) 1.学习生活数据可视化 2.社会社交关系可视化 3.地理信息可视化 4.其他个人数据可视化 数据集介绍: 我的课程与成绩:: 本 ...

  3. 大数据可视化模板_最佳大数据可视化技术

    研究人员一致认为,视觉是我们的主要意识:我们感知,学习或处理的信息中有80-85%是通过视觉进行调节的. 当我们试图理解和解释数据时,或者当我们寻找数百或数千个变量之间的关系以确定它们的相对重要性时, ...

  4. “大数据可视化技术与应用”培训

    在大数据时代,随着互联网.移动互联网以及传感技术的发展,数据的采集.存储.传输.处理.发布变得越来越便捷.当可获取的数据量远远超过常规处理能力时,如何辨识并理解数据,如何将数据转化成更容易.更迅速探索 ...

  5. 大数据可视化技术面临的挑战及应对措施

    来源:科技导报 本文约5400字,建议阅读10分钟 本文介绍了适用于大数据的数据可视化技术,讨论了针对大数据可视化应用需求自主研发的交互式可视化设计平台AutoVis及其应用. [ 导读 ]本文从大数 ...

  6. 漏磁用MATLAB,管道漏磁内检测数据可视化技术研究

    管道漏磁内检测数据可视化技术研究 随着世界油气产业的快速发展,管道已成为输送石油.天然气必不可少的设备,然而无论长输管道是埋在地下或是深海中,都要承受来自内部和外部的压力.自身的重力,以及土壤.海水. ...

  7. 大数据可视化技术的作用有哪些

    在大数据时代,数据可视化技术在广泛应用的同时,也面临诸多新的挑战.大数据可视化是一个面向应用的研究领域,本文重点从应用实践的角度,讨论在大数据背景下大数据可视化内涵.研究进展.相关技术与产品以及所面临 ...

  8. 《数据可视化技术》 太平洋汽车销售分析

    课 程: <数据可视化技术> 题 目: 太平洋汽车销售分析 2021年 1月 1 日 前言 这是我学数据分析以来,第一次用python进行数据分析实战,一边做,一遍看我平时做的笔记,查看别 ...

  9. 在R、Python和Julia中常用的数据可视化技术

    俗话说"一图胜千言".通过各种图片和图形化展示,我们可以更清晰地表达很多抽象概念.理论.数据模式或某些想法.在本章中,我们首先解释为什么应该关心数据可视化.然后,我们将讨论几种在R ...

最新文章

  1. 读书笔记之:C/C++程序员实用大全—C/C++最佳编程指南
  2. Cissp-【第5章 身份与访问管理】-2021-3-14(601页-660页)
  3. jdk下载:各历史版本下载地址
  4. spring源码构建以及模块划分和依赖
  5. SQLite数据库常用语句及MAC上的SQLite可视化工具MeasSQLlite使用
  6. 限制UI只能在屏幕内移动(放大或缩小屏幕同样适用)
  7. mysql 存储过程 用户变量值_mysql:用户变量、系统变量、局部变量(存储过程中的)...
  8. 【LeetCode】剑指 Offer 32 - II. 从上到下打印二叉树 II
  9. MYSQL----(3)SQL 基本操作
  10. 布局智能家居 三大电信运营商进展如何?
  11. Hi3519v101调试 RTC功能
  12. docker装LibreELEC_瞎弄 篇一:J3455NUC虚拟机安装LibreELEC核显直通HDMI输出
  13. 15 使用计算机应遵守行业道德规范,初中信息技术会考试题 -
  14. 2020-10-04
  15. 美国心脏协会:六种心血管疾病的症状区别
  16. 7-1 最长公共子序列 (20 分)
  17. 文因互联 CEO 鲍捷:确保搞砸人工智能项目的十种方法
  18. 以EOF结束输入 PTA 7-12 排序(数组)
  19. 【运筹学】线性规划 人工变量法 阶段总结 ( 使用 人工变量法 求解 线性规划 全过程详细解析 ) ★
  20. 成交量指标OBV详解及应用

热门文章

  1. 从Share your mind到RPO 攻击
  2. ENVI及IDL学习素材:视频,源码,培训教材
  3. 搭建属于自己的私有云Cloudreve+阿里云OSS+Windows服务器
  4. 机器视觉术语理解(WD,LWD,FOV,光学放大倍率,芯片尺寸、选型公式)(by shany shang)
  5. 导读:自己动手实现 JavaWeb 后台管理系统
  6. 俏也不争春――走近电子网络游戏(上)
  7. c语言%1f u001f,转义符
  8. 分之结构 if-else 三种结构
  9. 中学计算机课程教什么,中学信息技术课的课程设置及教学模式的探讨
  10. 源码环境下跟进MO通话流程(涉及到其中每一个方法的跳转)