数据分析-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博客

相关推荐
码界奇点14 分钟前
Python Flask文件处理与异常处理实战指南
开发语言·python·自然语言处理·flask·python3.11
浠寒AI19 分钟前
智能体模式篇(上)- 深入 ReAct:LangGraph构建能自主思考与行动的 AI
人工智能·python
行云流水剑1 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
心扬2 小时前
python生成器
开发语言·python
mouseliu2 小时前
python之二:docker部署项目
前端·python
狂小虎3 小时前
亲测解决self.transform is not exist
python·深度学习
Python智慧行囊3 小时前
Python 中 Django 中间件:原理、方法与实战应用
python·中间件·架构·django·开发
深科文库3 小时前
构建 MCP 服务器:第 3 部分 — 添加提示
服务器·python·chatgpt·langchain·prompt·aigc·agi
蓝婷儿3 小时前
6个月Python学习计划 Day 17 - 继承、多态与魔术方法
开发语言·python·学习