Matplotlib 应用

1、

Matplotlib 中文Matplotlib中文网、Matplotlib官方中文文档。https://www.matplotlib.org.cn/

2、Matplotlib 教程 | 菜鸟教程Matplotlib 教程 Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。 Matplotlib 可以用来绘制各种静态,动态,交互式的图表。 Matplotlib 是一个非常强大的 Python 画图工具,我们可以使用该工具将很多数据通过图表的形式更直观的呈现出来。 Matplotlib 可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。..https://www.runoob.com/matplotlib/matplotlib-tutorial.html

3、Matplotlib_AIHub社区Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。本社区召集管理运营志愿者,有意者请联系https://www.kuxai.com/f/matplotlib

4、

数据可视化是什么通过前面的学习,我们知道 matplotlib.pyplot 模块能够快速地生成图像,但如果使用面向对象的编程思想,我们就可以更好地控制和自定义图像。 在 Matplotlib 中,面向对象编程的核心思想是http://c.biancheng.net/matplotlib/data-visual.html

5、

matplotlib绘图入门详解 - 简书https://www.jianshu.com/p/da385a35f68d

6、

Python--Matplotlib(基本用法)_苦作舟的人呐-CSDN博客_matplotlibhttps://blog.csdn.net/qq_34859482/article/details/80617391

7、

matplotlib(一)——pyplot使用简介_CUG_UESTC的博客-CSDN博客_pyplothttps://blog.csdn.net/qq_31192383/article/details/53977822

8、

Matplotlib_百度百科https://baike.baidu.com/item/Matplotlib/20436231?fr=aladdin

9、

绘图: matplotlib核心剖析 - Vamei - 博客园https://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html

10、

Matplotlib 可视化最有价值的 50 个图表(附完整 Python 源代码)_搜狐汽车_搜狐网https://www.sohu.com/a/285138406_671965

11、

Matplotlib 教程 | 始终http://liam.page/2014/09/11/matplotlib-tutorial-zh-cn/

12、

数据分析之matplotlib详解_!一直往南方开.的博客-CSDN博客_matplotlib数据分析https://blog.csdn.net/qq_44205272/article/details/102509441

13、

数据分析之matplotlib扩展篇——pyecharts绘图_!一直往南方开.的博客-CSDN博客https://blog.csdn.net/qq_44205272/article/details/103210310

14、Python--Matplotlib(基本用法)_苦作舟的人呐-CSDN博客_matplotlibhttps://blog.csdn.net/qq_34859482/article/details/80617391

15、Python- matplotlib使用方法大全 - Yi_warmth - 博客园https://www.cnblogs.com/zhouzetian/p/12726528.html

16、平面图和3D图(坐标系)

        

import matplotlib.pyplot as plt

# 平面图形
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
plt.show()  # 显示图像

# 3D图形
# fig = plt.figure()
# ax = fig.gca(projection='3d')
# plt.show()

17、生产四个平面图形(坐标系)

import matplotlib.pyplot as plt

# 生产四个平面图形
fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)
plt.show()  # 显示图像


18、subplot2grid()函数,画折线图和柱状图

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(6)
y = np.arange(6)

#  直接调用subplot2grid()函数,不需要先建立画布。
#  建立折线图
plt.subplot2grid((2, 2), (0, 0))
plt.plot(x, y)
plt.show()

#  建立柱形图
plt.subplot2grid((2, 2), (0, 1))
plt.bar(x, y)
plt.show()




19、subplot()函数的用法

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(6)
y = np.arange(6)

# subplot()函数的用法
# 将图表的整个区域分成2行2列,且在第1个坐标系上做折线图
plt.subplot(2, 2, 1)
plt.plot(x, y)
plt.show()

# 将图表的整个区域分成2行2列,且在第4个坐标系上做柱形图
plt.subplot(2, 2, 4)
plt.bar(x, y)
plt.show()




20、subplots() 函数的应用

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

x = np.arange(6)
y = np.arange(6)

# subplots() 函数的应用
fig, axes = plt.subplots(2, 2)

#  在[0, 0]坐标系中绘制折线图
axes[0, 0].plot(x, y)
#  在[1, 1]坐标系中绘制柱状图
axes[1, 1].bar(x, y)
# 设置x轴和y轴的标题
plt.xlabel("月份")
plt.ylabel("注册量")
plt.show()

21、指定设置x轴与y轴的值

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# xticks() 函数的应用
# 指定x轴与y轴的值
# plt.xticks(np.arange(9), ["一月", "二月", "三月", "四月", "五月", "六月", "七月"
#                           , "八月", "九月"])
# plt.yticks(np.arange(1000, 7000, 1000), ["1000人", "2000人", "3000人", "4000人", "5000人", "6000人"])
# plt.show()

# 指定设置x轴与y轴的值xlim与ylim函数
plt.xlim(1, 10)
plt.ylim(1, 9999)
plt.show()




22、简单的折线图

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 简单的折线图
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([866, 1245, 3456, 2134, 4556, 9871, 2376, 3452, 999])
plt.subplot(2, 1, 1)
plt.plot(x, y)
plt.xlabel("月份")
plt.ylabel("注册人数")

# 添加网络格式
plt.grid(b="True")
# # 只打开x轴的网络线
plt.grid(axis="x")
# 只打开y轴的网络线
plt.grid(axis="y")
# linestyle线型设置成虚线,线宽设置成1
plt.grid(linestyle="dashed", linewidth=1)

plt.show()



23、折线图和柱状图组合

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 简单的折线图和柱状图组合。
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([866, 1245, 3456, 2134, 4556, 5871, 2376, 3452, 999])
plt.subplot(2, 1, 1)
plt.plot(x, y, label="折线图")
plt.bar(x, y, label="柱状图")
# loc来调整图例的显示位置
plt.legend(loc="upper right")  # loc=1 效果一样
plt.xlabel("月份")
plt.ylabel("注册人数")
plt.show()



24、图标标题设置,loc代表放在的位置

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 简单的折线图和柱状图组合。
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([866, 1245, 3456, 2134, 4556, 5871, 2376, 3452, 999])
plt.subplot(2, 1, 1)
plt.plot(x, y, label="折线图")
plt.bar(x, y, label="柱状图")
# loc来调整图例的显示位置
plt.legend(loc="upper right")  # loc=1 效果一样
plt.xlabel("月份")
plt.ylabel("注册人数")
# 图标标题设置,loc代表放在的位置
plt.title("1-9月阿里巴巴销售额", loc="center")
plt.show()

25、每个值加上标签

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 简单的折线图和柱状图组合。
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([866, 1245, 3456, 2134, 4556, 5871, 2376, 3452, 999])
plt.subplot(2, 1, 1)
plt.plot(x, y, label="折线图")
plt.bar(x, y, label="柱状图")
# loc来调整图例的显示位置
plt.legend(loc="upper right")  # loc=1 效果一样
plt.xlabel("月份")
plt.ylabel("注册人数")
# 图标标题设置,loc代表放在的位置
plt.title("1-9月阿里巴巴销售额", loc="center")
# 每个值加上标签
for a, b in zip(x, y):
    plt.text(a, b, b, ha="center", va="bottom", fontsize=11)

plt.show()

26、折线图设置成虚线,linestyle="dashdot"

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 简单的折线图和柱状图组合。
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([866, 1245, 3456, 2134, 4556, 5871, 2376, 3452, 999])
plt.subplot(2, 1, 1)
plt.plot(x, y, label="折线图", linestyle="dashdot")
plt.bar(x, y, label="柱状图")
# loc来调整图例的显示位置
plt.legend(loc="upper right")  # loc=1 效果一样
plt.xlabel("月份")
plt.ylabel("注册人数")
# 图标标题设置,loc代表放在的位置
plt.title("1-9月阿里巴巴销售额", loc="center")
# 每个值加上标签
for a, b in zip(x, y):
    plt.text(a, b, b, ha="center", va="bottom", fontsize=11)

plt.show()

27、生成柱状图和并保存图片

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 简单的折线图和柱状图组合。
x = np.array(["上区", "下区", "左区", "右区"])
y = np.array([3456, 2134, 4556, 5871])
plt.subplot(1, 1, 1)
plt.bar(x, y, label="任务量", width=0.5, align="center")
# 图标标题设置,loc代表放在的位置
plt.title("各分区任务量", loc="center")
# 每个值加上数据标签
for a, b in zip(x, y):
    plt.text(a, b, b, ha="center", va="bottom", fontsize=11)
# loc来调整图例的显示位置
plt.legend(loc="upper center")  # loc=1 效果一样
plt.xlabel("分区")
plt.ylabel("任务量")
# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/savePicture.jpg")

plt.show()

28、簇状图和保存图片

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False
# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明 x 和 y值
x = np.array([1, 2, 3, 4])
y1 = np.array([7456, 9134, 8556, 6871])
y2 = np.array([3456, 2134, 1556, 2871])

plt.bar(x, y1, label="任务量", width=0.3)  # 柱形图的宽度为0.5
plt.bar(x+0.3, y2, label="完成量", width=0.3)  # 把完成量的柱子右移0.5
# 图标标题设置,loc代表放在的位置
plt.title("各分区任务量和完成量情况", loc="center")
# 每个值加上数据标签
for a, b in zip(x, y1):
    plt.text(a, b, b, ha="center", va="bottom", fontsize=12)
for a, b in zip(x+0.3, y2):
    plt.text(a, b, b, ha="center", va="bottom", fontsize=12)
# loc来调整图例的显示位置
plt.legend(loc="upper right")  # loc=1 效果一样
plt.xlabel("区域")
plt.ylabel("任务情况")

# 设置x轴刻度值
plt.xticks(x+0.15, ["东区", "南区", "西区", "北区"])
# 不设置网络线
plt.grid(False)

# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/savePicture2.jpg")

plt.show()

29、堆积柱形图和保存图片

import matplotlib.pyplot as plt
import numpy as np

# 堆积柱状图实例

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False
# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明 x 和 y值
x = np.array(["东区", "南区", "西区", "北区"])
y1 = np.array([7456, 9134, 8556, 6871])
y2 = np.array([3456, 2134, 1556, 2871])

# 绘图柱形图的宽度为0.3
plt.bar(x, y1, label="任务量", width=0.3)  # 柱形图的宽度为0.3
plt.bar(x, y2, label="完成量", width=0.3)  # 柱形图的宽度为0.3
# 图标标题设置,loc代表放在的位置
plt.title("各分区任务量和完成量情况", loc="center")

# 每个值加上数据标签
for a, b in zip(x, y1):
    plt.text(a, b, b, ha="center", va="bottom", fontsize=12)
for a, b in zip(x, y2):
    plt.text(a, b, b, ha="center", va="top", fontsize=12)
# loc来调整图例的显示位置
plt.legend(loc="upper right")  # loc=1 效果一样

# 设置x轴和y轴的名称
plt.xlabel("区域")
plt.ylabel("任务情况")

# 不设置网络线
plt.grid(False)
# ncol 的意思是放一排,还是放两排
plt.legend(loc="upper right", ncol=2)

# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/savePicture3.jpg")

plt.show()

30、绘制条形图和保存图片

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False
# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明 x 和 y值
# x = np.array(["东区", "南区", "西区", "北区"])
x = np.array([1, 2, 3, 4])
y = np.array([7456, 9134, 8556, 6871])


# 绘图条形图,width指明条形图的宽度,align指明条形图的位置,
#
plt.barh(x, height=0.5, width=y, align="center")
# 图标标题设置,loc代表放在的位置
plt.title("全国各分区任务量情况", loc="center")

# 每个值加上数据标签
for a, b in zip(x, y):
    plt.text(b, a, b, ha="center", va="center", fontsize=12)

# 设置x轴和y轴的名称
plt.ylabel("区域")
plt.xlabel("任务情况")

plt.yticks(x, ["东区", "南区", "西区", "北区"])
# 不设置网络线
plt.grid(False)

# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/savePicture5.jpg")

plt.show()

31、绘制散点图与保存图片

import matplotlib.pyplot as plt
import numpy as np


# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False
# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明 x 和 y值
x = np.array([5.5, 6.6, 8.1, 15.8, 19.5, 22.4, 28.3, 28.9])
y = np.array([2.38, 3.85, 4.41, 5.67, 5.44, 6.03, 8.15, 6.87])

# 绘图
colors = y * 10  # 根据y值的大小生成不同的颜色
area = y * 100  # 根据y值的大小生成大小不同的形状
plt.scatter(x, y, marker="o", c=colors, s=area)
# 图标标题设置,loc代表放在的位置
plt.title("1-8月天气与啤酒的销量关系图", loc="center")

# 每个值加上数据标签
for a, b in zip(x, y):
    plt.text(a, b, b, ha="center", va="center", fontsize=12)

# 设置x轴和y轴的名称
plt.xlabel("平均气温")
plt.ylabel("啤酒销量")

# 不设置网络线
plt.grid(False)

# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/scatterPicture.jpg")

plt.show()

32、绘制面积图和保存图片

import matplotlib.pyplot as plt
import numpy as np

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False
# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明 x 和 y值
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y1 = np.array([238, 385, 441, 567, 544, 603, 815, 687, 981])
y2 = np.array([438, 585, 641, 967, 844, 703, 215, 287, 876])

# 绘图
labels = ["注册人数", "活跃人数"]  # 指明系列标签
plt.stackplot(x, y1, y2, labels=labels)
# 图标标题设置,loc代表放在的位置
plt.title("阿里巴巴1-9月注册与激活人数", loc="center")

# 每个值加上数据标签
for a, b in zip(x, y1):
    plt.text(a, b, b, ha="center", va="top")
for a, b in zip(x, y2):
    plt.text(a, b, b, ha="center", va="top")

# 设置x轴和y轴的名称
plt.xlabel("月份")
plt.ylabel("注册与激活人数")

# 不设置网络线
plt.grid(False)

# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/stackPicture.jpg")

plt.show()

33、squarify绘制树地图和保存图片

import matplotlib.pyplot as plt
import numpy as np
import squarify

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False


# 指定每一块大小
size = np.array([3.4, 0.693, 0.585, 0.570, 0.562, 0.531,
                 0.530, 0.524, 0.501, 0.478, 0.468, 0.436])

# 指定每一块的文字标签
xingzuo = np.array(["未知", "摩羯座", "天秤座", "双鱼座", "天蝎座", "金牛座", "处女座", "双子座", "射手座", "狮子座", "水瓶座", "白羊座"])
# 指定每一块的数值标签
rate = np.array(["34%", "6.93%", "5.85%", "5.70%", "5.62%", "5.31%",
                 "5.30%", "5.24%", "5.01%", "4.78%", "4.68%", "4.36%"])
# 指定每一块的颜色
colors = ['steelblue', '#9999ff', 'red', 'indianred',
          'green', 'yellow', 'orange']

# 绘图
plot = squarify.plot(sizes=size,
                     label=xingzuo, color=colors, value=rate,
                     edgecolor='white', linewidth=3
                     )
# 设置标题大小
plt.title('菊粉星座分布', fontdict={'fontsize': 12})
# 除坐标轴
plt.axis('off')
# 去除上边框和右边框的刻度
plt.tick_params(top='off', right='off')

# 图片保存的位置
plt.savefig("C:/Users/Administrator/Desktop/456999/shudituPicture.jpg")

plt.show()

34、绘制雷达图和保存图片

import matplotlib.pyplot as plt
import numpy as np
import squarify

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# polar 等于true表示建立一个极坐标系
plt.subplot(111, polar=True)
# 把整个圆分成4份
dataLenth = 4
# 表示在指定的间隔内返回均匀间隔的数字
angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False)

labels = ['沟通能力', '业务理解能力', '逻辑思维能力', '快速学习能力', '工具使用能力']

data = [2, 3.5, 4, 4.5, 5]
data = np.concatenate((data, [data[0]]))  # 闭合
angles = np.concatenate((angles, [angles[0]]))  # 闭合

# 绘图
plt.polar(angles, data, color="r", marker='o')
# 设置x轴刻度
plt.xticks(angles, labels)
# 设置标题
plt.title("学数据分析师的总和评级")
plt.savefig("C:/Users/Administrator/Desktop/456999/leidaPicture.jpg")

plt.show()

35、绘制箱形图和保存图片

import matplotlib.pyplot as plt
import numpy as np


# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明x值
y1 = np.array([568, 987, 821])
y2 = np.array([168, 387, 221])
x = [y1, y2]

# 绘图
labels = ["注册人数", "激活人数"]
plt.boxplot(x, labels=labels, vert=True, widths=[0.2, 0.5])


# 设置标题
plt.title("阿里巴巴1-9月注册与激活人数", loc="center")
plt.grid(False)
plt.savefig("C:/Users/Administrator/Desktop/456999/xiangxituPicture.jpg")

plt.show()

36、绘制饼图和保存图片

import matplotlib.pyplot as plt
import numpy as np


# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明x值
x = np.array([8566, 5335, 7310, 6482])

# 绘图
labels = ["东区", "北区", "南区", "北区"]
explode = [0.07, 0, 0, 0]
labeldistance = 1.1
plt.pie(x, labels=labels, autopct="%.0f%%",  explode=explode,
        radius=1.0, labeldistance=labeldistance)

# 设置标题
plt.title("全国各区域任务量占比", loc="center")
plt.grid(True)
plt.savefig("C:/Users/Administrator/Desktop/456999/bingTuPicture.jpg")

plt.show()

37、绘制环形图和保存图片

import matplotlib.pyplot as plt
import numpy as np


# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 建立一个坐标系
plt.subplot(1, 1, 1)

# 指明x值
x1 = np.array([8366, 5335, 7310, 6482])
x2 = np.array([4212, 2332, 3602, 3019])

# 绘图
labels = ["东区", "北区", "南区", "北区"]
plt.pie(x1, labels=labels, radius=1.0, wedgeprops=dict(width=0.3, edgecolor='w'))
plt.pie(x2, radius=0.7, wedgeprops=dict(width=0.3, edgecolor='w'))

# 添加注释
plt.annotate("完成量", xy=(0.35, 0.35), xytext=(0.7, 0.45), arrowprops=dict(facecolor='black', arrowstyle="->"))
plt.annotate("任务量", xy=(0.75, 0.20), xytext=(1.1, 0.2), arrowprops=dict(facecolor='black', arrowstyle="->"))




# 设置标题
plt.title("全国各区域任务量与完成量占比", loc="center")

plt.savefig("C:/Users/Administrator/Desktop/456999/huanxingtuPicture.jpg")

plt.show()

38、

39、

40、

41、

42、

43、

44、

45、商城订单1、本月的销售额,2,本月的订单总和,3、本月客单价

import pandas as pd
from datetime import datetime

# 读取数据
pdDate = pd.read_csv("C:/Users/Administrator/Desktop/456999/5678/order-14.1.csv",
                     encoding='gb18030',
                     parse_dates=["成交时间"])

# print(pdDate.head())
# print(pdDate.info())

# 商城订单1、上月的销售额,2,上月的订单总和,3、上月客单价
this_month = pdDate[(pdDate["成交时间"] >= datetime(2018, 1, 1)) & (pdDate["成交时间"] <= datetime(2018, 1, 31))]
sales_1 = (this_month["销量"]*this_month["单价"]).sum()
print(f"本月的销售额:{sales_1:.2f}")
order_1 = this_month["订单ID"].drop_duplicates().count()
print(f"本月的订单总和:{order_1:.2f}")
# 客单价计算
s_t_1 = sales_1/order_1
print(f"本月客单价:{s_t_1:.2f}")

46、电子商城订单表,如何实现报表自动化(环比,同比)

import pandas as pd
from datetime import datetime

# 读取数据
pdDate = pd.read_csv("C:/Users/Administrator/Desktop/456999/5678/order-14.1.csv",
                     encoding='gb18030',
                     parse_dates=["成交时间"])

# print(pdDate.head())
# print(pdDate.info())

# 商城订单1、上月的销售额,2,上月的订单总和,3、上月客单价
last_month = pdDate[(pdDate["成交时间"] >= datetime(2018, 1, 1)) & (pdDate["成交时间"] <= datetime(2018, 1, 31))]
this_month = pdDate[(pdDate["成交时间"] >= datetime(2018, 2, 1)) & (pdDate["成交时间"] <= datetime(2018, 2, 28))]
month_year = pdDate[(pdDate["成交时间"] >= datetime(2017, 2, 1)) & (pdDate["成交时间"] <= datetime(2017, 2, 28))]


def test_cs(this_months):
    sales_1 = (this_months["销量"] * this_months["单价"]).sum()
    order_1 = this_months["订单ID"].drop_duplicates().count()
    # 客单价计算
    s_t_1 = sales_1 / order_1
    # return f"{sales_1:.2f}", f"{order_1:.2f}", f"{s_t_1:.2f}"
    return sales_1, order_1, s_t_1


# 上个月指标
s1, t1, s_t_1 = test_cs(last_month)
# 这个月指标
s2, t2, s_t_2 = test_cs(this_month)
# 去年的指标
s3, t3, s_t_3 = test_cs(month_year)

totals = pd.DataFrame([[s1, s2, s3], [t1, t2, t3], [s_t_1, s_t_2, s_t_3]],
                      columns=["上月同期", "本月累计", "去年同期"],
                      index=["销售额", "成交量", "客单价"])

print(totals)
# 添加同比和环比字段
totals["环比"] = totals["本月累计"]/totals["上月同期"] - 1
totals["同比"] = totals["本月累计"]/totals["去年同期"] - 1
print("****************************")
# 最后结果
# 生成excel文档
totals.to_excel('C:/Users/Administrator/Desktop/456999/top222.xlsx')
# 生成cvs文档
totals.to_csv('C:/Users/Administrator/Desktop/456999/top333.csv',
              encoding="utf-8-sig")
print(totals)

47、exce取数,加工,处理,保存excel,再读取excel,生产可视化报表图(饼图占比)。

import numpy as np
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False


# 读取数据
pdDate = pd.read_csv("C:/Users/Administrator/Desktop/456999/5678/order-14.3.csv",
                     encoding='gb18030',
                     parse_dates=["成交时间"])

print(pdDate.head())
# print(pdDate.info())

# 对每个商品类别销量求和
cxOrder = pdDate.groupby("类别ID")["销量"].sum().reset_index()
print(cxOrder)

# 那些类别的商品比较畅销,求前10名的商品类别
print("***************求前10名的商品类别***************")
cxOrder_top10 = pdDate.groupby("类别ID")["销量"].sum().reset_index().sort_values(
    by="销量", ascending=False).head(10)
print(cxOrder_top10)
# 新增一个销售额字段
pdDate["销售额"] = pdDate["销量"]*pdDate["单价"]
# print(pdDate["销售额"])
# 按部门统计销售额
dept_sales = pdDate.groupby("门店编号")["销售额"].sum()
# print(dept_sales)
# 各部门销售额占比
sales_zanbi = pdDate.groupby("门店编号")["销售额"].sum()/pdDate["销售额"].sum()

# 方法1、不生成excel通过代码生成饼图
# 代码来源:https://www.cnblogs.com/zhuminghui/p/9418820.html
plt.title("各部门销量占比111", loc="center")
# label="" 为的是不显示,销售额,三个字
sales_zanbi.plot.pie(autopct="%.2f%%", label="")
# 生成可视化饼图图片保存
plt.savefig("C:/Users/Administrator/Desktop/456999/bingTuPicture99999.jpg")
plt.show()

# 方法2、生成excel通过调用excel生成饼图
# 生成excel文档
sales_zanbi.to_excel('C:/Users/Administrator/Desktop/456999/pie20211229.xlsx')
# 读取excel
pdShuJu = pd.read_excel('C:/Users/Administrator/Desktop/456999/pie20211229.xlsx')
# print(pdShuJu["门店编号"])
# print(pdShuJu["销售额"])

x = np.array(pdShuJu["销售额"])
labels = np.array(pdShuJu["门店编号"])

plt.pie(x, labels=labels, autopct="%.2f%%",
        radius=1.0)
# 设置可视化标题
plt.title("各部门销量占比", loc="center")
# 生成可视化饼图图片保存
plt.savefig("C:/Users/Administrator/Desktop/456999/bingTuPicture29.jpg")
plt.show()

48、

   48.1、超市或商城订单表,每个部门的销售,每个部门的销售占比,每个小时时间段的人流量
   48.2、每个部门的销售占比生成饼图,每个小时时间段的人流量生成折线图(方便搞促销活动)

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

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 超市或商城订单表,每个部门的销售,每个部门的销售占比,每个小时时间段的人流量
# 每个部门的销售占比生成饼图,每个小时时间段的人流量生成折线图(方便搞促销活动)
# 读取数据
pdDate = pd.read_csv("C:/Users/Administrator/Desktop/456999/5678/order-14.3.csv",
                     encoding='gb18030',
                     parse_dates=["成交时间"])

print(pdDate.head())
# print(pdDate.info())

# 对每个商品类别销量求和
cxOrder = pdDate.groupby("类别ID")["销量"].sum().reset_index()
print(cxOrder)

# 那些类别的商品比较畅销,求前10名的商品类别
print("***************求前10名的商品类别***************")
cxOrder_top10 = pdDate.groupby("类别ID")["销量"].sum().reset_index().sort_values(
    by="销量", ascending=False).head(10)
print(cxOrder_top10)
# 新增一个销售额字段
pdDate["销售额"] = pdDate["销量"] * pdDate["单价"]
# print(pdDate["销售额"])
# 按部门统计销售额
dept_sales = pdDate.groupby("门店编号")["销售额"].sum()
# print(dept_sales)
# 各部门销售额占比
sales_zanbi = pdDate.groupby("门店编号")["销售额"].sum() / pdDate["销售额"].sum()

# 方法1、不生成excel通过代码生成饼图
# 代码来源:https://www.cnblogs.com/zhuminghui/p/9418820.html
plt.title("各部门销量占比,方法1实现", loc="center")
# label="" 为的是不显示,销售额,三个字
sales_zanbi.plot.pie(autopct="%.2f%%", label="")
# 生成可视化饼图图片保存
plt.savefig("C:/Users/Administrator/Desktop/456999/bingTuPicture99999.jpg")
plt.show()

# 方法2、生成excel通过调用excel生成饼图
# 生成excel文档
sales_zanbi.to_excel('C:/Users/Administrator/Desktop/456999/pie20211229.xlsx')
# 读取excel
pdShuJu = pd.read_excel('C:/Users/Administrator/Desktop/456999/pie20211229.xlsx')
# print(pdShuJu["门店编号"])
# print(pdShuJu["销售额"])

x = np.array(pdShuJu["销售额"])
labels = np.array(pdShuJu["门店编号"])

plt.pie(x, labels=labels, autopct="%.2f%%",
        radius=1.0)
# 设置可视化标题
plt.title("各部门销量占比,方法2实现", loc="center")
# 生成可视化饼图图片保存
plt.savefig("C:/Users/Administrator/Desktop/456999/bingTuPicture29.jpg")
plt.show()

# 那段时间段是超市的客流量高峰期(提取小时数)
pdDate["小时"] = pdDate["成交时间"].map(lambda xf: int(xf.strftime("%H")))
traffic_people = pdDate[["小时", "订单ID"]].drop_duplicates()
# 生成折线图
traffic_people.groupby("小时")["订单ID"].count().plot()
# 生成可视化折线图片保存
plt.savefig("C:/Users/Administrator/Desktop/456999/bingTuPicture27777.jpg")
plt.show()


49、

   49.1、银行坏账与,年龄,收入,和家属人数的关系
   49.2、成柱状图和折线图等

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

# 解决文中乱码问题
plt.rcParams["font.sans-serif"] = "SimHei"
# 解决负号无法正常显示的问题
# plt.rcParams["axes.unicode_minus"] = False

# 银行坏账与,年龄,收入,和家属人数的关系
# # 生成柱状图和折线图等

# 读取数据
pdDate = pd.read_csv("C:/Users/Administrator/Desktop/456999/5678/loan.csv",
                     encoding='gb18030')
# 查看信息
print(pdDate.head())
# 查看字段类型
# print(pdDate.info()

pdDate = pdDate.fillna({"月收入": pdDate["月收入"].mean()})
# print(pdDate)
cut_bins = [0, 5000, 10000, 15000, 20000, 100000]
income_cut = pd.cut(pdDate["月收入"], cut_bins)
# print(income_cut)

# 这里可以理解成虚拟分组,用sum()函数,是因为里面的状态是1,可以统计数量
all_income_user = pdDate["好坏客户"].groupby(income_cut).count()
# print("6666666666666=", pdDate["好坏客户"].groupby(income_cut).value_counts())
bad_income_user = pdDate["好坏客户"].groupby(income_cut).sum()
# bad_income_user.to_excel('C:/Users/Administrator/Desktop/456999/top20211229.xlsx')
bad_rate = bad_income_user / all_income_user
# bad_rate.to_excel('C:/Users/Administrator/Desktop/456999/top20211229.xlsx')
# 坏账率与收入占比的关系
bad_rate.plot.bar()
plt.savefig("C:/Users/Administrator/Desktop/456999/zhuzhuangtu999.jpg")
plt.show()

# 年龄与坏账率的关系
age_cut = pd.cut(pdDate["年龄"], 6)
all_age_user = pdDate["好坏客户"].groupby(age_cut).count()
bad_age_user = pdDate["好坏客户"].groupby(age_cut).sum()
bad_age_rate = bad_age_user / all_age_user
bad_age_rate.plot.bar()
# 保存可视化图片
plt.savefig("C:/Users/Administrator/Desktop/456999/zhuzhuangtu888.jpg")
plt.show()

# 家庭人口数量与坏账率的关系
all_home_num = pdDate.groupby("家属数量")["好坏客户"].count()
bad_home_num = pdDate.groupby("家属数量")["好坏客户"].sum()
home_num_rate = bad_home_num / all_home_num
home_num_rate.plot()
# 保存可视化图片
plt.savefig("C:/Users/Administrator/Desktop/456999/zhuzhuangtu777.jpg")
plt.show()





50、

51、

52、

53、

54、

55、

56、

57、

58、

59、

60、

61、

62、

63、

64、

65、

66、

67、

68、

69、

70、

71、

72、

73、

74、

75、

76、

77、

78、

79、

80、

81、

82、

83、

84、

85、

86、

87、

88、

89、

90、

91、

92、

93、

94、

95、

95、

96、

97、

98、

99、

100

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值