From e47b0a4e162ee9c31adb7b48873f4ff9a006f2ad Mon Sep 17 00:00:00 2001 From: heshunme Date: Fri, 6 Sep 2024 15:16:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=EF=BC=9A?= =?UTF-8?q?=E7=8E=B0=E5=B7=B2=E5=AE=8C=E6=88=90=E6=AF=8F=E7=A7=8D=E4=BD=9C?= =?UTF-8?q?=E7=89=A9=E7=9A=84=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1=E5=92=8C?= =?UTF-8?q?=E5=AF=B9=E6=AF=8F=E7=A7=8D=E7=B1=BB=E5=9E=8B=E7=9A=84=E5=9C=B0?= =?UTF-8?q?=E5=9D=97=E4=B8=AD=E7=9A=84=E7=A7=8D=E6=A4=8D=E6=83=85=E5=86=B5?= =?UTF-8?q?=E5=92=8C=E7=9B=88=E5=88=A9=E6=83=85=E5=86=B5=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.ipynb | 426 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 data.ipynb diff --git a/data.ipynb b/data.ipynb new file mode 100644 index 0000000..7ee57a7 --- /dev/null +++ b/data.ipynb @@ -0,0 +1,426 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": "# 对于每种作物的数据统计", + "id": "493d1cd2ba436df4" + }, + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2024-09-06T06:38:36.481379Z", + "start_time": "2024-09-06T06:38:36.158045Z" + } + }, + "source": [ + "import pandas as pd\n", + "\n", + "LandType = {\"A\": \"平旱地\", \"B\": \"梯田\", \"C\": \"山坡地\", \"D\": \"水浇地\", \"E\": \"普通大棚\", \"F\": \"智慧大棚\"}\n" + ], + "outputs": [], + "execution_count": 1 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-06T06:38:36.915607Z", + "start_time": "2024-09-06T06:38:36.482384Z" + } + }, + "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": [], + "execution_count": 2 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-06T06:38:36.931334Z", + "start_time": "2024-09-06T06:38:36.917487Z" + } + }, + "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": [], + "execution_count": 3 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-06T06:38:36.946802Z", + "start_time": "2024-09-06T06:38:36.932693Z" + } + }, + "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", + " df_crop_details[(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", + " df_crop_details[(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", + " df_crop_details[(df_crop_details['cropNum'] == crop_num) & (df_crop_details['cropLandType'] == crop_land_type) & (\n", + " df_crop_details['season'] == season)].cost.values[0]\n", + "\n", + "def get_crop_profit(crop_num, crop_land_type, season):\n", + " return get_crop_yield(crop_num, crop_land_type, season) * get_crop_price(crop_num, crop_land_type, season) - get_crop_cost(crop_num, crop_land_type, season)" + ], + "id": "6571c03dd0a145d", + "outputs": [], + "execution_count": 4 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-06T06:38:37.380747Z", + "start_time": "2024-09-06T06:38:37.293442Z" + } + }, + "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" + ] + } + ], + "execution_count": 5 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "# 对每种类型的地块中的种植情况和盈利情况进行统计", + "id": "aa7b13944d227aa3" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-06T06:38:38.680027Z", + "start_time": "2024-09-06T06:38:38.640023Z" + } + }, + "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": [], + "execution_count": 6 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-09-06T06:39:45.321314Z", + "start_time": "2024-09-06T06:39:45.200761Z" + } + }, + "cell_type": "code", + "source": [ + "print(\"---------------------\")\n", + "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 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "d0ab1b80cf38a2d1" + } + ], + "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 +}