数据分析-Pandas数据的直方图探查

数据分析-Pandas数据的直方图探查

数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律?

数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中重新调整,重塑数据表是很重要的技巧,此处选择Titanic数据,以及巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2数据作为样例。

数据分析

数据分析-Pandas如何转换产生新列

数据分析-Pandas如何统计数据概况

数据分析-Pandas如何轻松处理时间序列数据

数据分析-Pandas如何选择数据子集

数据分析-Pandas如何重塑数据表-CSDN博客

经典算法

经典算法-遗传算法的python实现

经典算法-模拟退火算法的python实现

经典算法-粒子群算法的python实现-CSDN博客

本文用到的样例数据:

Titanic数据

空气质量监测 N O 2 NO_2 NO2数据

样例代码:

源代码参考 Pandas如何重塑数据表

源代码参考 python数据分析-数据表读写到pandas

导入关键模块

python 复制代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.close("all")

很多时候数据的比例总和能否为1,有可能不成立,比如它们如果是不同的属性,那是没有办法的。但是又需要探查哪个属性的出行频度,比例关系,这时候可以试试直方图。它是不同数值的出现频度,也就是计数,或者计数的比例关系。

探究数据的数值频度关系

直方图在图像处理中很常见,查看像素的亮度数值,如何把数值的分布展示呢?比如,想知道一幅图像的亮度的数值多少和比例。

该例使用随机生成数据来举例。

python 复制代码
np.random.seed(36)

df4 = pd.DataFrame(
    {
        "a": np.random.randn(1000) + 1,
        "b": np.random.randn(1000),
        "c": np.random.randn(1000) - 1,
    },
    columns=["a", "b", "c"],
)

plt.figure();
df4.plot.hist(alpha=0.5);

多组直方图堆叠关系

各列数值的和是统计对象,但是各列其实是分类的分组,例如医学里面的常见药物效果对照,一组是服药,一组是安慰剂,想查看它们之间的关系,需要在一幅图展示,怎么办?

当然,只需要设定参数 stacked=True,此处为了更多细节,设置了bins参数

python 复制代码
plt.figure();

df4.plot.hist(stacked=True, bins=20);

累积直方图

累积直方图就是小于该数值的数量都累加,最后的数值为总量,如果是比例关系的话,就是1.0。

只要设置 cumulative参数就行,当然,如果需要躺平,也可以设置方向参数orientation。

python 复制代码
plt.figure();

df4["a"].plot.hist( cumulative=True);

plt.figure();

df4["a"].plot.hist(orientation="horizontal", cumulative=True);


多列直方图

python 复制代码
df4 = pd.DataFrame(
    {
        "a": np.random.randn(1000) + 1,
        "b": np.random.randn(1000),
        "c": np.random.randn(1000) - 1,
        "d": np.random.randn(1000) + 2,
    },
    columns=["a", "b", "c", "d"],
)

df4.diff().hist(color="k", alpha=0.5, bins=50);

分组直方图

复制代码
data = pd.Series(np.random.randn(1000))
data.hist(by=np.random.randint(0, 4, 1000), alpha=0.5, bins=20, figsize=(6, 4));
复制代码
data = pd.DataFrame(
    {
        "a": np.random.choice(["x", "y", "z"], 1000),
        "b": np.random.choice(["e", "f", "g"], 1000),
        "c": np.random.randn(1000),
        "d": np.random.randn(1000) - 1,
    },
)
data.plot.hist(by=["a", "b"], alpha=0.5, bins=20, figsize=(10, 10));

以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。

后面介绍下其他的展示形式。

python 复制代码
df.plot.area     df.plot.barh     df.plot.density  df.plot.hist     df.plot.line 
df.plot.bar      df.plot.box      df.plot.hexbin   df.plot.kde      df.plot.pie
df.plot.scatter

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

End

GPT专栏文章:

GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

大模型查询工具助手之股票免费查询接口

GPT实战系列-简单聊聊LangChain

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-ChatGLM2模型的微调训练参数解读

GPT实战系列-如何用自己数据微调ChatGLM2模型训练

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-Baichuan2本地化部署实战方案

GPT实战系列-Baichuan2等大模型的计算精度与量化

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-探究GPT等大模型的文本生成-CSDN博客

相关推荐
ljuncong4 分钟前
python的装饰器怎么使用
开发语言·python
该用户已不存在17 分钟前
没有这7款工具,难怪你的Python这么慢
后端·python
serve the people22 分钟前
tensorflow 零基础吃透:RaggedTensor 的不规则形状与广播机制 2
人工智能·python·tensorflow
Hello.Reader24 分钟前
Flink ML 基本概念Table API、Stage、Pipeline 与 Graph
大数据·python·flink
chen_note26 分钟前
Python面向对象、并发编程、网络编程
开发语言·python·网络编程·面向对象·并发编程
信看27 分钟前
树莓派CAN(FD) 测试&&RS232 RS485 CAN Board 测试
开发语言·python
brent42327 分钟前
DAY24推断聚类后簇的类型
python
Niuguangshuo28 分钟前
解密GPT的生成魔法:自回归模型
gpt·数据挖掘·回归
测试199832 分钟前
一个只能通过压测发现Bug
自动化测试·软件测试·python·selenium·测试工具·bug·压力测试
占疏38 分钟前
df数据 按列 提取为单个列表
pandas