Numpy+Pandas+Matplotlib_demo小程序

本文通过实战演示了如何使用Numpy生成不同方差的高斯随机序列,利用Pandas进行数据处理,包括序列的截断操作,并使用Matplotlib进行数据可视化。展示了从数据生成到数据处理再到数据可视化的完整流程。

Numpy+Pandas+Matplotlib_demo

调包

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

用Numpy生成不同方差的高斯随机序列

#定义序列长度
L = 2**10
#定义方差列表
sigma_list = [3, 2, 1]
#生成三个高斯随机序列,并保留一位小数
gs_1 = np.round(np.random.randn(L, 1) * sigma_list[0], 1)
gs_2 = np.round(np.random.randn(L, 1) * sigma_list[1], 1)
gs_3 = np.round(np.random.randn(L, 1) * sigma_list[2], 1)

使用np.std(ddof = 1)对总体方差进行无偏估计

#统计校验方差
#使用np.std
print("序列1方差理论值 = {},统计估计值 = {}".format(sigma_list[0], np.std(gs_1, ddof = 1)))
print("序列2方差理论值 = {},统计估计值 = {}".format(sigma_list[1], np.std(gs_2, ddof = 1)))
print("序列3方差理论值 = {},统计估计值 = {}".format(sigma_list[2], np.std(gs_3, ddof = 1)))
序列1方差理论值 = 3,统计估计值 = 2.9569623663023257
序列2方差理论值 = 2,统计估计值 = 1.9519132091240838
序列3方差理论值 = 1,统计估计值 = 0.9764453436567503

使用np.hstack()将三个随机序列水平连接

ga = np.hstack((gs_1, gs_2, gs_3))
print("连接后矩阵的维度 = {}".format(ga.shape))
连接后矩阵的维度 = (1024, 3)

生成一个DataFrame数据类型

#gdf = pd.DataFrame(ga, columns = [str(sigma_list[0]), str(sigma_list[1]), str(sigma_list[2])])
gdf = pd.DataFrame(ga, columns = ['A', 'B', 'C'])
#打印前10个
print(gdf[0:10])
     A    B    C
0 -0.3  0.7  0.3
1  3.5 -1.0 -0.8
2 -3.2 -0.2  1.4
3  0.3  4.8 -0.2
4 -0.2  0.3 -0.2
5  3.5 -1.5 -1.3
6 -0.6  0.6  0.3
7  1.2 -0.2 -0.8
8  0.1 -0.1  0.9
9 -2.7 -0.2 -0.3

plt.plot()显示结果

plt.plot(gdf)
plt.xlabel("index")
plt.ylabel("value")
plt.title("before")
plt.legend(("sigma = "+str(sigma_list[0]),"sigma = "+str(sigma_list[1]),"sigma = "+str(sigma_list[2])))
<matplotlib.legend.Legend at 0x19c92220b70>

截断之前

利用条件选择将高斯序列变为截断高斯序列

gdf[gdf.A > 3*sigma_list[0]] = 3*sigma_list[0]
gdf[gdf.A < -3*sigma_list[0]] = -3*sigma_list[0]
gdf[gdf.B > 3*sigma_list[1]] = 3*sigma_list[1]
gdf[gdf.B < -3*sigma_list[1]] = -3*sigma_list[1]
gdf[gdf.C > 3*sigma_list[2]] = 3*sigma_list[2]
gdf[gdf.C < -3*sigma_list[2]] = -3*sigma_list[2]
#打印前10个
print(gdf[0:10])
     A    B    C
0 -0.3  0.7  0.3
1  3.5 -1.0 -0.8
2 -3.2 -0.2  1.4
3  0.3  4.8 -0.2
4 -0.2  0.3 -0.2
5  3.5 -1.5 -1.3
6 -0.6  0.6  0.3
7  1.2 -0.2 -0.8
8  0.1 -0.1  0.9
9 -2.7 -0.2 -0.3

plt.plot()显示结果

plt.plot(gdf)
plt.xlabel("index")
plt.ylabel("value")
plt.title("after")
plt.legend(("sigma = "+str(sigma_list[0]),"sigma = "+str(sigma_list[1]),"sigma = "+str(sigma_list[2])))
<matplotlib.legend.Legend at 0x19c92337748>

截断之后

C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 24658 (\N{CJK UNIFIED IDEOGRAPH-6052}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 28201 (\N{CJK UNIFIED IDEOGRAPH-6E29}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 25151 (\N{CJK UNIFIED IDEOGRAPH-623F}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 38271 (\N{CJK UNIFIED IDEOGRAPH-957F}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 24490 (\N{CJK UNIFIED IDEOGRAPH-5FAA}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 29615 (\N{CJK UNIFIED IDEOGRAPH-73AF}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 28608 (\N{CJK UNIFIED IDEOGRAPH-6FC0}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 27963 (\N{CJK UNIFIED IDEOGRAPH-6D3B}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 31243 (\N{CJK UNIFIED IDEOGRAPH-7A0B}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 24207 (\N{CJK UNIFIED IDEOGRAPH-5E8F}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 21333 (\N{CJK UNIFIED IDEOGRAPH-5355}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 23618 (\N{CJK UNIFIED IDEOGRAPH-5C42}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 36127 (\N{CJK UNIFIED IDEOGRAPH-8D1F}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 26497 (\N{CJK UNIFIED IDEOGRAPH-6781}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 39564 (\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 35777 (\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 27744 (\N{CJK UNIFIED IDEOGRAPH-6C60}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 35299 (\N{CJK UNIFIED IDEOGRAPH-89E3}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 28082 (\N{CJK UNIFIED IDEOGRAPH-6DB2}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 24555 (\N{CJK UNIFIED IDEOGRAPH-5FEB}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 36895 (\N{CJK UNIFIED IDEOGRAPH-901F}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:67: UserWarning: Glyph 29256 (\N{CJK UNIFIED IDEOGRAPH-7248}) missing from font(s) DejaVu Sans. plt.tight_layout() C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 24658 (\N{CJK UNIFIED IDEOGRAPH-6052}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 28201 (\N{CJK UNIFIED IDEOGRAPH-6E29}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 25151 (\N{CJK UNIFIED IDEOGRAPH-623F}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 38271 (\N{CJK UNIFIED IDEOGRAPH-957F}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 24490 (\N{CJK UNIFIED IDEOGRAPH-5FAA}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 29615 (\N{CJK UNIFIED IDEOGRAPH-73AF}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 28608 (\N{CJK UNIFIED IDEOGRAPH-6FC0}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 27963 (\N{CJK UNIFIED IDEOGRAPH-6D3B}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 31243 (\N{CJK UNIFIED IDEOGRAPH-7A0B}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 24207 (\N{CJK UNIFIED IDEOGRAPH-5E8F}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 21333 (\N{CJK UNIFIED IDEOGRAPH-5355}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 23618 (\N{CJK UNIFIED IDEOGRAPH-5C42}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 36127 (\N{CJK UNIFIED IDEOGRAPH-8D1F}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 26497 (\N{CJK UNIFIED IDEOGRAPH-6781}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 39564 (\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 35777 (\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 27744 (\N{CJK UNIFIED IDEOGRAPH-6C60}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 35299 (\N{CJK UNIFIED IDEOGRAPH-89E3}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 28082 (\N{CJK UNIFIED IDEOGRAPH-6DB2}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 24555 (\N{CJK UNIFIED IDEOGRAPH-5FEB}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 36895 (\N{CJK UNIFIED IDEOGRAPH-901F}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Users\yang.liu\Desktop\Python\demo\demo2.py:68: UserWarning: Glyph 29256 (\N{CJK UNIFIED IDEOGRAPH-7248}) missing from font(s) DejaVu Sans. plt.savefig('output_plots.png', dpi=300) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 24658 (\N{CJK UNIFIED IDEOGRAPH-6052}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 28201 (\N{CJK UNIFIED IDEOGRAPH-6E29}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 25151 (\N{CJK UNIFIED IDEOGRAPH-623F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 38271 (\N{CJK UNIFIED IDEOGRAPH-957F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 24490 (\N{CJK UNIFIED IDEOGRAPH-5FAA}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 29615 (\N{CJK UNIFIED IDEOGRAPH-73AF}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 28608 (\N{CJK UNIFIED IDEOGRAPH-6FC0}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 27963 (\N{CJK UNIFIED IDEOGRAPH-6D3B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 31243 (\N{CJK UNIFIED IDEOGRAPH-7A0B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 24207 (\N{CJK UNIFIED IDEOGRAPH-5E8F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 21333 (\N{CJK UNIFIED IDEOGRAPH-5355}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 23618 (\N{CJK UNIFIED IDEOGRAPH-5C42}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 36127 (\N{CJK UNIFIED IDEOGRAPH-8D1F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 26497 (\N{CJK UNIFIED IDEOGRAPH-6781}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 39564 (\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 35777 (\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 27744 (\N{CJK UNIFIED IDEOGRAPH-6C60}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 35299 (\N{CJK UNIFIED IDEOGRAPH-89E3}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 28082 (\N{CJK UNIFIED IDEOGRAPH-6DB2}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 24555 (\N{CJK UNIFIED IDEOGRAPH-5FEB}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 36895 (\N{CJK UNIFIED IDEOGRAPH-901F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:124: UserWarning: Glyph 29256 (\N{CJK UNIFIED IDEOGRAPH-7248}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) 三张散点图已保存为output_plots.png C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 24658 (\N{CJK UNIFIED IDEOGRAPH-6052}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 28201 (\N{CJK UNIFIED IDEOGRAPH-6E29}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 25151 (\N{CJK UNIFIED IDEOGRAPH-623F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 38271 (\N{CJK UNIFIED IDEOGRAPH-957F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 24490 (\N{CJK UNIFIED IDEOGRAPH-5FAA}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 29615 (\N{CJK UNIFIED IDEOGRAPH-73AF}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 28608 (\N{CJK UNIFIED IDEOGRAPH-6FC0}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 27963 (\N{CJK UNIFIED IDEOGRAPH-6D3B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 31243 (\N{CJK UNIFIED IDEOGRAPH-7A0B}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 24207 (\N{CJK UNIFIED IDEOGRAPH-5E8F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 21333 (\N{CJK UNIFIED IDEOGRAPH-5355}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 23618 (\N{CJK UNIFIED IDEOGRAPH-5C42}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 36127 (\N{CJK UNIFIED IDEOGRAPH-8D1F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 26497 (\N{CJK UNIFIED IDEOGRAPH-6781}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 39564 (\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 35777 (\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 27744 (\N{CJK UNIFIED IDEOGRAPH-6C60}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 35299 (\N{CJK UNIFIED IDEOGRAPH-89E3}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 28082 (\N{CJK UNIFIED IDEOGRAPH-6DB2}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 24555 (\N{CJK UNIFIED IDEOGRAPH-5FEB}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 36895 (\N{CJK UNIFIED IDEOGRAPH-901F}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:82: UserWarning: Glyph 29256 (\N{CJK UNIFIED IDEOGRAPH-7248}) missing from font(s) DejaVu Sans. FigureCanvasAgg.draw(self) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 24658 (\N{CJK UNIFIED IDEOGRAPH-6052}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 28201 (\N{CJK UNIFIED IDEOGRAPH-6E29}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 25151 (\N{CJK UNIFIED IDEOGRAPH-623F}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 38271 (\N{CJK UNIFIED IDEOGRAPH-957F}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 24490 (\N{CJK UNIFIED IDEOGRAPH-5FAA}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 29615 (\N{CJK UNIFIED IDEOGRAPH-73AF}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 28608 (\N{CJK UNIFIED IDEOGRAPH-6FC0}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 27963 (\N{CJK UNIFIED IDEOGRAPH-6D3B}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 31243 (\N{CJK UNIFIED IDEOGRAPH-7A0B}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 24207 (\N{CJK UNIFIED IDEOGRAPH-5E8F}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 21333 (\N{CJK UNIFIED IDEOGRAPH-5355}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 23618 (\N{CJK UNIFIED IDEOGRAPH-5C42}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 36127 (\N{CJK UNIFIED IDEOGRAPH-8D1F}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 26497 (\N{CJK UNIFIED IDEOGRAPH-6781}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 39564 (\N{CJK UNIFIED IDEOGRAPH-9A8C}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 35777 (\N{CJK UNIFIED IDEOGRAPH-8BC1}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 30005 (\N{CJK UNIFIED IDEOGRAPH-7535}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 27744 (\N{CJK UNIFIED IDEOGRAPH-6C60}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 35299 (\N{CJK UNIFIED IDEOGRAPH-89E3}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 28082 (\N{CJK UNIFIED IDEOGRAPH-6DB2}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 24555 (\N{CJK UNIFIED IDEOGRAPH-5FEB}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 36895 (\N{CJK UNIFIED IDEOGRAPH-901F}) missing from font(s) DejaVu Sans. self.print_png(buf) C:\Program Files\JetBrains\PyCharm 2025.3\plugins\python-ce\helpers\pycharm_matplotlib_backend\backend_interagg.py:85: UserWarning: Glyph 29256 (\N{CJK UNIFIED IDEOGRAPH-7248}) missing from font(s) DejaVu Sans. self.print_png(buf)
最新发布
12-23
<think>我们遇到了中文字符显示问题,因为默认的DejaVu Sans字体不支持中文字符。为了解决这个问题,我们可以设置matplotlib使用支持中文的字体,例如SimHei(黑体)或者Microsoft YaHei(微软雅黑)。以下是修改后的代码,增加了中文字体支持: ### 解决方案 1. 设置matplotlib的字体为支持中文的字体(如SimHei) 2. 确保负号(-)正常显示 ```python import pandas as pd import matplotlib.pyplot as plt import os import glob import numpy as np import matplotlib as mpl # 设置中文字体支持 plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 1. 读取多个Excel文件 excel_files = glob.glob('*.xlsx') # 获取当前目录所有Excel文件 if not excel_files: raise FileNotFoundError("未找到任何Excel文件") # 存储处理后的DataFrame和A列数据 processed_data = {} all_a_columns = [] for file in excel_files: # 读取Excel文件 df = pd.read_excel(file) file_name = os.path.basename(file) # 添加VE列 (G/D*100) - 使用位置索引 # 假设:A列=0, D列=3, G列=6 try: # 确保除数为0的情况不会导致错误(使用np.where处理) df['VE'] = np.where(df.iloc[:, 3] != 0, (df.iloc[:, 6] / df.iloc[:, 3]) * 100, np.nan) except IndexError: print(f"文件 {file_name} 列数不足,至少需要7列(0-6)") continue # 存储处理后的数据和A列 processed_data[file_name] = df all_a_columns.append(df.iloc[:, 0]) # A列索引0 if not processed_data: raise ValueError("没有有效的数据可处理") # 2. 找出最长的A列 longest_a_col = max(all_a_columns, key=len) print(f"最长A列的长度: {len(longest_a_col)}") # 3. 创建三个散点图 fig, axes = plt.subplots(3, 1, figsize=(12, 15)) # 定义列索引和对应标签 plot_config = [ {'col_idx': 3, 'ylabel': 'CE(%)', 'ax': axes[0]}, {'col_idx': 6, 'ylabel': 'EE(%)', 'ax': axes[1]}, {'col_idx': -1, 'ylabel': 'VE(%)', 'ax': axes[2]} # -1 表示最后一列(VE列) ] # 为每个图绘制所有文件的数据 for config in plot_config: ax = config['ax'] col_idx = config['col_idx'] for file_name, df in processed_data.items(): # 使用位置索引访问列 y_data = df.iloc[:, col_idx] if col_idx >= 0 else df.iloc[:, col_idx] # 只绘制非空数据点 valid_indices = ~y_data.isna() ax.scatter(df.iloc[valid_indices, 0], y_data[valid_indices], label=file_name, alpha=0.7) ax.set_xlabel('循环次数 (Cycle #)') ax.set_ylabel(config['ylabel']) ax.set_title(f'{config["ylabel"]} 对比循环次数') ax.grid(True) ax.legend() # 4. 保存图像 plt.tight_layout() plt.savefig('output_plots.png', dpi=300) print('三张散点图已保存为output_plots.png') ``` ### 关键修改: 1. **中文字体设置**: - 使用`plt.rcParams['font.sans-serif'] = ['SimHei']`设置黑体为默认字体 - 设置`plt.rcParams['axes.unicode_minus'] = False`解决负号显示问题 2. **增加除零保护**: - 使用`np.where`避免除数为0的情况(会导致NaN) - 绘图时跳过NaN值(使用`valid_indices`过滤) 3. **标签汉化**: - 将X轴标签改为“循环次数 (Cycle #)” - 标题使用中文描述 ### 注意事项: 1. **字体可用性**:确保系统中存在SimHei字体(Windows通常自带)。如果是Linux系统,可能需要安装中文字体包。 2. **其他字体选择**:如果SimHei不可用,可尝试其他中文字体如`Microsoft YaHei`, `KaiTi`, `FangSong`等。 ### 备用方案(指定具体字体路径): 如果上述方法无效,可以直接使用字体管理器加载字体文件: ```python from matplotlib.font_manager import FontProperties font = FontProperties(fname='C:/Windows/Fonts/simhei.ttf') # 指定字体文件路径 # 然后在每个需要设置中文的地方指定fontproperties=font,例如: ax.set_xlabel('循环次数 (Cycle #)', fontproperties=font) ax.set_ylabel(config['ylabel'], fontproperties=font) ax.set_title(f'{config["ylabel"]} 对比循环次数', fontproperties=font) ``` §§相关问题§§: 1. 如何在Linux系统下安装中文字体以解决matplotlib中文显示问题? 2. 如何自动检测系统中可用的中文字体? 3. 当数据点非常多时,如何优化散点图的绘制性能? 4. 如何将多个散点图合并到一个图中并用不同颜色区分不同列的数据? </think> 这个错误是由于 Matplotlib 的默认字体不支持中文字符导致的。当您的图表中包含中文字符时(可能是文件名或数据标签),Matplotlib 无法正确渲染这些字符。下面是完整的解决方案: ### 解决方案:添加中文字体支持 ```python import pandas as pd import matplotlib.pyplot as plt import os import glob import numpy as np import matplotlib.font_manager as fm import matplotlib as mpl # 设置中文字体支持 def set_chinese_font(): try: # 尝试使用系统中已安装的中文字体 for font in fm.findSystemFonts(): if 'simhei' in font.lower(): plt.rcParams['font.family'] = 'SimHei' break elif 'microsoft yahei' in font.lower(): plt.rcParams['font.family'] = 'Microsoft YaHei' break elif 'kaiti' in font.lower(): plt.rcParams['font.family'] = 'KaiTi' break else: # 如果没有找到常见中文字体,使用默认支持中文的字体 plt.rcParams['font.family'] = 'sans-serif' plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei', 'DejaVu Sans'] # 解决负号显示问题 plt.rcParams['axes.unicode_minus'] = False except: print("警告:中文字体设置失败,图表可能无法正确显示中文") # 调用字体设置函数 set_chinese_font() # 1. 读取多个Excel文件 excel_files = glob.glob('*.xlsx') # 获取当前目录所有Excel文件 if not excel_files: raise FileNotFoundError("未找到任何Excel文件") # 存储处理后的DataFrame和A列数据 processed_data = {} all_a_columns = [] for file in excel_files: # 读取Excel文件 df = pd.read_excel(file) file_name = os.path.basename(file) # 添加VE列 (G/D*100) - 使用位置索引 # 假设:A列=0, D列=3, G列=6 try: # 处理除数为零的情况 df['VE'] = np.where(df.iloc[:, 3] != 0, (df.iloc[:, 6] / df.iloc[:, 3]) * 100, np.nan) except IndexError: print(f"文件 {file_name} 列数不足,至少需要7列(0-6)") continue # 存储处理后的数据和A列 processed_data[file_name] = df all_a_columns.append(df.iloc[:, 0]) # A列索引0 if not processed_data: raise ValueError("没有有效的数据可处理") # 2. 找出最长的A列 longest_a_col = max(all_a_columns, key=len) print(f"最长A列的长度: {len(longest_a_col)}") # 3. 创建三个散点图 fig, axes = plt.subplots(3, 1, figsize=(12, 15)) # 定义列索引和对应标签 plot_config = [ {'col_idx': 3, 'ylabel': 'CE(%)', 'ax': axes[0]}, {'col_idx': 6, 'ylabel': 'EE(%)', 'ax': axes[1]}, {'col_idx': -1, 'ylabel': 'VE(%)', 'ax': axes[2]} # -1 表示最后一列(VE列) ] # 为每个图绘制所有文件的数据 for config in plot_config: ax = config['ax'] col_idx = config['col_idx'] for file_name, df in processed_data.items(): # 使用位置索引访问列 y_data = df.iloc[:, col_idx] if col_idx >= 0 else df.iloc[:, col_idx] # 只绘制非空数据点 valid_indices = ~y_data.isna() ax.scatter(df.iloc[valid_indices, 0], y_data[valid_indices], label=file_name, alpha=0.7) ax.set_xlabel('循环次数 (Cycle #)') ax.set_ylabel(config['ylabel']) ax.set_title(f'{config["ylabel"]} vs 循环次数') ax.grid(True) ax.legend() # 4. 保存图像 plt.tight_layout() plt.savefig('output_plots.png', dpi=300, bbox_inches='tight') print('三张散点图已保存为output_plots.png') ``` ### 关键改进: 1. **中文字体支持**: - 自动检测系统中可用的中文字体(SimHei, Microsoft YaHei, KaiTi) - 设置默认字体解决中文显示问题 - 处理负号显示问题(`axes.unicode_minus = False`) 2. **错误处理增强**: - 使用`np.where`处理除数为零的情况,避免计算错误 - 在绘图前过滤掉NaN值,确保只绘制有效数据点 - 添加`bbox_inches='tight'`防止标签被裁剪 3. **中文标签优化**: - X轴标签改为"循环次数 (Cycle #)",兼顾中英文 - 图表标题使用中文,确保正确显示 ### 替代方案:使用指定字体文件 如果上述方法仍无法解决中文显示问题,可以尝试直接指定字体文件路径: ```python # 在set_chinese_font函数中添加以下代码 font_path = 'C:/Windows/Fonts/simhei.ttf' # 替换为您的字体文件路径 if os.path.exists(font_path): font_prop = fm.FontProperties(fname=font_path) plt.rcParams['font.family'] = font_prop.get_name() ``` ### 常见中文字体文件位置: - Windows: - `C:/Windows/Fonts/simhei.ttf` (黑体) - `C:/Windows/Fonts/msyh.ttc` (微软雅黑) - macOS: - `/Library/Fonts/PingFang.ttc` (苹方) - `/System/Library/Fonts/PingFang.ttc`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值