{ "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 }