MAE_ATMO/未命名1.ipynb

426 lines
42 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "b22d5573-7d43-47f4-83ab-dcbc2772136a",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "b5474ec4-e68f-428d-a1f5-446055c07a16",
"metadata": {},
"outputs": [],
"source": [
"rst_mix = pd.read_csv('./mix_eva.csv')\n",
"rst_mix.index = [10, 20, 30, 40]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "9790e6fc-1cdb-4376-a63a-3f2eb7f2e555",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "17916ba4-aab6-43f1-b97f-be7f44d068a4",
"metadata": {},
"outputs": [],
"source": [
"colors = [(211, 65, 51), (240, 155, 39), (25, 152, 128)]\n",
"rgb_colors = [tuple(c/255 for c in color) for color in colors]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "68df39d6-c0f8-4fe8-9d49-6ce3ca8d6682",
"metadata": {},
"outputs": [],
"source": [
"# 设置字体为Times new Roman\n",
"plt.rcParams['font.sans-serif'] = ['Times New Roman']"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "bb9d01de-c270-4578-b358-66366857da0b",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1600x900 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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1KxZU19//XVW1mn10Ucf6aOPPpKLi4v107t3b0lSQECAXFxcVLFiRUnS1atXbdZN/bpMmTKSlOX9AAAAcpLdM3ZjxoxR+fLl5e/vr99++01169ZVgQIFJN164G92Pe7ks88+082bN22W/e9//9PYsWO1aNEiNWjQQCkpKZJu3WDxd6l36qY+x65FixaaOXOmjh07pmbNmt2x3//+9z8dO3ZMZcuWtenn5uZmsy4AAEBOsTvY3bx5U7///rucnZ21a9cuHThwwPrst2vXrmnhwoVZVuTflS9fPs2yPXv2WNtq1aolSWrSpIk2bdqkd99919ovODhYlStXtr6d4plnnlG5cuW0adMmm+fWBQcHy9/fX5UrV5YkdevWTWPHjtWmTZusz8wzxmjLli3q0qWL8uXLly37CgAAkBl2n4otUaKEnJ2dJUkNGzbU2rVrlZCQIOnWNWe7d+/OmgrtNGfOHB0+fFibN2+WJO3du1erV6/W3Llz5erqKklydXXVvHnztH79eh0+fFjSrWv4QkNDNWvWLOtYPj4++uijj7R06VJdunTJOn5KSopNcAQAAMhJds/YlS9fXs2bN1e9evU0fvx4tW3bVv/6178UGBioXbt2WQNVTqlTp442b96soKAgTZ48Wc7Ozlq7dq2aNm1q069Vq1b65ptv1LNnT+XJk0f58uXTli1brDN/qfr06SNnZ2c999xzyps3r4oXL66tW7fyOjEAAPDAsJi/386aCdeuXVPXrl21d+9e/fDDD3rkkUf07LPPasOGDZKkAQMGaM6cOVlarCOIioqSl5eXIiMj5enped+3H9qi/n3fZqpaP+3JsW3nVhzv3IXjnbtwvHOPzGQHu2fsfHx89P3339ssW716tb7//nsVKFDAeh0bAAAA7g+7g126g7m46Pnnn8/KIQEAAJBBdt888Xd//vmnunbtqho1aqhdu3YKDQ3NimEBAACQCRmesXNzc5N068X3L7/8skaPHi1Junjxoho3bqxLly7JxcXF+vXOnTtVo0aN7KkaAAAAaWR4xi4pKUlt27bV/v37raFOkgIDA3Xx4kU1aNBAZ86c0V9//aWgoCCNHTs2WwoGAABA+jIc7FxdXTV37lzrs+skaefOnVq1apXy5s2rb775RkWLFpUkjR07Ns1bHwAAAJC9MhzsateuLV9fX5tlY8aMkcVi0dChQ23e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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(16, 9))\n",
"rst_mix.plot.bar(color=rgb_colors, width=0.75)\n",
"plt.xlabel('Missing Rate(%)', fontsize=14)\n",
"plt.ylabel('Sample Counts', fontsize=14)\n",
"plt.xticks(rotation=-45, fontsize=14)\n",
"plt.yticks(fontsize=14)\n",
"plt.tight_layout()\n",
"plt.legend(loc='best', fontsize=16)\n",
"plt.savefig('./miss_counts.png')"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "ed3eca73-9607-4c32-af5a-918b07f5abfe",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib as mpl"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f3e6fbc9-97bd-4bb5-9cfa-7bb86fd8c59b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'/root/.cache/matplotlib'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mpl.get_cachedir()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e0a6c359-293e-40ab-842b-9eecd2b7d29f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 44,
"id": "5b1001ae-d846-4841-bd0c-0af673103e62",
"metadata": {},
"outputs": [],
"source": [
"draw_data = pd.read_csv('./data_count.csv')"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "fe12a6da-ad4d-45b8-9d66-96398e98e6b9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>month</th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2022-01</td>\n",
" <td>31.0</td>\n",
" <td>0.375894</td>\n",
" <td>0.278728</td>\n",
" <td>0.024402</td>\n",
" <td>0.153636</td>\n",
" <td>0.311435</td>\n",
" <td>0.541388</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2022-02</td>\n",
" <td>27.0</td>\n",
" <td>0.223323</td>\n",
" <td>0.247666</td>\n",
" <td>0.000000</td>\n",
" <td>0.031531</td>\n",
" <td>0.110574</td>\n",
" <td>0.359928</td>\n",
" <td>0.904019</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2022-03</td>\n",
" <td>31.0</td>\n",
" <td>0.346938</td>\n",
" <td>0.326758</td>\n",
" <td>0.000000</td>\n",
" <td>0.055048</td>\n",
" <td>0.280622</td>\n",
" <td>0.582225</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2022-04</td>\n",
" <td>30.0</td>\n",
" <td>0.241667</td>\n",
" <td>0.255629</td>\n",
" <td>0.000526</td>\n",
" <td>0.031316</td>\n",
" <td>0.118349</td>\n",
" <td>0.402727</td>\n",
" <td>0.823110</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2022-05</td>\n",
" <td>31.0</td>\n",
" <td>0.261153</td>\n",
" <td>0.291343</td>\n",
" <td>0.000000</td>\n",
" <td>0.042153</td>\n",
" <td>0.099043</td>\n",
" <td>0.377679</td>\n",
" <td>0.899809</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2022-06</td>\n",
" <td>30.0</td>\n",
" <td>0.307410</td>\n",
" <td>0.249777</td>\n",
" <td>0.025933</td>\n",
" <td>0.097787</td>\n",
" <td>0.216268</td>\n",
" <td>0.538828</td>\n",
" <td>0.885215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2022-07</td>\n",
" <td>31.0</td>\n",
" <td>0.471889</td>\n",
" <td>0.258072</td>\n",
" <td>0.004402</td>\n",
" <td>0.286459</td>\n",
" <td>0.502584</td>\n",
" <td>0.638947</td>\n",
" <td>0.914545</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2022-08</td>\n",
" <td>31.0</td>\n",
" <td>0.411485</td>\n",
" <td>0.286403</td>\n",
" <td>0.009043</td>\n",
" <td>0.194211</td>\n",
" <td>0.354785</td>\n",
" <td>0.603086</td>\n",
" <td>0.945215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>2022-09</td>\n",
" <td>30.0</td>\n",
" <td>0.240635</td>\n",
" <td>0.250689</td>\n",
" <td>0.000048</td>\n",
" <td>0.039462</td>\n",
" <td>0.136196</td>\n",
" <td>0.377416</td>\n",
" <td>0.910239</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2022-10</td>\n",
" <td>31.0</td>\n",
" <td>0.334396</td>\n",
" <td>0.274684</td>\n",
" <td>0.000000</td>\n",
" <td>0.116818</td>\n",
" <td>0.291053</td>\n",
" <td>0.494833</td>\n",
" <td>0.883923</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2022-11</td>\n",
" <td>29.0</td>\n",
" <td>0.405854</td>\n",
" <td>0.308861</td>\n",
" <td>0.016603</td>\n",
" <td>0.107081</td>\n",
" <td>0.476172</td>\n",
" <td>0.629474</td>\n",
" <td>0.941579</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>2022-12</td>\n",
" <td>31.0</td>\n",
" <td>0.223386</td>\n",
" <td>0.194496</td>\n",
" <td>0.006938</td>\n",
" <td>0.060502</td>\n",
" <td>0.182727</td>\n",
" <td>0.271172</td>\n",
" <td>0.680622</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" month count mean std min 25% 50% \\\n",
"0 2022-01 31.0 0.375894 0.278728 0.024402 0.153636 0.311435 \n",
"1 2022-02 27.0 0.223323 0.247666 0.000000 0.031531 0.110574 \n",
"2 2022-03 31.0 0.346938 0.326758 0.000000 0.055048 0.280622 \n",
"3 2022-04 30.0 0.241667 0.255629 0.000526 0.031316 0.118349 \n",
"4 2022-05 31.0 0.261153 0.291343 0.000000 0.042153 0.099043 \n",
"5 2022-06 30.0 0.307410 0.249777 0.025933 0.097787 0.216268 \n",
"6 2022-07 31.0 0.471889 0.258072 0.004402 0.286459 0.502584 \n",
"7 2022-08 31.0 0.411485 0.286403 0.009043 0.194211 0.354785 \n",
"8 2022-09 30.0 0.240635 0.250689 0.000048 0.039462 0.136196 \n",
"9 2022-10 31.0 0.334396 0.274684 0.000000 0.116818 0.291053 \n",
"10 2022-11 29.0 0.405854 0.308861 0.016603 0.107081 0.476172 \n",
"11 2022-12 31.0 0.223386 0.194496 0.006938 0.060502 0.182727 \n",
"\n",
" 75% max \n",
"0 0.541388 1.000000 \n",
"1 0.359928 0.904019 \n",
"2 0.582225 1.000000 \n",
"3 0.402727 0.823110 \n",
"4 0.377679 0.899809 \n",
"5 0.538828 0.885215 \n",
"6 0.638947 0.914545 \n",
"7 0.603086 0.945215 \n",
"8 0.377416 0.910239 \n",
"9 0.494833 0.883923 \n",
"10 0.629474 0.941579 \n",
"11 0.271172 0.680622 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"draw_data"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bde6046e-7a70-4a0c-ac83-fdf4d0a3b0d5",
"metadata": {},
"outputs": [],
"source": [
"fig, ax = plt.subplots(figsize=(16, 9))\n",
"# plt.plot(range(1, 13), des['mean'].values, '*-')\n",
"bp = ax.boxplot(draw_data, showmeans=True, patch_artist=False, widths=0.5, boxprops=dict(linewidth=2),\n",
" medianprops=dict(color='red', linewidth=2),\n",
" meanprops=dict(marker='*', markersize=8, linewidth=2),\n",
" # whiskerprops=dict(color='black', linewidth=1.5),\n",
" # capprops=dict(color='black', linewidth=1.5)\n",
" )\n",
"# 创建一个仅包含标记的图例项\n",
"circle = mlines.Line2D([], [], color='green', marker='*', linestyle='None', markersize=8, label='Mean Point')\n",
"median_line = mlines.Line2D([], [], color='red', marker='', linestyle='-', linewidth=2, label='Median Line')\n",
"ax.set_xlabel('Month', fontsize=16)\n",
"ax.set_ylabel('Missing Rate', fontsize=16)\n",
"ax.set_xticklabels(months, fontsize=16)\n",
"# 获取当前的y轴标签\n",
"yticklabels = ax.get_yticklabels()\n",
"\n",
"# 设置y轴标签的字体大小\n",
"for label in yticklabels:\n",
" label.set_fontsize(16)\n",
"# 添加图例\n",
"ax.legend(handles=[median_line, circle], fontsize=16)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}