深入浅出统计学 第一章 数据的可视化
序言
在深入浅出统计学的第一张中一共出现了4类图像:
1. 比较基本比例—>饼图
2. 比较数值的高低条形图(基本条形图,堆积条形图,分段条形图)
3. 连续数据的对比(等距直方图—>频数,非等距直方图—>频数密度)
4. 截止到某时间点的累计总量—>累积频数图
Python中是实现方式有两种,matplotlib和Pandas,一般而言直接使用Pandas即可.此处我们先给出Pandas中的实现,然后再做部分补充.数据我们依然使用数据探索那篇文章中用过的UCI红酒质量数据集.
本处最后区域图与散点图,六边形容器图代码与文字基本来自于Pandas的文档,仅仅略加修改,链接请参见文章末尾.
读取数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline# 定义读取数据的函数
def ReadAndSaveDataByPandas(target_url = None,file_save_path = None ,save=False):if target_url !=None:target_url = ("http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv") if file_save_path != None:file_save_path = "/home/fonttian/Data/UCI/Glass/glass.csv"wine = pd.read_csv(target_url, header=0, sep=";")if save == True:wine.to_csv(file_save_path, index=False)return winedef GetDataByPandas():wine = pd.read_csv("/home/font/Data/UCI/WINE/wine.csv")y = np.array(wine.quality)X = np.array(wine.drop("quality", axis=1))# X = np.array(wine)columns = np.array(wine.columns)return X, y, columns# X,y,names = GetDataByPandas()
# wine = pd.DataFrame(X)
wine = pd.read_csv("/home/font/Data/UCI/WINE/wine.csv")
print(list(wine.columns))print(set(wine['quality'].value_counts()))
print(wine['quality'].value_counts())
wine['quality'].value_counts().plot.pie(subplots=True,figsize=(8,8))
plt.show()
['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality']
{199, 681, 10, 18, 53, 638}
5 681
6 638
7 199
4 53
8 18
3 10
Name: quality, dtype: int64
df = pd.DataFrame(3 * np.random.rand(4, 2), index=['a', 'b', 'c', 'd'], columns=['x', 'y'])
print(df)
df.plot.pie(subplots=True, figsize=(16,8 ))
df.plot.pie(subplots=True,labels=['AA', 'BB', 'CC', 'DD'], colors=['r', 'g', 'b', 'c'],autopct='%.2f', fontsize=20, figsize=(16, 8))
plt.show()
x y
a 0.357865 0.423390
b 2.318759 2.089677
c 0.464072 0.502673
d 1.140500 2.779330
wine['quality'][0:10].plot(kind='bar',figsize=(16,8)); plt.axhline(0, color='k')
plt.show()
wine[['residual sugar','pH','quality']][0:10].plot.bar(figsize=(16,8))
wine[['residual sugar','pH']][0:10].plot.bar(figsize=(16,8),stacked=True)
wine[['residual sugar','pH']][0:10].plot.barh(figsize=(16,8),stacked=True)
plt.show()
# 普通画法
wine[['residual sugar','alcohol']].plot.hist(bin==20,figsize=(16,10),alpha=0.5)
# 分开画
wine[['residual sugar','alcohol']].hist(color='k', alpha=0.5, bins=50,figsize=(16,10))
plt.show()
df_hist = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000),'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df_hist.plot.hist(alpha=0.5)
plt.show()
# orientation='horizontal', 斜向
# cumulative=True, 是否累积
df_hist['b'].plot.hist(orientation='horizontal', cumulative=True)
plt.show()
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']][0:15].plot()
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']][0:15].cumsum().plot()
plt.show()
其他的常用图形
除了这几种图像之外,Pandas还提供了很多种其他的数据可视化方法,这里我们介绍其中较为简单和常用的几种余下的几种会在机器学习的数据探索中介绍,之前已经写过一篇简单的入门,余下内容日后补充—>https://blog.csdn.net/FontThrone/article/details/78188401
三种图像的作用
1. 箱型图 ---> 展示数据分布,发现异常点
2. 两种区域图 ---> 对比数据大小
3. 散点图,六边形容器图 ---> 数据分布与趋势
1.箱型图
在竖向的箱型图中从上到下的五个横线分别是,上界,上四分位数,中位数,下四分位数,下界,上下界以外的点可作为异常点的一个参考,这个图形在书中第三章有将为详细的解释
2.区域图
叠加与非叠加区域图,有点在于可以更好地比较区域(x * y)的大小
3.散点图与六边形容器图
可以一定程度上观察数据分布,比如发现数据分布的区域和分布趋势,对于发现数据分布的区域,或者找到一定的拟合规律还是有很大帮助的.有必要的话,还可以使用三维散点图,但是这需要matplotlib实现.
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']].plot.box()# vert=False, 横向
# positions=[1, 4, 6, 8], y轴位置
# color=color, 颜色
# sym='r+', 异常点的样式
color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']].plot.box(vert=False, positions=[1, 4, 6, 8],color=color,sym='r+')
plt.show()# pandas 自带接口 ----> boxplot(),此处不再演示
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']][0:15].plot.area()
wine[['fixed acidity', 'residual sugar', 'alcohol', 'quality']][0:15].plot.area(stacked=False)
plt.show()
# 可以使用DataFrame.plot.scatter()方法绘制散点图。散点图需要x和y轴的数字列。这些可以分别由x和y关键字指定。
df = pd.DataFrame(np.random.rand(50, 4), columns=['a', 'b', 'c', 'd'])
df.plot.scatter(x='a', y='b');# 要在单个轴上绘制多个列组,请重复指定目标ax的plot方法。建议使用color和label关键字来区分每个组。
ax = df.plot.scatter(x='a', y='b', color='black', label='Group 1');
df.plot.scatter(x='c', y='d', color='red', label='Group 2', ax=ax);
# 可以给出关键字c作为列的名称以为每个点提供颜色:
# 您可以传递matplotlib scatter支持的其他关键字。以下示例显示了使用数据框列值作为气泡大小的气泡图。
df.plot.scatter(x='a', y='b', c='c', s=50);
df.plot.scatter(x='a', y='b', s=df['c']*200);
您可以使用DataFrame.plot.hexbin()创建六边形箱图。如果数据过于密集而无法单独绘制每个点,则Hexbin图可能是散点图的有用替代方案。
df = pd.DataFrame(np.random.randn(1000, 2), columns=['a', 'b'])df['b'] = df['b'] + np.arange(1000)df.plot.hexbin(x='a', y='b', gridsize=25,figsize=(16,10))plt.show()
一个有用的关键字参数是gridsize;它控制x方向上的六边形数量,默认为100。更大的gridsize意味着更多,更小的分组。
默认情况下,计算每个(x, y)点周围计数的直方图。您可以通过将值传递给C和reduce_C_function参数来指定替代聚合。C specifies the value at each (x, y) point and reduce_C_function is a function of one argument that reduces all the values in a bin to a single number (e.g. mean, max, sum, std). 在这个例子中,位置由列a和b给出,而值由列z给出。箱子与numpy的max函数聚合。
df = pd.DataFrame(np.random.randn(1000, 2), columns=['a', 'b'])df['b'] = df['b'] = df['b'] + np.arange(1000)df['z'] = np.random.uniform(0, 3, 1000)df.plot.hexbin(x='a', y='b', C='z', reduce_C_function=np.max,gridsize=25,figsize=(16,10))plt.show()
参考文章
1.Pandas0.19.2 中文文档 可视化
2.Pandas最新文档 可视化
3.本人去年写的数据探索入门级文章
深入浅出统计学 第一章 数据的可视化相关推荐
- 第一章 数据与大数据
大数据导论 昨天出去玩了回来之后实在是太困太困了,早上看了一些内容,在晚上的时候电脑都准备打开来写写,但是就完全睁不开眼睛了,今天来补一下.这两次看的都还是一些概念性的问题,没有关于技术的,实在是有点 ...
- 【TL第二期】动手学数据分析-第一章 数据基本操作
文章目录 第一章 第一节 数据载入与初步观察 0 导库 1 载入数据 2 查看数据基本信息 第二节 pandas基础 1 数据类型DataFrame 和 Series 2 对文件数据的基本操作 3 数 ...
- 数据平台-第一章-数据质量提升
2019独角兽企业重金招聘Python工程师标准>>> 概述 元数据为数据数据平台提供了一致的描述信息,描述系统的结构特征和静态特征,并作为控制性信息,控制并配置特定工具和进程运行, ...
- 第一章 数据集散地:数据库
1.数据库的作用: a) 存储大量数据,方便检索和访问 b) 保持数据信息的一致.完整 c) 共享和安全 d) 通过组合分析,产生新的有用信息 2.应用程序运行的原理: 应用程序---请求数据requ ...
- 深入浅出聊Taier—大数据分布式可视化DAG任务调度系统
导读: 上周,袋鼠云数栈全新技术开源规划--DTMO(DTstack Meetup Online)的第一场直播圆满完成.袋鼠云数栈大数据开发专家.Taier项目主导人偷天为大家带来了<Taier ...
- 数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言
文章目录 前言 一.基本介绍 二.在SQL里执行T-SQL语句 三.数据定义语言(DDL) (一)概述 (二)数据定义语言用于数据库 1.创建数据库 2.修改数据库 3.使用数据库 4.删除数据库 5 ...
- 统计学第一章--最小二乘拟合正弦函数,正则化
#coding:utf-8 import numpy as np import scipy as sp from scipy.optimize import leastsq import matplo ...
- 第一章 数据资产的定义
随着数据被列为与土地.劳动力.资本.技术并列的生产要素,这意味着数据是一种宝贵资产已经成为社会共识,数据资产时代已经到来. 那么到底什么是数据资产,在法律规章层面,虽然尚未对数据或数据资产做出正式的统 ...
- 深入浅出统计学 第二三章 量度
量度 两类量度: (1) 集中趋势的量度->平均值,中位数,众数 (2) 分散性与变异性的亮度->全距(极值),四分位数(扩展:箱型图),方差与标准差,标准分 获取数据 import pa ...
最新文章
- 解密「天池」:如何做好一场万人AI竞赛的「大后方」?
- Win8 Metro(C#)数字图像处理--2.60部分彩色保留算法
- 列表和字典之间的相互转换-Python3
- Python_堆栈和队列
- python缺少标准库_干货分享:Python如何自动导入缺失的库
- python 日志 logging模块(详细解析)
- springMVC分析-1
- 关于js里的那一堆事件
- PS制作或编辑gif动态图
- 闲鱼卖货,月入1.5w的小众类目分享。
- 目标检测入坑指南3:VGGNet神经网络
- 网页开发工具有哪些?——开发者必备的15个Web开发工具
- Mysql 认证步骤
- 利用python进行数据分析数据集_《利用Python进行数据分析》终章·数据分析案例·学习笔记(二)...
- linux服務器重啟後自動啟動java項目的腳本配置
- 机器学习 大数据 数据挖掘_什么是机器学习? 来自数据的情报
- un8.22:前端页面详情页面(代码篇)。
- 数据集CollectionTP5报Cannot use object of type __PHP_Incomplete_Class as array错误
- Python开发工具之Pycharm最新安装教程
- AD域是什么意思?有什么用?