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

文章目录

一、seaborn库绘图

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

1、matplotlib与seaborn折线图对比

matplotlib作图:

python 复制代码
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作图:

python 复制代码
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作图:

python 复制代码
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=类别))。

python 复制代码
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、以鸢尾花数据集为例

python 复制代码
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行数据:

python 复制代码
import seaborn as sns

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

二、pandas库绘图

1、线形图

python 复制代码
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、柱形图

多组数据竖图:

python 复制代码
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()

多组数据累加竖图:

python 复制代码
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()

多组数据累加横图:

python 复制代码
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、直方图和密度图

普通直方图:

python 复制代码
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()

累加直方图:

python 复制代码
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) 来画图,这种图形方式展示的是数据的平滑概率密度函数,可以让你看到数据分布的形态。

python 复制代码
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


python 复制代码
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、多子图

python 复制代码
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()
相关推荐
187877086093 分钟前
妙响和Mureka怎么选,AI音乐工具真实使用对比
人工智能
Bode_20024 分钟前
制造业的知识因果推理网
人工智能·智能工厂
梦想的颜色4 分钟前
【AI科普】什么是计算机视觉:硬核科普,它和大 AI 大模型到底是什么关系
人工智能·深度学习·计算机视觉·多模态·aiagent·#vlm·ai工程实战
whitelbwwww9 分钟前
RKNN静态量化
人工智能·深度学习
Henry-SAP11 分钟前
AI标准落地加速 安全与应用双突破
人工智能·云原生·sap·erp
zzzll111115 分钟前
LangChain4j:Java 生态的 AI 应用开发利器
java·开发语言·人工智能
卷无止境17 分钟前
Coding Agent 里的上下文 Compact,到底在压缩什么
后端·python
卷无止境19 分钟前
社区里最好用的 Deep Research 技能,到底藏在哪几个仓库里
人工智能
飞哥数智坊26 分钟前
2步,TRAE SOLO 帮你画出架构图
人工智能
Patrick在香港29 分钟前
Claude Prompt Caching 实测账单:第一轮贵 25%,从第二轮开始省 86%
python·prompt·claude·成本优化·prompt缓存·anthropic api