MMC-C/data.ipynb

910 lines
249 KiB
Plaintext
Raw Permalink Normal View History

{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# 对于每种作物的数据统计",
"id": "493d1cd2ba436df4"
},
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:49.227304Z",
"start_time": "2024-09-06T09:04:48.422782Z"
}
},
"source": [
"import pandas as pd\n",
2024-09-06 08:11:59 +00:00
"import matplotlib\n",
"\n",
"# 指定默认字体为支持中文的字体\n",
"matplotlib.rcParams['font.family'] = 'Microsoft YaHei' # 或者 'SimHei' 'SimSun', 'Microsoft YaHei'\n",
"matplotlib.rcParams['axes.unicode_minus'] = False # 用来正常显示负号\n",
"\n",
"LandType = {\"A\": \"平旱地\", \"B\": \"梯田\", \"C\": \"山坡地\", \"D\": \"水浇地\", \"E\": \"普通大棚\", \"F\": \"智慧大棚\"}\n"
],
"outputs": [],
2024-09-07 03:03:39 +00:00
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:49.892167Z",
"start_time": "2024-09-06T09:04:49.229306Z"
}
},
"cell_type": "code",
"source": [
"df_planting = pd.read_excel('./data/2.xlsx', sheet_name=0)\n",
"df_crop_details = pd.read_excel('./data/2.xlsx', sheet_name=1)"
],
"id": "9f4633f8e90ffe1a",
"outputs": [],
2024-09-07 03:03:39 +00:00
"execution_count": 3
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:49.908071Z",
"start_time": "2024-09-06T09:04:49.894065Z"
}
},
"cell_type": "code",
"source": [
"df_planting['landName'] = df_planting['landName'].ffill()\n",
"df_crop_details['cropLandType'] = df_crop_details['cropLandType'].str.rstrip()"
],
"id": "ef9302cf0dc64751",
"outputs": [],
2024-09-07 03:03:39 +00:00
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:49.924081Z",
"start_time": "2024-09-06T09:04:49.912079Z"
}
},
"cell_type": "code",
"source": [
"def get_crop_price(crop_num, crop_land_type, season):\n",
" if crop_land_type == \"智慧大棚\" and season == \"第一季\":\n",
" crop_land_type = \"普通大棚\"\n",
" s = \\\n",
2024-09-07 03:03:39 +00:00
" df_crop_details[\n",
" (df_crop_details['cropNum'] == crop_num) & (df_crop_details['cropLandType'] == crop_land_type) & (\n",
" df_crop_details['season'] == season)].price.values[0].split('-')\n",
" return (float(s[0]) + float(s[1])) / 2\n",
"\n",
"\n",
"def get_crop_yield(crop_num, crop_land_type, season):\n",
" if crop_land_type == \"智慧大棚\" and season == \"第一季\":\n",
" crop_land_type = \"普通大棚\"\n",
" return \\\n",
2024-09-07 03:03:39 +00:00
" df_crop_details[\n",
" (df_crop_details['cropNum'] == crop_num) & (df_crop_details['cropLandType'] == crop_land_type) & (\n",
" df_crop_details['season'] == season)].unitYield.values[0]\n",
"\n",
"\n",
"def get_crop_cost(crop_num, crop_land_type, season):\n",
" if crop_land_type == \"智慧大棚\" and season == \"第一季\":\n",
" crop_land_type = \"普通大棚\"\n",
" return \\\n",
2024-09-07 03:03:39 +00:00
" df_crop_details[\n",
" (df_crop_details['cropNum'] == crop_num) & (df_crop_details['cropLandType'] == crop_land_type) & (\n",
" df_crop_details['season'] == season)].cost.values[0]\n",
"\n",
"\n",
"def get_crop_profit(crop_num, crop_land_type, season):\n",
2024-09-07 03:03:39 +00:00
" return get_crop_yield(crop_num, crop_land_type, season) * get_crop_price(crop_num, crop_land_type,\n",
" season) - get_crop_cost(crop_num,\n",
" crop_land_type,\n",
" season)"
],
"id": "6571c03dd0a145d",
"outputs": [],
2024-09-07 03:03:39 +00:00
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:50.065728Z",
"start_time": "2024-09-06T09:04:49.925123Z"
}
},
"cell_type": "code",
"source": [
"total_yield = {crop: 0 for crop in df_crop_details['cropNum'].unique()}\n",
"total_cost = {crop: 0 for crop in df_crop_details['cropNum'].unique()}\n",
"total_income = {crop: 0 for crop in df_crop_details['cropNum'].unique()}\n",
"total_profit = {crop: 0 for crop in df_crop_details['cropNum'].unique()}\n",
"for line in df_planting.values:\n",
" # print(line[1], LandType[line[0][0]], line[5])\n",
" yld = line[4] * get_crop_yield(line[1], LandType[line[0][0]], line[5])\n",
" cost = line[4] * get_crop_cost(line[1], LandType[line[0][0]], line[5])\n",
" income = yld * get_crop_price(line[1], LandType[line[0][0]], line[5])\n",
" profit = income - cost\n",
"\n",
" total_yield[line[1]] += yld\n",
" total_cost[line[1]] += cost\n",
" total_income[line[1]] += income\n",
" total_profit[line[1]] += profit\n",
"print(total_yield) # 总产量\n",
"print(total_cost) # 总开销\n",
"print(total_income) # 总收入\n",
"print(total_profit) # 总利润"
],
"id": "483a03b545d80063",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{1: 57000.0, 2: 21850.0, 3: 22400.0, 4: 33040.0, 5: 9875.0, 6: 170840.0, 7: 132750.0, 8: 71400.0, 9: 30000.0, 10: 12500.0, 11: 1500.0, 12: 35100.0, 13: 36000.0, 14: 14000.0, 15: 10000.0, 16: 21000.0, 17: 36480.0, 18: 26880.0, 19: 6480.0, 20: 30000.0, 21: 36210.0, 22: 45360.0, 23: 900.0, 24: 2610.0, 25: 3600.0, 26: 4050.0, 27: 4500.0, 28: 35480.0, 29: 13050.0, 30: 2850.0, 31: 1200.0, 32: 3600.0, 33: 1800.0, 34: 1800.0, 35: 150000.0, 36: 100000.0, 37: 36000.0, 38: 9000.0, 39: 7200.0, 40: 18000.0, 41: 4200.0}\n",
"{1: 58800.0, 2: 18400.0, 3: 21000.0, 4: 33600.0, 5: 8750.0, 6: 99900.0, 7: 67500.0, 8: 66600.0, 9: 20000.0, 10: 9000.0, 11: 5250.0, 12: 13000.0, 13: 36000.0, 14: 14000.0, 15: 7000.0, 16: 28560.0, 17: 24320.0, 18: 13440.0, 19: 4320.0, 20: 30000.0, 21: 30232.0, 22: 14232.0, 23: 900.0, 24: 1860.0, 25: 2700.0, 26: 3150.0, 27: 1800.0, 28: 17860.0, 29: 3255.0, 30: 1260.0, 31: 720.0, 32: 1500.0, 33: 750.0, 34: 360.0, 35: 60000.0, 36: 12500.0, 37: 6000.0, 38: 5400.0, 39: 3600.0, 40: 18000.0, 41: 42000.0}\n",
"{1: 185250.0, 2: 163875.0, 3: 184800.0, 4: 231280.0, 5: 66656.25, 6: 597940.0, 7: 398250.0, 8: 481950.0, 9: 180000.0, 10: 93750.0, 11: 60000.0, 12: 52650.0, 13: 117000.0, 14: 77000.0, 15: 35000.0, 16: 147000.0, 17: 291840.0, 18: 181440.0, 19: 42120.0, 20: 112500.0, 21: 227325.0, 22: 251856.0, 23: 6210.0, 24: 14958.0, 25: 19800.0, 26: 26325.0, 27: 22500.0, 28: 205252.0, 29: 97020.0, 30: 16380.000000000002, 31: 8700.0, 32: 16200.0, 33: 8100.0, 34: 8640.0, 35: 375000.0, 36: 250000.0, 37: 117000.0, 38: 517500.0, 39: 136800.0, 40: 288000.0, 41: 420000.0}\n",
"{1: 126450.0, 2: 145475.0, 3: 163800.0, 4: 197680.0, 5: 57906.25, 6: 498040.0, 7: 330750.0, 8: 415350.0, 9: 160000.0, 10: 84750.0, 11: 54750.0, 12: 39650.0, 13: 81000.0, 14: 63000.0, 15: 28000.0, 16: 118440.0, 17: 267520.0, 18: 168000.0, 19: 37800.0, 20: 82500.0, 21: 197093.0, 22: 237624.0, 23: 5310.0, 24: 13098.0, 25: 17100.0, 26: 23175.0, 27: 20700.0, 28: 187392.0, 29: 93765.0, 30: 15120.000000000002, 31: 7980.0, 32: 14700.0, 33: 7350.0, 34: 8280.0, 35: 315000.0, 36: 237500.0, 37: 111000.0, 38: 512100.0, 39: 133200.0, 40: 270000.0, 41: 378000.0}\n"
]
}
],
2024-09-07 03:03:39 +00:00
"execution_count": 6
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# 对每种类型的地块中的种植情况和盈利情况进行统计",
"id": "aa7b13944d227aa3"
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T15:40:19.768497Z",
"start_time": "2024-09-06T15:40:19.729498Z"
}
},
"cell_type": "code",
"source": [
"df_land = pd.read_excel('./data/1.xlsx', sheet_name=0)\n",
"df_crop_land = pd.read_excel('./data/1.xlsx', sheet_name=1)\n"
],
"id": "49e1827ce35f0e3b",
"outputs": [],
2024-09-07 03:03:39 +00:00
"execution_count": 69
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:50.349651Z",
"start_time": "2024-09-06T09:04:50.163610Z"
}
},
"cell_type": "code",
"source": [
"print(\"---------------------\")\n",
2024-09-07 03:03:39 +00:00
"land_crop_stats = {land_type: {} for land_type in LandType.keys()}\n",
"# 该变量存储的内容例如{\"A\":{\"1\":[field, profit] }}表示在A类型的地块中种植的作物编号为1的作物的总产量和总利润\n",
"\n",
"for land in df_land.values:\n",
" print(land[0], land[1], land[2])\n",
" for crop in df_planting.values:\n",
" if crop[0] == land[0]:\n",
" print(crop[1], crop[2], crop[3], crop[4], crop[5])\n",
" land_crop_stats[land[0][0]][crop[1]] = [get_crop_yield(crop[1], LandType[land[0][0]], crop[5]), 0]\n",
" land_crop_stats[land[0][0]][crop[1]][1] += get_crop_profit(crop[1], LandType[land[0][0]], crop[5])\n",
" print(\"---------------------\")\n",
"print(land_crop_stats)"
],
"id": "54504f6c133b1508",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"---------------------\n",
"A1 平旱地 80.0\n",
"6 小麦 粮食 80.0 单季\n",
"---------------------\n",
"A2 平旱地 55.0\n",
"7 玉米 粮食 55.0 单季\n",
"---------------------\n",
"A3 平旱地 35.0\n",
"7 玉米 粮食 35.0 单季\n",
"---------------------\n",
"A4 平旱地 72.0\n",
"1 黄豆 粮食(豆类) 72.0 单季\n",
"---------------------\n",
"A5 平旱地 68.0\n",
"4 绿豆 粮食(豆类) 68.0 单季\n",
"---------------------\n",
"A6 平旱地 55.0\n",
"8 谷子 粮食 55.0 单季\n",
"---------------------\n",
"B1 梯田 60.0\n",
"6 小麦 粮食 60.0 单季\n",
"---------------------\n",
"B2 梯田 46.0\n",
"2 黑豆 粮食(豆类) 46.0 单季\n",
"---------------------\n",
"B3 梯田 40.0\n",
"3 红豆 粮食(豆类) 40.0 单季\n",
"---------------------\n",
"B4 梯田 28.0\n",
"4 绿豆 粮食(豆类) 28.0 单季\n",
"---------------------\n",
"B5 梯田 25.0\n",
"5 爬豆 粮食(豆类) 25.0 单季\n",
"---------------------\n",
"B6 梯田 86.0\n",
"8 谷子 粮食 86.0 单季\n",
"---------------------\n",
"B7 梯田 55.0\n",
"6 小麦 粮食 55.0 单季\n",
"---------------------\n",
"B8 梯田 44.0\n",
"8 谷子 粮食 44.0 单季\n",
"---------------------\n",
"B9 梯田 50.0\n",
"9 高粱 粮食 50.0 单季\n",
"---------------------\n",
"B10 梯田 25.0\n",
"10 黍子 粮食 25.0 单季\n",
"---------------------\n",
"B11 梯田 60.0\n",
"1 黄豆 粮食(豆类) 60.0 单季\n",
"---------------------\n",
"B12 梯田 45.0\n",
"7 玉米 粮食 45.0 单季\n",
"---------------------\n",
"B13 梯田 35.0\n",
"14 莜麦 粮食 35.0 单季\n",
"---------------------\n",
"B14 梯田 20.0\n",
"15 大麦 粮食 20.0 单季\n",
"---------------------\n",
"C1 山坡地 15.0\n",
"11 荞麦 粮食 15.0 单季\n",
"---------------------\n",
"C2 山坡地 13.0\n",
"12 南瓜 粮食 13.0 单季\n",
"---------------------\n",
"C3 山坡地 15.0\n",
"1 黄豆 粮食(豆类) 15.0 单季\n",
"---------------------\n",
"C4 山坡地 18.0\n",
"13 红薯 粮食 18.0 单季\n",
"---------------------\n",
"C5 山坡地 27.0\n",
"6 小麦 粮食 27.0 单季\n",
"---------------------\n",
"C6 山坡地 20.0\n",
"3 红豆 粮食(豆类) 20.0 单季\n",
"---------------------\n",
"D1 水浇地 15.0\n",
"20 土豆 蔬菜 15.0 第一季\n",
"36 白萝卜 蔬菜 15.0 第二季\n",
"---------------------\n",
"D2 水浇地 10.0\n",
"28 小青菜 蔬菜 10.0 第一季\n",
"35 大白菜 蔬菜 10.0 第二季\n",
"---------------------\n",
"D3 水浇地 14.0\n",
"21 西红柿 蔬菜 14.0 第一季\n",
"35 大白菜 蔬菜 14.0 第二季\n",
"---------------------\n",
"D4 水浇地 6.0\n",
"22 茄子 蔬菜 6.0 第一季\n",
"35 大白菜 蔬菜 6.0 第二季\n",
"---------------------\n",
"D5 水浇地 10.0\n",
"17 豇豆 蔬菜(豆类) 10.0 第一季\n",
"36 白萝卜 蔬菜 10.0 第二季\n",
"---------------------\n",
"D6 水浇地 12.0\n",
"18 刀豆 蔬菜(豆类) 12.0 第一季\n",
"37 红萝卜 蔬菜 12.0 第二季\n",
"---------------------\n",
"D7 水浇地 22.0\n",
"16 水稻 粮食 22.0 单季\n",
"---------------------\n",
"D8 水浇地 20.0\n",
"16 水稻 粮食 20.0 单季\n",
"---------------------\n",
"E1 普通大棚 0.6\n",
"18 刀豆 蔬菜(豆类) 0.6 第一季\n",
"38 榆黄菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E2 普通大棚 0.6\n",
"24 青椒 蔬菜 0.6 第一季\n",
"38 榆黄菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E3 普通大棚 0.6\n",
"25 菜花 蔬菜 0.6 第一季\n",
"38 榆黄菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E4 普通大棚 0.6\n",
"26 包菜 蔬菜 0.6 第一季\n",
"39 香菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E5 普通大棚 0.6\n",
"28 小青菜 蔬菜 0.6 第一季\n",
"39 香菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E6 普通大棚 0.6\n",
"27 油麦菜 蔬菜 0.6 第一季\n",
"39 香菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E7 普通大棚 0.6\n",
"19 芸豆 蔬菜(豆类) 0.6 第一季\n",
"40 白灵菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E8 普通大棚 0.6\n",
"19 芸豆 蔬菜(豆类) 0.6 第一季\n",
"40 白灵菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E9 普通大棚 0.6\n",
"18 刀豆 蔬菜(豆类) 0.6 第一季\n",
"40 白灵菇 食用菌 0.6 第二季\n",
"---------------------\n",
"E10 普通大棚 0.6\n",
"17 豇豆 蔬菜(豆类) 0.6 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"E11 普通大棚 0.6\n",
"17 豇豆 蔬菜(豆类) 0.6 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"E12 普通大棚 0.6\n",
"22 茄子 蔬菜 0.6 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"E13 普通大棚 0.6\n",
"21 西红柿 蔬菜 0.6 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"E14 普通大棚 0.6\n",
"29 黄瓜 蔬菜 0.6 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"E15 普通大棚 0.6\n",
"30 生菜 蔬菜 0.3 第一季\n",
"27 油麦菜 蔬菜 0.3 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"E16 普通大棚 0.6\n",
"31 辣椒 蔬菜 0.6 第一季\n",
"41 羊肚菌 食用菌 0.6 第二季\n",
"---------------------\n",
"F1 智慧大棚 0.6\n",
"32 空心菜 蔬菜 0.3 第一季\n",
"33 黄心菜 蔬菜 0.3 第一季\n",
"24 青椒 蔬菜 0.3 第二季\n",
"21 西红柿 蔬菜 0.3 第二季\n",
"---------------------\n",
"F2 智慧大棚 0.6\n",
"25 菜花 蔬菜 0.3 第一季\n",
"26 包菜 蔬菜 0.3 第一季\n",
"22 茄子 蔬菜 0.3 第二季\n",
"29 黄瓜 蔬菜 0.3 第二季\n",
"---------------------\n",
"F3 智慧大棚 0.6\n",
"17 豇豆 蔬菜(豆类) 0.6 第一季\n",
"28 小青菜 蔬菜 0.3 第二季\n",
"30 生菜 蔬菜 0.3 第二季\n",
"---------------------\n",
"F4 智慧大棚 0.6\n",
"19 芸豆 蔬菜(豆类) 0.6 第一季\n",
"34 芹菜 蔬菜 0.3 第二季\n",
"23 菠菜 蔬菜 0.3 第二季\n",
"---------------------\n",
"{'A': {6: [800, 2350.0], 7: [1000, 2500.0], 1: [400, 900.0], 4: [350, 2100.0], 8: [400, 2340.0]}, 'B': {6: [760, 2210.0], 2: [475, 3162.5], 3: [380, 2785.0], 4: [330, 1960.0], 5: [395, 2316.25], 8: [380, 2205.0], 9: [600, 3200.0], 10: [500, 3390.0], 1: [380, 835.0], 7: [950, 2350.0], 14: [400, 1800.0], 15: [500, 1400.0]}, 'C': {11: [100, 3650.0], 12: [2700, 3050.0], 1: [360, 770.0], 13: [2000, 4500.0], 6: [720, 2070.0], 3: [360, 2620.0]}, 'D': {20: [2000, 5500.0], 36: [4000, 9500.0], 28: [3200, 16800.0], 35: [5000, 10500.0], 21: [2400, 13000.0], 22: [6400, 33200.0], 17: [3000, 22000.0], 18: [2000, 12500.0], 37: [3000, 9250.0], 16: [500, 2820.0]}, 'E': {18: [2400, 15000.0], 38: [5000, 284500.0], 24: [3000, 13750.0], 25: [4000, 19000.0], 26: [4500, 25750.0], 39: [4000, 74000.0], 28: [4000, 21000.0], 27: [5000, 23000.0], 19: [3600, 21000.0], 40: [10000, 150000.0], 17: [3600, 26400.0], 41: [1000, 90000.0], 22: [8000, 41600.0], 21: [3000, 16350.0], 29: [15000, 101500.0], 30: [5000, 24250.0], 31: [2000, 13300.0]}, 'F': {32: [12000, 49000.0], 33: [6000, 24500.0], 24: [2700, 16160.0], 21: [2700, 17610.0], 25: [4000, 19000.0], 26: [4500, 25750.0], 22: [7200, 44880.0], 29: [13500, 109550.0], 17: [3600, 26400.0], 28: [3600, 22640.0], 30: [4500, 26150.000000000004], 19: [3600, 21000.0], 34: [6000, 27600.0], 23: [3000, 17700.0]}}\n"
]
}
],
"execution_count": 8
},
2024-09-06 08:11:59 +00:00
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:50.934023Z",
"start_time": "2024-09-06T09:04:50.350653Z"
2024-09-06 08:11:59 +00:00
}
},
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# 提取作物编号和对应的利润\n",
"crop_ids = list(land_crop_stats['A'].keys())\n",
"profits = [info[1] for info in land_crop_stats['A'].values()]\n",
"\n",
"# 创建饼图\n",
"plt.figure(figsize=(8, 8))\n",
"plt.pie(profits, labels=crop_ids, autopct='%1.1f%%', startangle=140)\n",
"plt.title('Profit Distribution for Land Type A啊啊啊')\n",
"plt.show()"
],
"id": "d0ab1b80cf38a2d1",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 800x800 with 1 Axes>"
],
"image/png": "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DRITE/Hcc881/hJw+n+bjz/+GBEREU2uyrSX2WzGlClTcO655yIkJARhYWEYOXJkk1vzp379zZkzBz169ICfnx8GDhyITZs2NTvmvHnzMGDAAGi1WsTHx2P8+PEdzndSdXU1AgICcNlllzX72MmvpZNZTn5+Tv86eu6555p8HZ087rPPPov4+Hj4+PigV69emDt3bptzTZ8+HT179sRNN92Ea6+9FjNmzDjr18CpNmzYgPPPPx8ajQY33ngjQkJCEBISgvvvv7/N59+wYQMuvvhiFBUVNb4+JCQEq1atatPrCwoKUFBQgEGDBmHy5MmNr+/WrVubMxA5AgsfuZRdu3YBANLT05s8/uqrryIqKgpz587FBRdcAIPBgOHDh+Pdd9/Ftddei2+++QZvvvkm9u/fjwsuuACbN28G0FACnn32WQANt1+XLVuGyy+/vNl53333XbzzzjsAgGeffRbLli3Dc8891+H3cffdd0OhUGDevHktflyWZVx22WX4+eef8Z///Adz587FI488gpqamjPmvuuuu5oc4/7778ett96K7777DlFRUWfMsmvXLtxzzz245ZZbMGvWLFx88cX44IMPGo/fVlFRUVi2bFljQVi2bBmWLVuGPn36tPj84uJiDBo0CDNnzsSYMWMwd+5cvPjii1izZg0GDx7cbGxiTU0NRo8ejYsvvhgzZsxAamoqxo4de9YJJ3fddVfjbcvLLrsMy5Ytw7vvvgsA2LRpEwYPHozt27fjtddew3fffYcbb7wRU6ZMwSWXXIL6+vomx9q5cye++OILfPjhh3j11Vfb9bk5VVFREd5//31cd911mDlzJl577TWsX78eN910U7Pi8uuvv+KTTz7Byy+/jHfffRdZWVm49tprm0wGmDlzJm666Sb4+/tj+vTpePPNN/H999/j119/7XBGoOGK92233Ya1a9ciPz+/ycdmz56NjIyMJrdFT/86uvTSSzFp0qQmt/aNRiMuvfRSTJ8+HY888gjmzJmD9PR03HHHHViyZEmrmfR6PRYsWICHHnoIQMPYzKysrDYPFzhZ1k6aP38+Zs6c2abXAoDFYsHmzZsbjxEUFARZljFs2LA2H2P9+vWNpRMAnnrqKRw/frzNrydyFN7SJaEMBgNqamqg1+uxePFiTJgwAYMGDcLIkSObPK9Lly6YPn1649/fe+89bNmyBXPnzsVtt93W+Phtt92G1NRUvPDCC9i0aROGDRvW+M321Nuvp1/JGjRoEOrq6gAAvXv37vRtr6CgIERERJzxG71er8e+ffvwzDPPNA4iP9WZcp/qlltuaVNpO3jwIHbv3o20tLTG19XV1WH69Ol4+eWXWxwf1RJfX1+MGDEC33//PQC0+jkaO3YssrKysGnTJpx33nmNj19zzTXo06cPXn/9dXzzzTeNj5eWluKbb75pPO5VV12FuLg4zJ0794xXaFJTUxvHocXFxTXJ9PDDDyMoKAjbtm1rHGN10003IT09HQ8//DDmzJmDBx54oPH5Bw4cQFZWVps/H2cSERGBAwcONBmDqtfr8dZbb+HEiRNISkpqfLyyshJ//vkntFotgIaxng8++CCWLl2KO++8E0ajEc8//zwGDBiANWvWQKVq+JZ9/fXXo3v37p3KCTR8jmbMmIHvv/++8WspOzsb69atazYxp6W
},
"metadata": {},
"output_type": "display_data"
}
],
2024-09-07 03:03:39 +00:00
"execution_count": 9
2024-09-06 08:11:59 +00:00
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:50.950023Z",
"start_time": "2024-09-06T09:04:50.936023Z"
2024-09-06 08:11:59 +00:00
}
},
"cell_type": "code",
"source": [
"# 数据导出\n",
"def get_crop_name(crop_num):\n",
" return df_crop_details[df_crop_details['cropNum'] == crop_num]['cropName'].values[0]\n",
"\n",
2024-09-07 03:03:39 +00:00
"\n",
"land_crop_stats_A = {get_crop_name(crop_num): v for crop_num, v in land_crop_stats['A'].items()}\n",
2024-09-06 08:11:59 +00:00
"land_crop_stats_A"
],
"id": "c072743a8ac6f911",
"outputs": [
{
"data": {
"text/plain": [
"{'小麦': [800, 2350.0],\n",
" '玉米': [1000, 2500.0],\n",
" '黄豆': [400, 900.0],\n",
" '绿豆': [350, 2100.0],\n",
" '谷子': [400, 2340.0]}"
]
},
2024-09-07 03:03:39 +00:00
"execution_count": 10,
2024-09-06 08:11:59 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
2024-09-07 03:03:39 +00:00
"execution_count": 10
2024-09-06 08:11:59 +00:00
},
{
"metadata": {
"ExecuteTime": {
2024-09-07 03:03:39 +00:00
"end_time": "2024-09-06T09:04:51.014030Z",
"start_time": "2024-09-06T09:04:50.953021Z"
2024-09-06 08:11:59 +00:00
}
},
"cell_type": "code",
"source": [
"import pandas as pd\n",
"\n",
"# 创建一个Excel写入器\n",
"with pd.ExcelWriter('land_crop_stats.xlsx') as writer:\n",
" for land_type in ['A', 'B', 'C', 'D', 'E', 'F']:\n",
" # 转换数据格式\n",
" land_crop_stats_land = {get_crop_name(crop_num): v for crop_num, v in land_crop_stats[land_type].items()}\n",
" df = pd.DataFrame.from_dict(land_crop_stats_land, orient='index', columns=['产量', '利润'])\n",
" df.reset_index(inplace=True)\n",
" df.rename(columns={'index': '作物'}, inplace=True)\n",
2024-09-07 03:03:39 +00:00
"\n",
2024-09-06 08:11:59 +00:00
" # 写入对应的sheet\n",
" df.to_excel(writer, sheet_name=land_type, index=False)\n",
"\n",
"print(\"Excel文件已成功导出为 'land_crop_stats.xlsx'\")\n"
],
"id": "2f358e6cfe30db3d",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Excel文件已成功导出为 'land_crop_stats.xlsx'\n"
]
}
],
2024-09-07 03:03:39 +00:00
"execution_count": 11
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# 亩利润",
"id": "db40b11f57b948bd"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-09-06T09:09:16.739699Z",
"start_time": "2024-09-06T09:09:16.710667Z"
}
},
"cell_type": "code",
"source": [
"unit_profit = []\n",
"for line in df_crop_details.values:\n",
" s = str(line[7]).split('-')\n",
" unit_profit.append((float(s[0]) + float(s[1])) / 2 * line[5] - line[6])\n",
"df_crop_details['unitProfit'] = unit_profit\n",
"df_crop_details"
],
"id": "118b540b3c5c328c",
"outputs": [
{
"data": {
"text/plain": [
" no cropNum cropName cropLandType season unitYield cost price \\\n",
"0 1 1 黄豆 平旱地 单季 400 400 2.50-4.00 \n",
"1 2 2 黑豆 平旱地 单季 500 400 6.50-8.50 \n",
"2 3 3 红豆 平旱地 单季 400 350 7.50-9.00 \n",
"3 4 4 绿豆 平旱地 单季 350 350 6.00-8.00 \n",
"4 5 5 爬豆 平旱地 单季 415 350 6.00-7.50 \n",
".. ... ... ... ... ... ... ... ... \n",
"102 103 30 生菜 智慧大棚 第二季 4500 2200 5.40-7.20 \n",
"103 104 31 辣椒 智慧大棚 第二季 1800 1300 7.20-10.20 \n",
"104 105 32 空心菜 智慧大棚 第二季 11000 5500 3.60-7.20 \n",
"105 106 33 黄心菜 智慧大棚 第二季 5400 2750 4.80-6.00 \n",
"106 107 34 芹菜 智慧大棚 第二季 6000 1200 3.80-5.80 \n",
"\n",
" unitProfit \n",
"0 900.00 \n",
"1 3350.00 \n",
"2 2950.00 \n",
"3 2100.00 \n",
"4 2451.25 \n",
".. ... \n",
"102 26150.00 \n",
"103 14360.00 \n",
"104 53900.00 \n",
"105 26410.00 \n",
"106 27600.00 \n",
"\n",
"[107 rows x 9 columns]"
],
"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>no</th>\n",
" <th>cropNum</th>\n",
" <th>cropName</th>\n",
" <th>cropLandType</th>\n",
" <th>season</th>\n",
" <th>unitYield</th>\n",
" <th>cost</th>\n",
" <th>price</th>\n",
" <th>unitProfit</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>黄豆</td>\n",
" <td>平旱地</td>\n",
" <td>单季</td>\n",
" <td>400</td>\n",
" <td>400</td>\n",
" <td>2.50-4.00</td>\n",
" <td>900.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>黑豆</td>\n",
" <td>平旱地</td>\n",
" <td>单季</td>\n",
" <td>500</td>\n",
" <td>400</td>\n",
" <td>6.50-8.50</td>\n",
" <td>3350.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>红豆</td>\n",
" <td>平旱地</td>\n",
" <td>单季</td>\n",
" <td>400</td>\n",
" <td>350</td>\n",
" <td>7.50-9.00</td>\n",
" <td>2950.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>绿豆</td>\n",
" <td>平旱地</td>\n",
" <td>单季</td>\n",
" <td>350</td>\n",
" <td>350</td>\n",
" <td>6.00-8.00</td>\n",
" <td>2100.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>爬豆</td>\n",
" <td>平旱地</td>\n",
" <td>单季</td>\n",
" <td>415</td>\n",
" <td>350</td>\n",
" <td>6.00-7.50</td>\n",
" <td>2451.25</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>102</th>\n",
" <td>103</td>\n",
" <td>30</td>\n",
" <td>生菜</td>\n",
" <td>智慧大棚</td>\n",
" <td>第二季</td>\n",
" <td>4500</td>\n",
" <td>2200</td>\n",
" <td>5.40-7.20</td>\n",
" <td>26150.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>104</td>\n",
" <td>31</td>\n",
" <td>辣椒</td>\n",
" <td>智慧大棚</td>\n",
" <td>第二季</td>\n",
" <td>1800</td>\n",
" <td>1300</td>\n",
" <td>7.20-10.20</td>\n",
" <td>14360.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>105</td>\n",
" <td>32</td>\n",
" <td>空心菜</td>\n",
" <td>智慧大棚</td>\n",
" <td>第二季</td>\n",
" <td>11000</td>\n",
" <td>5500</td>\n",
" <td>3.60-7.20</td>\n",
" <td>53900.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>106</td>\n",
" <td>33</td>\n",
" <td>黄心菜</td>\n",
" <td>智慧大棚</td>\n",
" <td>第二季</td>\n",
" <td>5400</td>\n",
" <td>2750</td>\n",
" <td>4.80-6.00</td>\n",
" <td>26410.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>106</th>\n",
" <td>107</td>\n",
" <td>34</td>\n",
" <td>芹菜</td>\n",
" <td>智慧大棚</td>\n",
" <td>第二季</td>\n",
" <td>6000</td>\n",
" <td>1200</td>\n",
" <td>3.80-5.80</td>\n",
" <td>27600.00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>107 rows × 9 columns</p>\n",
"</div>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 20
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# 地块统计",
"id": "14acd1cf36cdaa42"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-09-06T15:44:16.609351Z",
"start_time": "2024-09-06T15:44:16.594191Z"
}
},
"cell_type": "code",
"source": [
"# 统计每种土地类型的面积总和\n",
"total_area = df_land.groupby('landType')['landArea'].sum()\n",
"custom_order = ['山坡地', '平旱地', '智慧大棚','梯田', '水浇地', '普通大棚']\n",
"total_area_reordered = total_area.reindex(custom_order)\n",
"total_area"
],
"id": "fdabd5dd4731432c",
"outputs": [
{
"data": {
"text/plain": [
"landType\n",
"山坡地 108.0\n",
"平旱地 365.0\n",
"普通大棚 9.6\n",
"智慧大棚 2.4\n",
"梯田 619.0\n",
"水浇地 109.0\n",
"Name: landArea, dtype: float64"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 76
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-09-06T16:03:59.336594Z",
"start_time": "2024-09-06T16:03:59.234957Z"
}
},
"cell_type": "code",
"source": [
"# 将total_area分别使用柱状图和饼状图进行可视化\n",
"plt.figure(figsize=(10, 6))\n",
"plt.bar(total_area.index, total_area.values, color='orange')\n",
"plt.xlabel('地块类型', fontsize=14)\n",
"plt.ylabel('总面积/亩', fontsize=14)\n",
"plt.title('各土地类型总面积', fontsize=16, fontweight='bold')\n",
"plt.xticks(fontsize=14)\n",
"plt.yticks(fontsize=14)\n",
"plt.show()\n",
"# plt.figure(figsize=(8, 8))\n",
"# plt.pie(total_area_reordered.values, labels=total_area_reordered.index, autopct='%1.1f%%')\n",
"# plt.title('各土地类型面积分布')\n",
"# plt.show()\n"
],
"id": "8bf95aecfa165c68",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA2EAAAI0CAYAAACUOCHPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB3N0lEQVR4nO3deXwN1+P/8fcVkggS+y6qtQallobysZXatbXUVvtSiiq1fkpR2qilWrT2qp3aPrXF2hBVWgS170uIPSQIIsn8/sgv83UlIbFMttfz8biPhztzZubMHbmZd86Zc2yGYRgCAAAAAFgiVUJXAAAAAABSEkIYAAAAAFiIEAYAAAAAFiKEAQAAAICFCGEAAAAAYCFCGAAAAABYiBAGAAAAABYihAFACvbDDz9o6tSp+vPPP3Xv3r2Xvv/AwEDt37/ffIWHh8d52/DwcKVPn17p06dX8eLFn1q2ffv2stlsstls2rx584tWO0FERETo4sWLunjxom7cuPHUsqGhoVq2bJkOHToU4/oTJ05o7dq1unr16quoKgDgBaVO6AoAABLG8uXL1adPH0lS+vTpdfToUaVLl+6lHmPVqlXq0KGD+f7WrVvKmDFjnLY1DMMMhq8iIJ4/f14//vijRo0aJRcXF3P5Bx98oN9//12StGnTJtWsWdNcd+7cOY0aNUoTJkxQhgwZ7PY3YMAABQQExOnY1atXV6dOneyWXbt2Tfny5ZMk1a5dW+vXr49xW29vb3388ccKDAxUkSJFtHfvXrvr9vDhQzVt2lQHDx6UJDVt2lRLly6Ntp/Vq1e/9M+1SZMmSpMmjaTIoHj58mVduHBBZ8+e1dmzZ3Xu3DlNmTJFzs7OL/W4AJDUEMIAIAU6efKkPvnkE/N9oUKFNHXq1Dht6+HhoVatWr2qqj3T7t27tXfvXkmRYaZIkSLx3sfNmzdVu3ZtHT9+XOvXr9fixYv15ptvPnWbHTt26MMPP9T169d18OBBrV+/XpkyZTLXr1q1SsePH4/T8Z2dnXXnzh0zBB88eFBZs2aN07ZVqlRR+vTpFRgYqOPHj+uzzz7TrFmzzPVDhgwxA1iOHDn0ww8/xLifXr166fz583E6ZlzdunVLXl5e+vXXX3X9+nUZhhGtTLt27bR161aNGDEiTvscNmyYhg8f/lLrCQAJjRAGACnMtWvXVK9ePd28edNctm/fPu3bty9O27///vsJGsJ+//13ffPNN5Kk2bNnP1cIS5Mmjd544w0dP35cR48elaenp8aPH69PP/00xvIzZ85Ujx49FBoaKknKnj27HBwc7MoULlxYqVOn1smTJxUaGipnZ2e98cYbkqTTp0/rwYMHcnJyUsGCBZUnT5541zlKunTp9NNPP6lhw4ZKlSqVLl++rNu3bytjxozavn27vv/+e0lS6tSp9dtvv73QsZ5HlixZdO3atVjX79ixw8LaAEDixDNhAJCCnDlzRpUqVdKpU6eeex82m+0l1ujVuHjxohYvXqxevXqpTJkyWrNmjd16V1dXrV69WgMGDJAkPXjwQGvWrNGjR4+i7ev27dsaNWqUQkNDZbPZNHToUK1atUqurq525VatWqVDhw4pb968kqSiRYvq0KFDOnTokBkUCxYsqEOHDsW5Fehxjz/31rBhQ0mRz5F5e3srU6ZMstlsqlKliiIiIiRJYWFhqlq1qrnN6NGj7fa3b98+Xb9+PcbX2bNnlTZtWrtjx1b28Zebm5tKly4tDw8P1axZU5kzZzb3sWHDBl25ckVffvmlXT2yZcumIkWK2L2yZcsW788HAJISWsIAIIXYsGGD2rZtG62VombNmpo/f75y5MgRbZtNmzapffv25rNO2bNn15AhQyypb1xFREQoJCTEfN+sWTPdvn3brkyqVJF/cwwJCdHGjRvN5RUrVlSzZs3k6+urtm3bau3atbp8+bK5/q+//tLdu3f1+eefq3///mrbtq3KlCljPjOWKVMmVa1a1e5YUV3wEntYfbwr5ZOWLVum+/fvS5IcHR01fPjwOHeXfO+993T48GFJUoUKFfT3339Lkt555x2lT58+WvkBAwaoX79+dsvGjRun/v37x+l4AJAUEcIAIAVYsWKFmjZtagaEPHnyKGPGjDp8+LA2b96s0qVL68cff1SzZs1ks9l09epVDR8+XNOmTTO3ef3117VhwwYVLFjQbt8PHz6M8dkfSdFalh4+fKgHDx7EWDZ16tRKnTry19L//vc/nTlzxlwXHBysH374QR07drTbxsvLS59//rmCgoLMZU8GMCkySEiRXTE//PDDGI/fsmXLaMuGDRtm9/6XX37RL7/8Yr4vW7as9uzZo8uXL5vPV0WFl/v372vXrl2SZIbEx5dFtVg9j4wZM8YYmp904cIFsz4xadCggdauXfvUfYSGhuq11157apksWbI8c0RHAMD/IYQBQApQv359lStXTrt371bFihW1YsUKpU2bVs2aNdOmTZt05coVNW/eXGPHjlWVKlU0bdo0u5HzWrdurYkTJ9p1L4uSP3/+OA+FnjNnzljXffLJJ+bgIFOnTtWGDRvMdbdu3VKfPn00bdo0nTx50lx+4sSJaPvJnj27qlSpovv375sBIyqEvSoLFiyI1nJz7NgxVaxY0W7ZmTNnzGUjR4587uM1b948TgOpVKtWTdu2bXvu4zyP2I4ZNZpk7dq1VaFCBUvrBACJDSEMAFIAJycnLV68WOPHj9f3338vJycnSdL69ev1+eefa9KkSZKkPXv2aM+ePeZ2Dg4OmjhxYqwDVljt2LFj0ZblzJlTNpvN7Ea4YMEC1axZUxMmTDBDWNT55sqVS9u3b4+2j+PHj+vLL7+MMUxmzZpVzZs31/vvv2/3nJSkaMPUJ2Xjxo1T2rRp1aNHD0mRo2D26tXLXD9//nxzUI1Ro0YpS5Ys+uqrr3T9+vUEqS8AJGWEMABIIV577TUNGjRIu3bt0rFjx7Rjxw5t375d586di3Wb8PBw9ejRQ0OGDFHJkiX1xhtvKHPmzMqUKZMKFiyo5s2bv5K6Nm/eXKVKldKYMWMkRQ6k0a5dO02aNEmOjo7mKIXff/+9+vTpo/bt22vOnDl2+wgLCzP/HTUvlZOTkypXriwpsjvgjh07NGXKFC1dutSu/ONu3Lihn376SXPnzlXjxo3Vtm1bVa9e3e6Zr8aNG6to0aKaMmWK1q1bJ0kaNGiQKlWqJEn67LPPdPbsWbm7u+unn36SFDlIR9GiRSVJ7u7uCgwMfLEP7QW1a9dOGTNmNENYvnz51K1bN3P9nj17zBDWunVrvfbaaxo3bly0EObu7m4ORHL69Gnzcy1cuLBsNps5FxoApGSEMABIAX766Sf17dvXDC8xsdlsqly5sooVK6aVK1fa3VzfunVLvr6+8vX1NZcNHDhQzZs315UrV2Ld56+//vpckzV36NBBYWFhZgjLlCmTJk6cqD59+mjWrFnmEPVPG1zi8WfPHp/MeMmSJVqzZo02b95sV3cnJyd9+eWX+vvvv80WtKFDh+ro0aNatWqV7ty5ozlz5mjOnDnKnz+/2rVrp44dOyp//vx6/fXX5eLiYrayOTo66osvvjAHs4gazCRDhgxq0KCBecx///1Xa9as0YYNG8y5z551XpI0bdo0TZs27allXtS9e/fsWh4ff+7uaebOnSspsnWxWLFi5vK9e/eaA3Mw7xeAlI4h6gEgBWjSpEmMyx0dHVWjRg2NHz9eZ86cka+vr6ZNm6aAgABt2LBBffv2ValSpaLNiWWz2dS5c2crqm6nQIECcS77+AAdbm5u5r/v3bun+fPnmwEsffr06tGjh06dOqWhQ4fKxcVFTk5OcnJyUvXq1bV06VJdunRJ48ePN0PF+fPn9fXXX+vff/8199uiRQvduXNHktSqVasYRxO8du2ahgwZYgaV4OBgzZs3TzNnzrSbp6169epxPs9X5c8//1SxYsXM17Jly+K1/fjx4+0GbPnnn39i7LrYv39/cxj9qBcjIwJI7mgJA4AUIGfOnGrRooX8/PxUokQJlS5dWhUrVlT58uWjPeckRY5U+N577+m9996TFDm634EDB3T
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 96
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2024-09-06T16:08:29.830513Z",
"start_time": "2024-09-06T16:08:29.699151Z"
}
},
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.figure(figsize=(12, 10))\n",
"\n",
"# 选择一个颜色列表\n",
"colors = [ '#ff9999', '#66b3ff', '#ffcc99', '#99ff99','#c2c2f0', '#ffb3e6']\n",
"\n",
"# 绘制饼图\n",
"plt.pie(total_area_reordered.values, \n",
" labels=total_area_reordered.index, \n",
" autopct='%1.1f%%', \n",
" colors=colors, \n",
" startangle=140, \n",
" shadow=True, \n",
" explode=[0.1]*len(total_area_reordered),\n",
" )\n",
"\n",
"# 添加标题\n",
"plt.title('各土地类型面积分布', fontsize=20, fontweight='bold')\n",
"\n",
"# 添加图例\n",
"plt.legend(title='土地类型', loc='center left', bbox_to_anchor=(1, 0, 0.5, 1), fontsize=16)\n",
"\n",
"# 显示图表\n",
"plt.show()\n"
],
"id": "16fa5dee9e19c1c8",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 1200x1000 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA8oAAAM1CAYAAACoqwj4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3Rc1b328e809d5lSbZcwQ3cMDY23XS4KQRILiQ4QEKoIaS8EJq5QCAkEEJJAiEhlwsBg8HGNBsb4957wU2u6s3q0vTz/mFb0SDZmpGlGZXno6W1mDNnn7NHloSe2Xv/tskwDAMRERERERERAcAc6g6IiIiIiIiIdCcKyiIiIiIiIiItKCiLiIiIiIiItKCgLCIiIiIiItKCgrKIiIiIiIhICwrKIiIiIiIiIi0oKIuIiIiIiIi0oKAsIiIiIiIi0oI11B0Qkd6nqKiIv/3tb4wcOZJRo0YxbNgwbDZbqLsVsLq6OiorK5sf9+vXj7CwsJO2OXLkCIcPH25+PHToUKKjo7usjyIiIiLS+TSiLCKd7q677uKJJ57g+9//PqNGjeLJJ58M2r3feecdLr/88ubPe++9t8PXevvttxk4cGDz59atW9ttM3fuXMaOHdv8uWnTpoDv+8knn/DOO++0+dy0adMwmUyYTCZiYmLaPCc/P5+7776bpqamgO/dUa+99ho33XQTN910E3fffXfQ7hsIt9vNgQMH2LhxY9Du+emnn/LHP/6R6urqNp8vLCzkiSeewOPxdNo9b7rpJiZPnsz111/Pr371qxPeW0RERE5MI8oi0qlmzpzJnDlzmh8PGTKEBx98MGj337dvH/Pnz29+XFFREbR7d4aVK1dy/fXX09TUxKeffsorr7xCfHy83+3XrVvHf/3Xf1FSUsL27dv55JNPWgXqX/7yl/z5z38OuG9Tp07lq6++4tChQ83Hjo+yr1y5krfffhuA9PR0Xn75ZQBmzJjB448/HvC9AnXttdcya9Ysvv76aw4cOEBBQQGFhYUUFhZy6NAh9u/fT35+Pm63m/j4eCorK9m7dy8LFy4M+F7nnnsuZ555ZrvnNTQ0cMcdd5Cfn8+MGTO4+eabeeCBB8jJyaGsrIxnnnmGv/71r9jtdsLDw/nNb37TkZfuo7KykpkzZ+J2u1m9ejUDBw7kj3/84ylfV0REpK9RUBaRTrN582ZuvfVWn2N5eXlERkYGfK1bb72V119/vbO61un++c9/8s9//rP58ezZs0lNTT2la3q9Xn72s581jwS//fbbrFq1ivfee4/x48e32/7dd9/llltuaW6/ZMkSHn30UZ5//nmf8zweT4dGMN1uNw0NDQwcOLD52Lp165gwYULA1+oqv/nNb/j0009Pek5NTQ3r169n586d3HPPPQHf409/+pNfQXnGjBnk5+cDR0Pz//7v//Lb3/4WgI8++og//elPzec+9thjfPvb32bYsGEB96elDz/8ELfb3fz4xhtvPKXriYiI9FUKyiLSKQoLC/mv//ovGhoaQt2VoDh8+DArVqxofuxwOE75mmazmS+++ILvfOc7rF69GoD9+/czZcoUXnnllVZvQhzn9Xp5+OGHefrpp32O33HHHfz+978/5X71JBMnTmw3KAOsXr06oJH6QC1btowXXnjB59hDDz1EVlYWcPSNoL///e+sW7cOALvdzo033siyZcuIiIho85qVlZU89NBDJ73vokWLfB5v3ryZn/3sZwH3/6mnniI5OTngdiIiIr2FgrKInLIDBw4wbdq05tEzaa2qqopVq1axfPlyli9fzmWXXdZm6MnIyGDx4sX89Kc/5c033wTAZrMxfPjwE17b5XL5rLsNDw/n5Zdf5rbbbmvz/N/+9rf87Gc/o66ujokTJzYff+ONN5g0aRJwdCTy+DV/8pOfcP/99xMVFRXw63744Yd54IEH2j3v7rvv5h//+Efz45SUFPbt29du8bTjLBYLAKNGjcJsNpOamkpiYiK7du1qPueee+7hRz/6EcOGDSMuLo5//etfgb0YPxUWFnLdddf5jOwOHz6c+++/v/mx2Wzmr3/9K5MmTWo+b/369fz4xz8+4fr0uro6Xn311YD68sknn3TgFcADDzygoCwiIn2agrKInJItW7Zw1VVXUVhY2Oq54wHrZNasWcN9993nU3AoPDyc73//+53d1ZB4+umnOXz4MDt27MAwjObj06ZNa/7vxsZGioqKfNo98sgjREVF8fe//50XX3yRtLQ08vLyfAp0GYZBXl4eAH/84x8pKSnhwIEDvPrqq0yYMKH5OYD4+PjmqeFpaWmkpaVRVVXlc8+cnBxOP/10AJ/p8klJSc3H6+vrA3r9VqsVq/Xk/6vxeDx8/PHHPsduueUW4uLiAroXwLe+9S0cDgdWq5Vdu3b5vMEwbty4k04Tnz17Nt/+9rdbHV+8eDEXXnihX/e32+1897vfpbS0tPmYzWbj7bffJjw83Ofc8ePH89hjj/HII480H3v33XcZMWKEzzEREREJPgVlEemwf/zjH9xzzz0nrK7897//ndLSUv71r3+RmJjo85zb7eapp57iySef9Bl5s9lszJo1yydI9gTbt2/no48+YubMmT7HP/vsszbPbzlSunTpUq644ooTXvuWW25p83hjYyNDhw5tdfwHP/hBq2Ntrfn2er0+j00m0wn70JWWLFlCWVlZ82Oz2cwdd9zRoWsdH1kOhaamJr71rW+xdu1an+NPPfUUY8eObbPNgw8+yBdffMGyZcuajz366KPYbDa/RuJFRESkaygoi0iHrFq1qtXU3ujoaG666Saf6aFz585l6NChPPTQQ9x5552EhYXx3nvv8cgjj7B3716f9larlXfffZerr746KK/hRF599VXeeOMNn/AG8OMf/5izzz6bF154odUI8MmCblu+OboYLPX19RQUFACtK4IXFBQ0T1Vu+ebHkSNHmo9/8w0Pf9jt9oAKunm9Xp+CYe1ZtmwZU6dOBeCFF15onp3wzdc3Z84cDh48CHDKRbO+qbGxkWuuuabVGuEf/OAH/PrXvz5hO4vFwvvvv89ZZ53ls3ThwQcfpKmpyadieG5urs+shOM8Hg+TJk1i/fr1zceWLFnCeeedR3l5uc/6+ezs7A69PhERkT7HEBHpoBtvvNEADMCIiooyFi9ebBiGYfz+979vPt7ys3///saYMWPafC4tLc348ssvT3q/9PT0Ntt2xue6deua7/PQQw+d8DybzWZYLBa/r5uammpce+21xksvvWREREQ0H3/55Zeb7/f555932es6/nnrrbcahmEYs2fPPqXrvPPOO21+3W6++ebmY+np6T7/bk1NTV362pYtW9Z8rwEDBvjV5qqrrjLeeOMNn2OzZ89u8/vuq6++8jnvT3/6k8/zxcXFxpQpU1rd45xzzjHsdvvJf4iO2bRpkxEVFdXqGrfccovR1NR00rZ/+MMffNpMnz69+blv9svlcvnVHxERkb7OjIhIB7300kukpaWRkpLCwoULOf/884GjW/T885//bDVqevjwYTZv3tzqOueeey6bNm3ioosuCka3T4nL5Trp1krfLD714YcfMmvWLO6++27M5v/8ym35tZk2bRpVVVVtfubl5XH99deftE+pqance++9rF279oTXeemllzr4iuVkVq5cyfjx430qoANMmDCBTz75xO+ZA2PGjGH27Nmtzv/nP//JpEmTfNabt7R9+3YeffTR5sdJSUk8++yzAb4KERER+SYFZRHpsMTERP71r3+xevVqJk+e7PPcDTfccNIpp8f179+fJ554gpSUlK7qZsDCw8OJjo5uFVoiIyOx2Wxttnn66afZtm0bf/vb30543ZZrgltuAWS1WklISPD5PHLkCE888QTjxo3jvffeO2l/y8vLefHFF5k4cSKXX345b7/9Nh6Px+d6HdnLuqs899xzuFyuVm+aLFy4EJfL1fx5oucXL14ctL6ezPbt27ngggtaTcOfNGkSCxcuDHia+qWXXsr777/f6ntsy5YtrbaagqNVsL/3ve/5TJN/+umnT3k/bxEREdEaZRE5RcfX5hYWFrJ161ZWr17
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 102
2024-09-06 08:11:59 +00:00
},
{
"metadata": {},
"cell_type": "code",
"outputs": [],
"execution_count": null,
"source": "",
2024-09-07 03:03:39 +00:00
"id": "6be1abcd8fd9920c"
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}