当前位置: 首页 > article >正文

人工智能数据分析Python常用库 05 seaborn、pandas库绘图

文章目录

  • 一、seaborn库绘图
    • 1、matplotlib与seaborn折线图对比
    • 2、matplotlib与seaborn柱形图对比
    • 3、以鸢尾花数据集为例
  • 二、pandas库绘图
    • 1、线形图
    • 2、柱形图
    • 3、直方图和密度图
    • 4、散点图
    • 5、多子图

一、seaborn库绘图

seaborn是一个基于matplotlib,且数据结构与pandas统一的统计图制作库。

1、matplotlib与seaborn折线图对比

matplotlib作图:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 500)

# np.cumsum()计算累加和,每一行元素都是其及其上所有行元素之和
# axis=0表示沿着列方向计算,即在同一列,逐行元素相加
y = np.cumsum(np.random.randn(500, 6), axis=0)

with plt.style.context("classic"):
    plt.plot(x, y)
    plt.legend("ABCDEF", ncol=2, loc="upper left")  # ncol=2 表示图例中有2列

plt.show()

在这里插入图片描述


seaborn作图:

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

x = np.linspace(0, 10, 500)

# np.cumsum()计算累加和,每一行元素都是其及其上所有行元素之和
# axis=0表示沿着列方向计算,即在同一列,逐行元素相加
y = np.cumsum(np.random.randn(500, 6), axis=0)

sns.set()   # 使用 Seaborn 的默认样式设置
plt.plot(x, y)
plt.legend("ABCDEF", ncol=2, loc="upper left")
plt.show()

在这里插入图片描述

2、matplotlib与seaborn柱形图对比

matplotlib作图:

import matplotlib.pyplot as plt
import numpy as np

x = ["G" + str(i) for i in range(1, 6)]
y = 2 * np.arange(1, 6)

plt.figure(figsize=(8, 4))
plt.barh(x, y, align="center", height=0.5, alpha=0.8, color="blue")
plt.tick_params(axis="both", labelsize=13)

plt.show()

在这里插入图片描述


seaborn作图:
  注: 在 Seaborn 2.0 版本 之后,sns.barplot() 不再支持仅靠位置参数传递 x, y,必须使用关键字参数。

Seaborn 默认:
  垂直柱状图:类别变量在 X 轴,数值变量在 Y 轴(默认 sns.barplot(x=类别, y=数值))。
  水平柱状图:类别变量在 Y 轴,数值变量在 X 轴(sns.barplot(x=数值, y=类别))。

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


x = ["G5", "G4", "G3", "G2", "G1"]
y = 2 * np.arange(5, 0, -1)

sns.barplot(x=y, y=x, linewidth=5)
plt.show()

在这里插入图片描述

3、以鸢尾花数据集为例

import matplotlib.pyplot as plt
import seaborn as sns

# 加载 Seaborn 自带的 iris 数据集
# 返回的变量iris为pandas的DataFrame类型
iris = sns.load_dataset("iris")

# sns.pairplot()生成的每个子图,都是数据集中两两特征组合的可视化
# 对角线上的图 是该变量本身的分布(默认是直方图)
# hue="species" 让不同物种以不同颜色显示。
sns.pairplot(data=iris, hue="species")

plt.show()

在这里插入图片描述


查看数据集iris前5行数据:

import seaborn as sns

iris = sns.load_dataset("iris")
print(iris.head())

二、pandas库绘图

1、线形图

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

df = pd.DataFrame(np.random.randn(1000,4).cumsum(axis=0),
                  columns=list("ABCD"),
                  index=np.arange(1000))

# print(df.head())

# 使用 Pandas 提供的 plot() 方法生成折线图
# 每一列产生一条折线
df.plot()
plt.show()

在这里插入图片描述

2、柱形图

多组数据竖图:

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

df = pd.DataFrame(np.random.randn(10,4),
                  columns=list("ABCD"))

print(df.head())

# 每一列产生一个柱形图
df.plot.bar()
plt.show()

在这里插入图片描述


多组数据累加竖图:

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

df = pd.DataFrame(np.random.randn(10,4),
                  columns=list("ABCD"))

print(df.head())

# 每一列产生一个柱形图
df.plot.bar(stacked=True)
plt.show()

在这里插入图片描述


多组数据累加横图:

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

df = pd.DataFrame(np.random.randn(10,4),
                  columns=list("ABCD"))

print(df.head())

# 每一列产生一个柱形图
df.plot.barh(stacked=True)
plt.show()

在这里插入图片描述

3、直方图和密度图

普通直方图:

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

df = pd.DataFrame({"A": np.random.randn(1000) + 3,
                   "B": np.random.randn(1000),
                   "C": np.random.randn(1000) - 3})

print(df.head())

df.plot.hist(bins=20)
plt.show()

在这里插入图片描述


累加直方图:

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

df = pd.DataFrame({"A": np.random.randn(1000) + 3,
                   "B": np.random.randn(1000),
                   "C": np.random.randn(1000) - 3})

print(df.head())

# 这里只画了A数据的图
# 在 x 轴上,显示 "A" 数据的数值范围;
# 在 y 轴上,表示每个区间值的累积频数。
df["A"].plot.hist(cumulative=True)
plt.show()

在这里插入图片描述


概率密度图:
注:用核密度估计(Kernel Density Estimation, KDE) 来画图,这种图形方式展示的是数据的平滑概率密度函数,可以让你看到数据分布的形态。

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

df = pd.DataFrame({"A": np.random.randn(1000) + 3,
                   "B": np.random.randn(1000),
                   "C": np.random.randn(1000) - 3})

print(df.head())

# 这里只画了A数据的图
df["A"].plot(kind="kde")
plt.show()

在这里插入图片描述

4、散点图

housing.csv文件:
  链接: https://pan.baidu.com/s/1Gj51eGj1G_X8TL4-v2gm7Q
  提取码: 2adm


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

housing = pd.read_csv("housing.csv")    # housing为DataFrame类型
print(housing.head())

# 基于地理数据的人口、房价可视化
with sns.axes_style("white"):
    housing.plot(kind="scatter", x="longitude", y="latitude", alpha=0.6,
                 s=housing["population"]/100, label="population",
                 c="median_house_value", cmap="jet", colorbar=True)
plt.legend()
plt.axis([-125, -113.5, 32, 43])    # 设置图表的坐标轴范围
plt.show()

在这里插入图片描述

5、多子图

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

df = pd.DataFrame(np.random.randn(1000,4).cumsum(axis=0),
                  columns=list("ABCD"),
                  index=np.arange(1000))
print(df.head())

# sharex=False:每个子图的 x 轴独立,即每个子图都有自己的 x 轴。
df.plot(subplots=True, figsize=(6, 16),layout=(2,2),sharex=False)
plt.show()

在这里插入图片描述


http://www.kler.cn/a/619575.html

相关文章:

  • 探究 CSS 如何在HTML中工作
  • 双非一本Java方向,学完感觉Java技术含量不高,考研换方向如何选择?
  • Rust Web开发新选择:探索轻量级框架Hyperlane的高效实践
  • 基于Java与Go的下一代DDoS防御体系构建实战
  • 在 i.MX8MP 上用 C++ 调用豆包 AI 大模型实现图像问答
  • 计算机网络复习(第二天)
  • 关于伽马变换小记
  • Kafka中的消息是如何存储的?
  • 汽车方向盘开关功能测试的技术解析
  • 人工智能与软件工程结合的发展趋势
  • VScode配置默认终端为Anaconda Prompt
  • Scala 基础语法
  • PPT——组合SCI论文图片
  • 基于SpringBoot + Vue 的校园周边美食探索及分享平台
  • Uni-app页面信息与元素影响解析
  • 蓝桥杯 双子数
  • SLAM——多传感器标定
  • EtherCAT转ProfiNet协议转换网关构建西门子PLC与海克斯康机器人的冗余通信链路
  • 具身机器人(Embodied Robotics)技术架构与发展路径
  • PostgreSQL学习之一次一密口令认证(TOTP)