1056 lines
50 KiB
Plaintext
1056 lines
50 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:13:02.862304Z",
|
||
"start_time": "2024-09-06T03:13:02.701439Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"\n",
|
||
"# 读取数据\n",
|
||
"def read_data():\n",
|
||
" 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",
|
||
" df_planting = pd.read_excel('./data/2.xlsx', sheet_name=0)\n",
|
||
" df_crop_details = pd.read_excel('./data/2.xlsx', sheet_name=1)\n",
|
||
" return df_land, df_crop_land, df_planting, df_crop_details\n",
|
||
"\n",
|
||
"\n",
|
||
"# 数据预处理\n",
|
||
"def preprocess_data(df_land, df_crop_land, df_planting, df_crop_details):\n",
|
||
" # 合并地块信息和种植信息\n",
|
||
" df_merged = pd.merge(df_land, df_planting, left_on='地块名称', right_on='种植地块')\n",
|
||
"\n",
|
||
" # 合并作物信息和地块类型信息\n",
|
||
" df_crop_details['销售单价中间值'] = df_crop_details['销售单价/(元/斤)'].apply(\n",
|
||
" lambda x: (x.split('-')[0] + x.split('-')[1]) / 2)\n",
|
||
" df_final = pd.merge(df_merged, df_crop_details, on=['作物编号', '作物名称', '地块类型', '种植季次'])\n",
|
||
"\n",
|
||
" return df_final\n",
|
||
"\n",
|
||
"\n",
|
||
"# 计算总产量和总销售收入\n",
|
||
"def calculate_stats(df_final):\n",
|
||
" df_final['总产量'] = df_final['亩产量/斤'] * df_final['种植面积/亩']\n",
|
||
" df_final['总销售收入'] = df_final['总产量'] * df_final['销售单价中间值']\n",
|
||
"\n",
|
||
" # 按地块类型和作物名称分组统计\n",
|
||
" df_grouped = df_final.groupby(['地块类型', '作物名称']).agg({'总产量': 'sum', '总销售收入': 'sum'}).reset_index()\n",
|
||
"\n",
|
||
" # 按作物名称统计\n",
|
||
" df_crop_stats = df_final.groupby('作物名称').agg({'总产量': 'sum', '总销售收入': 'sum'}).reset_index()\n",
|
||
"\n",
|
||
" return df_grouped, df_crop_stats\n",
|
||
"\n",
|
||
"\n",
|
||
"df_land, df_crop_land, df_planting, df_crop_details = read_data()\n",
|
||
"print(read_data())"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"( landName landType landArea\n",
|
||
"0 A1 平旱地 80.0\n",
|
||
"1 A2 平旱地 55.0\n",
|
||
"2 A3 平旱地 35.0\n",
|
||
"3 A4 平旱地 72.0\n",
|
||
"4 A5 平旱地 68.0\n",
|
||
"5 A6 平旱地 55.0\n",
|
||
"6 B1 梯田 60.0\n",
|
||
"7 B2 梯田 46.0\n",
|
||
"8 B3 梯田 40.0\n",
|
||
"9 B4 梯田 28.0\n",
|
||
"10 B5 梯田 25.0\n",
|
||
"11 B6 梯田 86.0\n",
|
||
"12 B7 梯田 55.0\n",
|
||
"13 B8 梯田 44.0\n",
|
||
"14 B9 梯田 50.0\n",
|
||
"15 B10 梯田 25.0\n",
|
||
"16 B11 梯田 60.0\n",
|
||
"17 B12 梯田 45.0\n",
|
||
"18 B13 梯田 35.0\n",
|
||
"19 B14 梯田 20.0\n",
|
||
"20 C1 山坡地 15.0\n",
|
||
"21 C2 山坡地 13.0\n",
|
||
"22 C3 山坡地 15.0\n",
|
||
"23 C4 山坡地 18.0\n",
|
||
"24 C5 山坡地 27.0\n",
|
||
"25 C6 山坡地 20.0\n",
|
||
"26 D1 水浇地 15.0\n",
|
||
"27 D2 水浇地 10.0\n",
|
||
"28 D3 水浇地 14.0\n",
|
||
"29 D4 水浇地 6.0\n",
|
||
"30 D5 水浇地 10.0\n",
|
||
"31 D6 水浇地 12.0\n",
|
||
"32 D7 水浇地 22.0\n",
|
||
"33 D8 水浇地 20.0\n",
|
||
"34 E1 普通大棚 0.6\n",
|
||
"35 E2 普通大棚 0.6\n",
|
||
"36 E3 普通大棚 0.6\n",
|
||
"37 E4 普通大棚 0.6\n",
|
||
"38 E5 普通大棚 0.6\n",
|
||
"39 E6 普通大棚 0.6\n",
|
||
"40 E7 普通大棚 0.6\n",
|
||
"41 E8 普通大棚 0.6\n",
|
||
"42 E9 普通大棚 0.6\n",
|
||
"43 E10 普通大棚 0.6\n",
|
||
"44 E11 普通大棚 0.6\n",
|
||
"45 E12 普通大棚 0.6\n",
|
||
"46 E13 普通大棚 0.6\n",
|
||
"47 E14 普通大棚 0.6\n",
|
||
"48 E15 普通大棚 0.6\n",
|
||
"49 E16 普通大棚 0.6\n",
|
||
"50 F1 智慧大棚 0.6\n",
|
||
"51 F2 智慧大棚 0.6\n",
|
||
"52 F3 智慧大棚 0.6\n",
|
||
"53 F4 智慧大棚 0.6, cropNum cropName cropType cropLandType\n",
|
||
"0 1 黄豆 粮食(豆类) 平旱地 梯田 山坡地\n",
|
||
"1 2 黑豆 粮食(豆类) 平旱地 梯田 山坡地\n",
|
||
"2 3 红豆 粮食(豆类) 平旱地 梯田 山坡地\n",
|
||
"3 4 绿豆 粮食(豆类) 平旱地 梯田 山坡地\n",
|
||
"4 5 爬豆 粮食(豆类) 平旱地 梯田 山坡地\n",
|
||
"5 6 小麦 粮食 平旱地 梯田 山坡地\n",
|
||
"6 7 玉米 粮食 平旱地 梯田 山坡地\n",
|
||
"7 8 谷子 粮食 平旱地 梯田 山坡地\n",
|
||
"8 9 高粱 粮食 平旱地 梯田 山坡地\n",
|
||
"9 10 黍子 粮食 平旱地 梯田 山坡地\n",
|
||
"10 11 荞麦 粮食 平旱地 梯田 山坡地\n",
|
||
"11 12 南瓜 粮食 平旱地 梯田 山坡地\n",
|
||
"12 13 红薯 粮食 平旱地 梯田 山坡地\n",
|
||
"13 14 莜麦 粮食 平旱地 梯田 山坡地\n",
|
||
"14 15 大麦 粮食 平旱地 梯田 山坡地\n",
|
||
"15 16 水稻 粮食 水浇地第一季 水浇地第二季\n",
|
||
"16 17 豇豆 蔬菜(豆类) 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"17 18 刀豆 蔬菜(豆类) 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"18 19 芸豆 蔬菜(豆类) 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"19 20 土豆 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"20 21 西红柿 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"21 22 茄子 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"22 23 菠菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"23 24 青椒 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"24 25 菜花 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"25 26 包菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"26 27 油麦菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"27 28 小青菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"28 29 黄瓜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"29 30 生菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"30 31 辣椒 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"31 32 空心菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"32 33 黄心菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"33 34 芹菜 蔬菜 水浇地第一季 普通大棚第一季 智慧大棚第一季 智慧大棚第二季\n",
|
||
"34 35 大白菜 蔬菜 水浇地第二季\n",
|
||
"35 36 白萝卜 蔬菜 水浇地第二季\n",
|
||
"36 37 红萝卜 蔬菜 水浇地第二季\n",
|
||
"37 38 榆黄菇 食用菌 普通大棚第二季\n",
|
||
"38 39 香菇 食用菌 普通大棚第二季\n",
|
||
"39 40 白灵菇 食用菌 普通大棚第二季\n",
|
||
"40 41 羊肚菌 食用菌 普通大棚第二季, landName cropNum cropName cropType plantArea season\n",
|
||
"0 A1 6 小麦 粮食 80.0 单季\n",
|
||
"1 A2 7 玉米 粮食 55.0 单季\n",
|
||
"2 A3 7 玉米 粮食 35.0 单季\n",
|
||
"3 A4 1 黄豆 粮食(豆类) 72.0 单季\n",
|
||
"4 A5 4 绿豆 粮食(豆类) 68.0 单季\n",
|
||
".. ... ... ... ... ... ...\n",
|
||
"82 NaN 28 小青菜 蔬菜 0.3 第二季\n",
|
||
"83 NaN 30 生菜 蔬菜 0.3 第二季\n",
|
||
"84 F4 19 芸豆 蔬菜(豆类) 0.6 第一季\n",
|
||
"85 NaN 34 芹菜 蔬菜 0.3 第二季\n",
|
||
"86 NaN 23 菠菜 蔬菜 0.3 第二季\n",
|
||
"\n",
|
||
"[87 rows x 6 columns], 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",
|
||
"[107 rows x 8 columns])\n"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 62
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:13:02.924946Z",
|
||
"start_time": "2024-09-06T03:13:02.864285Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"df_final = preprocess_data(df_land, df_crop_land, df_planting, df_crop_details)\n",
|
||
"df_grouped, df_crop_stats = calculate_stats(df_final)\n",
|
||
"\n",
|
||
"print(\"按地块类型和作物名称统计的总产量和总销售收入:\")\n",
|
||
"print(df_grouped)\n",
|
||
"print(\"\\n按作物名称统计的总产量和总销售收入:\")\n",
|
||
"print(df_crop_stats)"
|
||
],
|
||
"id": "6fa8c4cce80d25ef",
|
||
"outputs": [
|
||
{
|
||
"ename": "KeyError",
|
||
"evalue": "'种植地块'",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
|
||
"\u001B[1;31mKeyError\u001B[0m Traceback (most recent call last)",
|
||
"Cell \u001B[1;32mIn[63], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m df_final \u001B[38;5;241m=\u001B[39m \u001B[43mpreprocess_data\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdf_land\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdf_crop_land\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdf_planting\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdf_crop_details\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 2\u001B[0m df_grouped, df_crop_stats \u001B[38;5;241m=\u001B[39m calculate_stats(df_final)\n\u001B[0;32m 4\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m按地块类型和作物名称统计的总产量和总销售收入:\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n",
|
||
"Cell \u001B[1;32mIn[62], line 16\u001B[0m, in \u001B[0;36mpreprocess_data\u001B[1;34m(df_land, df_crop_land, df_planting, df_crop_details)\u001B[0m\n\u001B[0;32m 14\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mpreprocess_data\u001B[39m(df_land, df_crop_land, df_planting, df_crop_details):\n\u001B[0;32m 15\u001B[0m \u001B[38;5;66;03m# 合并地块信息和种植信息\u001B[39;00m\n\u001B[1;32m---> 16\u001B[0m df_merged \u001B[38;5;241m=\u001B[39m \u001B[43mpd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmerge\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdf_land\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdf_planting\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mleft_on\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43m地块名称\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mright_on\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43m种植地块\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[0;32m 18\u001B[0m \u001B[38;5;66;03m# 合并作物信息和地块类型信息\u001B[39;00m\n\u001B[0;32m 19\u001B[0m df_crop_details[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m销售单价中间值\u001B[39m\u001B[38;5;124m'\u001B[39m] \u001B[38;5;241m=\u001B[39m df_crop_details[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m销售单价/(元/斤)\u001B[39m\u001B[38;5;124m'\u001B[39m]\u001B[38;5;241m.\u001B[39mapply(\n\u001B[0;32m 20\u001B[0m \u001B[38;5;28;01mlambda\u001B[39;00m x: (x\u001B[38;5;241m.\u001B[39msplit(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m-\u001B[39m\u001B[38;5;124m'\u001B[39m)[\u001B[38;5;241m0\u001B[39m] \u001B[38;5;241m+\u001B[39m x\u001B[38;5;241m.\u001B[39msplit(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m-\u001B[39m\u001B[38;5;124m'\u001B[39m)[\u001B[38;5;241m1\u001B[39m]) \u001B[38;5;241m/\u001B[39m \u001B[38;5;241m2\u001B[39m)\n",
|
||
"File \u001B[1;32mD:\\Anaconda\\envs\\lite\\lib\\site-packages\\pandas\\core\\reshape\\merge.py:169\u001B[0m, in \u001B[0;36mmerge\u001B[1;34m(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)\u001B[0m\n\u001B[0;32m 154\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m _cross_merge(\n\u001B[0;32m 155\u001B[0m left_df,\n\u001B[0;32m 156\u001B[0m right_df,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 166\u001B[0m copy\u001B[38;5;241m=\u001B[39mcopy,\n\u001B[0;32m 167\u001B[0m )\n\u001B[0;32m 168\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m--> 169\u001B[0m op \u001B[38;5;241m=\u001B[39m \u001B[43m_MergeOperation\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 170\u001B[0m \u001B[43m \u001B[49m\u001B[43mleft_df\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 171\u001B[0m \u001B[43m \u001B[49m\u001B[43mright_df\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 172\u001B[0m \u001B[43m \u001B[49m\u001B[43mhow\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mhow\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 173\u001B[0m \u001B[43m \u001B[49m\u001B[43mon\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mon\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 174\u001B[0m \u001B[43m \u001B[49m\u001B[43mleft_on\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mleft_on\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 175\u001B[0m \u001B[43m \u001B[49m\u001B[43mright_on\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mright_on\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 176\u001B[0m \u001B[43m \u001B[49m\u001B[43mleft_index\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mleft_index\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 177\u001B[0m \u001B[43m \u001B[49m\u001B[43mright_index\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mright_index\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 178\u001B[0m \u001B[43m \u001B[49m\u001B[43msort\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msort\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 179\u001B[0m \u001B[43m \u001B[49m\u001B[43msuffixes\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msuffixes\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 180\u001B[0m \u001B[43m \u001B[49m\u001B[43mindicator\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mindicator\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 181\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalidate\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mvalidate\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 182\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 183\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m op\u001B[38;5;241m.\u001B[39mget_result(copy\u001B[38;5;241m=\u001B[39mcopy)\n",
|
||
"File \u001B[1;32mD:\\Anaconda\\envs\\lite\\lib\\site-packages\\pandas\\core\\reshape\\merge.py:791\u001B[0m, in \u001B[0;36m_MergeOperation.__init__\u001B[1;34m(self, left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, indicator, validate)\u001B[0m\n\u001B[0;32m 781\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m MergeError(msg)\n\u001B[0;32m 783\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mleft_on, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mright_on \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_validate_left_right_on(left_on, right_on)\n\u001B[0;32m 785\u001B[0m (\n\u001B[0;32m 786\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mleft_join_keys,\n\u001B[0;32m 787\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mright_join_keys,\n\u001B[0;32m 788\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mjoin_names,\n\u001B[0;32m 789\u001B[0m left_drop,\n\u001B[0;32m 790\u001B[0m right_drop,\n\u001B[1;32m--> 791\u001B[0m ) \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_get_merge_keys\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 793\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m left_drop:\n\u001B[0;32m 794\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mleft \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mleft\u001B[38;5;241m.\u001B[39m_drop_labels_or_levels(left_drop)\n",
|
||
"File \u001B[1;32mD:\\Anaconda\\envs\\lite\\lib\\site-packages\\pandas\\core\\reshape\\merge.py:1269\u001B[0m, in \u001B[0;36m_MergeOperation._get_merge_keys\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 1267\u001B[0m rk \u001B[38;5;241m=\u001B[39m cast(Hashable, rk)\n\u001B[0;32m 1268\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m rk \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m-> 1269\u001B[0m right_keys\u001B[38;5;241m.\u001B[39mappend(\u001B[43mright\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_get_label_or_level_values\u001B[49m\u001B[43m(\u001B[49m\u001B[43mrk\u001B[49m\u001B[43m)\u001B[49m)\n\u001B[0;32m 1270\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m 1271\u001B[0m \u001B[38;5;66;03m# work-around for merge_asof(right_index=True)\u001B[39;00m\n\u001B[0;32m 1272\u001B[0m right_keys\u001B[38;5;241m.\u001B[39mappend(right\u001B[38;5;241m.\u001B[39mindex\u001B[38;5;241m.\u001B[39m_values)\n",
|
||
"File \u001B[1;32mD:\\Anaconda\\envs\\lite\\lib\\site-packages\\pandas\\core\\generic.py:1844\u001B[0m, in \u001B[0;36mNDFrame._get_label_or_level_values\u001B[1;34m(self, key, axis)\u001B[0m\n\u001B[0;32m 1842\u001B[0m values \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39maxes[axis]\u001B[38;5;241m.\u001B[39mget_level_values(key)\u001B[38;5;241m.\u001B[39m_values\n\u001B[0;32m 1843\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1844\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mKeyError\u001B[39;00m(key)\n\u001B[0;32m 1846\u001B[0m \u001B[38;5;66;03m# Check for duplicates\u001B[39;00m\n\u001B[0;32m 1847\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m values\u001B[38;5;241m.\u001B[39mndim \u001B[38;5;241m>\u001B[39m \u001B[38;5;241m1\u001B[39m:\n",
|
||
"\u001B[1;31mKeyError\u001B[0m: '种植地块'"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 63
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:21:35.298725Z",
|
||
"start_time": "2024-09-06T03:21:35.267092Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"import enum\n",
|
||
"\n",
|
||
"\n",
|
||
"# class LandType(enum.Enum):\n",
|
||
"# # A = 0\n",
|
||
"# # B = 1\n",
|
||
"# # C = 2\n",
|
||
"# # D = 3\n",
|
||
"# # E = 4\n",
|
||
"# # F = 5\n",
|
||
"# A = \"平旱地\"\n",
|
||
"# B = \"梯田\"\n",
|
||
"# C = \"山坡地\"\n",
|
||
"# D = \"水浇地\"\n",
|
||
"# E = \"普通大棚\"\n",
|
||
"# F = \"智慧大棚\"\n",
|
||
"\n",
|
||
"LandType = {\"A\": \"平旱地\", \"B\": \"梯田\", \"C\": \"山坡地\", \"D\": \"水浇地\", \"E\": \"普通大棚\", \"F\": \"智慧大棚\"}\n",
|
||
"\n",
|
||
"class Land:\n",
|
||
" landName = \"\"\n",
|
||
" landType = \"\"\n",
|
||
" landArea = 0\n",
|
||
"\n",
|
||
" def __init__(self, land_name, land_type, land_area):\n",
|
||
" self.landName = land_name\n",
|
||
" self.landType = land_type\n",
|
||
" self.landArea = land_area\n",
|
||
"\n",
|
||
" def __str__(self):\n",
|
||
" return f\"地块名称:{self.landName}, 地块类型:{self.landType}, 地块面积:{self.landArea}\"\n",
|
||
"\n",
|
||
" def __repr__(self):\n",
|
||
" return self.__str__()\n",
|
||
"\n",
|
||
"\n",
|
||
"df_land = pd.read_excel('./data/1.xlsx', sheet_name=0)\n",
|
||
"land_list = []\n",
|
||
"for i in range(len(df_land)):\n",
|
||
" land_list.append(Land(df_land.loc[i, 'landName'], df_land.loc[i, 'landType'], df_land.loc[i, 'landArea']))\n"
|
||
],
|
||
"id": "de7eae459d5ac038",
|
||
"outputs": [],
|
||
"execution_count": 81
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:21:35.889930Z",
|
||
"start_time": "2024-09-06T03:21:35.834548Z"
|
||
}
|
||
},
|
||
"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": "1b344bb5c5ceca6",
|
||
"outputs": [],
|
||
"execution_count": 82
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:21:36.358909Z",
|
||
"start_time": "2024-09-06T03:21:36.342806Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "df_crop_details",
|
||
"id": "2a7d4e6303a8ce7d",
|
||
"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",
|
||
"[107 rows x 8 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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </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",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>107 rows × 8 columns</p>\n",
|
||
"</div>"
|
||
]
|
||
},
|
||
"execution_count": 83,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 83
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:21:36.920063Z",
|
||
"start_time": "2024-09-06T03:21:36.906066Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "df_planting",
|
||
"id": "cb078daf97226df9",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
" landName cropNum cropName cropType plantArea season\n",
|
||
"0 A1 6 小麦 粮食 80.0 单季\n",
|
||
"1 A2 7 玉米 粮食 55.0 单季\n",
|
||
"2 A3 7 玉米 粮食 35.0 单季\n",
|
||
"3 A4 1 黄豆 粮食(豆类) 72.0 单季\n",
|
||
"4 A5 4 绿豆 粮食(豆类) 68.0 单季\n",
|
||
".. ... ... ... ... ... ...\n",
|
||
"82 NaN 28 小青菜 蔬菜 0.3 第二季\n",
|
||
"83 NaN 30 生菜 蔬菜 0.3 第二季\n",
|
||
"84 F4 19 芸豆 蔬菜(豆类) 0.6 第一季\n",
|
||
"85 NaN 34 芹菜 蔬菜 0.3 第二季\n",
|
||
"86 NaN 23 菠菜 蔬菜 0.3 第二季\n",
|
||
"\n",
|
||
"[87 rows x 6 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>landName</th>\n",
|
||
" <th>cropNum</th>\n",
|
||
" <th>cropName</th>\n",
|
||
" <th>cropType</th>\n",
|
||
" <th>plantArea</th>\n",
|
||
" <th>season</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>A1</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>小麦</td>\n",
|
||
" <td>粮食</td>\n",
|
||
" <td>80.0</td>\n",
|
||
" <td>单季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>A2</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>玉米</td>\n",
|
||
" <td>粮食</td>\n",
|
||
" <td>55.0</td>\n",
|
||
" <td>单季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>A3</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>玉米</td>\n",
|
||
" <td>粮食</td>\n",
|
||
" <td>35.0</td>\n",
|
||
" <td>单季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>A4</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>黄豆</td>\n",
|
||
" <td>粮食(豆类)</td>\n",
|
||
" <td>72.0</td>\n",
|
||
" <td>单季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>A5</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>绿豆</td>\n",
|
||
" <td>粮食(豆类)</td>\n",
|
||
" <td>68.0</td>\n",
|
||
" <td>单季</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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>82</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>28</td>\n",
|
||
" <td>小青菜</td>\n",
|
||
" <td>蔬菜</td>\n",
|
||
" <td>0.3</td>\n",
|
||
" <td>第二季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>83</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>生菜</td>\n",
|
||
" <td>蔬菜</td>\n",
|
||
" <td>0.3</td>\n",
|
||
" <td>第二季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>84</th>\n",
|
||
" <td>F4</td>\n",
|
||
" <td>19</td>\n",
|
||
" <td>芸豆</td>\n",
|
||
" <td>蔬菜(豆类)</td>\n",
|
||
" <td>0.6</td>\n",
|
||
" <td>第一季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>85</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>34</td>\n",
|
||
" <td>芹菜</td>\n",
|
||
" <td>蔬菜</td>\n",
|
||
" <td>0.3</td>\n",
|
||
" <td>第二季</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>86</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>23</td>\n",
|
||
" <td>菠菜</td>\n",
|
||
" <td>蔬菜</td>\n",
|
||
" <td>0.3</td>\n",
|
||
" <td>第二季</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>87 rows × 6 columns</p>\n",
|
||
"</div>"
|
||
]
|
||
},
|
||
"execution_count": 84,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 84
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:21:37.434419Z",
|
||
"start_time": "2024-09-06T03:21:37.423314Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"# 定义过滤条件\n",
|
||
"condition = (df_crop_details['cropNum'] == 8) & (df_crop_details['cropLandType'] == '平旱地') & (\n",
|
||
" df_crop_details['season'] == '单季')\n",
|
||
"\n",
|
||
"# 应用过滤条件\n",
|
||
"filtered_df = df_crop_details[condition]\n",
|
||
"filtered_df.cost"
|
||
],
|
||
"id": "a87c7c7cd60851e8",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"7 360\n",
|
||
"Name: cost, dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 85,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 85
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:43:12.430452Z",
|
||
"start_time": "2024-09-06T03:43:12.417025Z"
|
||
}
|
||
},
|
||
"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 = 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",
|
||
"def get_crop_yield(crop_num, crop_land_type, season):\n",
|
||
" if crop_land_type==\"智慧大棚\" and season==\"第一季\":\n",
|
||
" crop_land_type = \"普通大棚\"\n",
|
||
" return 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",
|
||
"def get_crop_cost(crop_num, crop_land_type, season):\n",
|
||
" if crop_land_type==\"智慧大棚\" and season==\"第一季\":\n",
|
||
" crop_land_type = \"普通大棚\"\n",
|
||
" return 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]"
|
||
],
|
||
"id": "c1aeae8d35dfaba4",
|
||
"outputs": [],
|
||
"execution_count": 103
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:31:21.848658Z",
|
||
"start_time": "2024-09-06T03:31:21.830790Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": "get_crop_price(8, '平旱地', '单季')",
|
||
"id": "fbb6f17a3fa0be",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"6.75"
|
||
]
|
||
},
|
||
"execution_count": 97,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 97
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:29:24.789254Z",
|
||
"start_time": "2024-09-06T03:29:24.778904Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"df_planting['landName'] = df_planting['landName'].ffill()\n",
|
||
"df_crop_details['cropLandType'] = df_crop_details['cropLandType'].str.rstrip()"
|
||
],
|
||
"id": "badbb5129135f9b2",
|
||
"outputs": [],
|
||
"execution_count": 94
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-09-06T03:45:53.605223Z",
|
||
"start_time": "2024-09-06T03:45:53.517449Z"
|
||
}
|
||
},
|
||
"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)\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",
|
||
"total_profit"
|
||
],
|
||
"id": "924b12d0f8978284",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"['A1' 6 '小麦' '粮食' 80.0 '单季']\n",
|
||
"6 平旱地 单季\n",
|
||
"['A2' 7 '玉米' '粮食' 55.0 '单季']\n",
|
||
"7 平旱地 单季\n",
|
||
"['A3' 7 '玉米' '粮食' 35.0 '单季']\n",
|
||
"7 平旱地 单季\n",
|
||
"['A4' 1 '黄豆' '粮食(豆类)' 72.0 '单季']\n",
|
||
"1 平旱地 单季\n",
|
||
"['A5' 4 '绿豆' '粮食(豆类)' 68.0 '单季']\n",
|
||
"4 平旱地 单季\n",
|
||
"['A6' 8 '谷子' '粮食' 55.0 '单季']\n",
|
||
"8 平旱地 单季\n",
|
||
"['B1' 6 '小麦' '粮食' 60.0 '单季']\n",
|
||
"6 梯田 单季\n",
|
||
"['B2' 2 '黑豆' '粮食(豆类)' 46.0 '单季']\n",
|
||
"2 梯田 单季\n",
|
||
"['B3' 3 '红豆' '粮食(豆类)' 40.0 '单季']\n",
|
||
"3 梯田 单季\n",
|
||
"['B4' 4 '绿豆' '粮食(豆类)' 28.0 '单季']\n",
|
||
"4 梯田 单季\n",
|
||
"['B5' 5 '爬豆' '粮食(豆类)' 25.0 '单季']\n",
|
||
"5 梯田 单季\n",
|
||
"['B6' 8 '谷子' '粮食' 86.0 '单季']\n",
|
||
"8 梯田 单季\n",
|
||
"['B7' 6 '小麦' '粮食' 55.0 '单季']\n",
|
||
"6 梯田 单季\n",
|
||
"['B8' 8 '谷子' '粮食' 44.0 '单季']\n",
|
||
"8 梯田 单季\n",
|
||
"['B9' 9 '高粱' '粮食' 50.0 '单季']\n",
|
||
"9 梯田 单季\n",
|
||
"['B10' 10 '黍子' '粮食' 25.0 '单季']\n",
|
||
"10 梯田 单季\n",
|
||
"['B11' 1 '黄豆' '粮食(豆类)' 60.0 '单季']\n",
|
||
"1 梯田 单季\n",
|
||
"['B12' 7 '玉米' '粮食' 45.0 '单季']\n",
|
||
"7 梯田 单季\n",
|
||
"['B13' 14 '莜麦' '粮食' 35.0 '单季']\n",
|
||
"14 梯田 单季\n",
|
||
"['B14' 15 '大麦' '粮食' 20.0 '单季']\n",
|
||
"15 梯田 单季\n",
|
||
"['C1' 11 '荞麦' '粮食' 15.0 '单季']\n",
|
||
"11 山坡地 单季\n",
|
||
"['C2' 12 '南瓜' '粮食' 13.0 '单季']\n",
|
||
"12 山坡地 单季\n",
|
||
"['C3' 1 '黄豆' '粮食(豆类)' 15.0 '单季']\n",
|
||
"1 山坡地 单季\n",
|
||
"['C4' 13 '红薯' '粮食' 18.0 '单季']\n",
|
||
"13 山坡地 单季\n",
|
||
"['C5' 6 '小麦' '粮食' 27.0 '单季']\n",
|
||
"6 山坡地 单季\n",
|
||
"['C6' 3 '红豆' '粮食(豆类)' 20.0 '单季']\n",
|
||
"3 山坡地 单季\n",
|
||
"['D1' 20 '土豆' '蔬菜 ' 15.0 '第一季']\n",
|
||
"20 水浇地 第一季\n",
|
||
"['D1' 36 '白萝卜' '蔬菜 ' 15.0 '第二季']\n",
|
||
"36 水浇地 第二季\n",
|
||
"['D2' 28 '小青菜' '蔬菜 ' 10.0 '第一季']\n",
|
||
"28 水浇地 第一季\n",
|
||
"['D2' 35 '大白菜' '蔬菜 ' 10.0 '第二季']\n",
|
||
"35 水浇地 第二季\n",
|
||
"['D3' 21 '西红柿' '蔬菜 ' 14.0 '第一季']\n",
|
||
"21 水浇地 第一季\n",
|
||
"['D3' 35 '大白菜' '蔬菜 ' 14.0 '第二季']\n",
|
||
"35 水浇地 第二季\n",
|
||
"['D4' 22 '茄子' '蔬菜 ' 6.0 '第一季']\n",
|
||
"22 水浇地 第一季\n",
|
||
"['D4' 35 '大白菜' '蔬菜 ' 6.0 '第二季']\n",
|
||
"35 水浇地 第二季\n",
|
||
"['D5' 17 '豇豆' '蔬菜(豆类)' 10.0 '第一季']\n",
|
||
"17 水浇地 第一季\n",
|
||
"['D5' 36 '白萝卜' '蔬菜 ' 10.0 '第二季']\n",
|
||
"36 水浇地 第二季\n",
|
||
"['D6' 18 '刀豆' '蔬菜(豆类)' 12.0 '第一季']\n",
|
||
"18 水浇地 第一季\n",
|
||
"['D6' 37 '红萝卜' '蔬菜 ' 12.0 '第二季']\n",
|
||
"37 水浇地 第二季\n",
|
||
"['D7' 16 '水稻' '粮食' 22.0 '单季']\n",
|
||
"16 水浇地 单季\n",
|
||
"['D8' 16 '水稻' '粮食' 20.0 '单季']\n",
|
||
"16 水浇地 单季\n",
|
||
"['E1' 18 '刀豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"18 普通大棚 第一季\n",
|
||
"['E1' 38 '榆黄菇' '食用菌' 0.6 '第二季']\n",
|
||
"38 普通大棚 第二季\n",
|
||
"['E2' 24 '青椒' '蔬菜 ' 0.6 '第一季']\n",
|
||
"24 普通大棚 第一季\n",
|
||
"['E2' 38 '榆黄菇' '食用菌' 0.6 '第二季']\n",
|
||
"38 普通大棚 第二季\n",
|
||
"['E3' 25 '菜花' '蔬菜 ' 0.6 '第一季']\n",
|
||
"25 普通大棚 第一季\n",
|
||
"['E3' 38 '榆黄菇' '食用菌' 0.6 '第二季']\n",
|
||
"38 普通大棚 第二季\n",
|
||
"['E4' 26 '包菜' '蔬菜 ' 0.6 '第一季']\n",
|
||
"26 普通大棚 第一季\n",
|
||
"['E4' 39 '香菇' '食用菌' 0.6 '第二季']\n",
|
||
"39 普通大棚 第二季\n",
|
||
"['E5' 28 '小青菜' '蔬菜 ' 0.6 '第一季']\n",
|
||
"28 普通大棚 第一季\n",
|
||
"['E5' 39 '香菇' '食用菌' 0.6 '第二季']\n",
|
||
"39 普通大棚 第二季\n",
|
||
"['E6' 27 '油麦菜' '蔬菜 ' 0.6 '第一季']\n",
|
||
"27 普通大棚 第一季\n",
|
||
"['E6' 39 '香菇' '食用菌' 0.6 '第二季']\n",
|
||
"39 普通大棚 第二季\n",
|
||
"['E7' 19 '芸豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"19 普通大棚 第一季\n",
|
||
"['E7' 40 '白灵菇' '食用菌' 0.6 '第二季']\n",
|
||
"40 普通大棚 第二季\n",
|
||
"['E8' 19 '芸豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"19 普通大棚 第一季\n",
|
||
"['E8' 40 '白灵菇' '食用菌' 0.6 '第二季']\n",
|
||
"40 普通大棚 第二季\n",
|
||
"['E9' 18 '刀豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"18 普通大棚 第一季\n",
|
||
"['E9' 40 '白灵菇' '食用菌' 0.6 '第二季']\n",
|
||
"40 普通大棚 第二季\n",
|
||
"['E10' 17 '豇豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"17 普通大棚 第一季\n",
|
||
"['E10' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['E11' 17 '豇豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"17 普通大棚 第一季\n",
|
||
"['E11' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['E12' 22 '茄子' '蔬菜 ' 0.6 '第一季']\n",
|
||
"22 普通大棚 第一季\n",
|
||
"['E12' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['E13' 21 '西红柿' '蔬菜 ' 0.6 '第一季']\n",
|
||
"21 普通大棚 第一季\n",
|
||
"['E13' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['E14' 29 '黄瓜' '蔬菜 ' 0.6 '第一季']\n",
|
||
"29 普通大棚 第一季\n",
|
||
"['E14' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['E15' 30 '生菜' '蔬菜 ' 0.3 '第一季']\n",
|
||
"30 普通大棚 第一季\n",
|
||
"['E15' 27 '油麦菜' '蔬菜 ' 0.3 '第一季']\n",
|
||
"27 普通大棚 第一季\n",
|
||
"['E15' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['E16' 31 '辣椒' '蔬菜 ' 0.6 '第一季']\n",
|
||
"31 普通大棚 第一季\n",
|
||
"['E16' 41 '羊肚菌' '食用菌' 0.6 '第二季']\n",
|
||
"41 普通大棚 第二季\n",
|
||
"['F1' 32 '空心菜' '蔬菜 ' 0.3 '第一季']\n",
|
||
"32 智慧大棚 第一季\n",
|
||
"['F1' 33 '黄心菜' '蔬菜 ' 0.3 '第一季']\n",
|
||
"33 智慧大棚 第一季\n",
|
||
"['F1' 24 '青椒' '蔬菜 ' 0.3 '第二季']\n",
|
||
"24 智慧大棚 第二季\n",
|
||
"['F1' 21 '西红柿' '蔬菜 ' 0.3 '第二季']\n",
|
||
"21 智慧大棚 第二季\n",
|
||
"['F2' 25 '菜花' '蔬菜 ' 0.3 '第一季']\n",
|
||
"25 智慧大棚 第一季\n",
|
||
"['F2' 26 '包菜' '蔬菜 ' 0.3 '第一季']\n",
|
||
"26 智慧大棚 第一季\n",
|
||
"['F2' 22 '茄子' '蔬菜 ' 0.3 '第二季']\n",
|
||
"22 智慧大棚 第二季\n",
|
||
"['F2' 29 '黄瓜' '蔬菜 ' 0.3 '第二季']\n",
|
||
"29 智慧大棚 第二季\n",
|
||
"['F3' 17 '豇豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"17 智慧大棚 第一季\n",
|
||
"['F3' 28 '小青菜' '蔬菜 ' 0.3 '第二季']\n",
|
||
"28 智慧大棚 第二季\n",
|
||
"['F3' 30 '生菜 ' '蔬菜 ' 0.3 '第二季']\n",
|
||
"30 智慧大棚 第二季\n",
|
||
"['F4' 19 '芸豆' '蔬菜(豆类)' 0.6 '第一季']\n",
|
||
"19 智慧大棚 第一季\n",
|
||
"['F4' 34 '芹菜' '蔬菜 ' 0.3 '第二季']\n",
|
||
"34 智慧大棚 第二季\n",
|
||
"['F4' 23 '菠菜 ' '蔬菜 ' 0.3 '第二季']\n",
|
||
"23 智慧大棚 第二季\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"{1: 126450.0,\n",
|
||
" 2: 145475.0,\n",
|
||
" 3: 163800.0,\n",
|
||
" 4: 197680.0,\n",
|
||
" 5: 57906.25,\n",
|
||
" 6: 498040.0,\n",
|
||
" 7: 330750.0,\n",
|
||
" 8: 415350.0,\n",
|
||
" 9: 160000.0,\n",
|
||
" 10: 84750.0,\n",
|
||
" 11: 54750.0,\n",
|
||
" 12: 39650.0,\n",
|
||
" 13: 81000.0,\n",
|
||
" 14: 63000.0,\n",
|
||
" 15: 28000.0,\n",
|
||
" 16: 118440.0,\n",
|
||
" 17: 267520.0,\n",
|
||
" 18: 168000.0,\n",
|
||
" 19: 37800.0,\n",
|
||
" 20: 82500.0,\n",
|
||
" 21: 197093.0,\n",
|
||
" 22: 237624.0,\n",
|
||
" 23: 5310.0,\n",
|
||
" 24: 13098.0,\n",
|
||
" 25: 17100.0,\n",
|
||
" 26: 23175.0,\n",
|
||
" 27: 20700.0,\n",
|
||
" 28: 187392.0,\n",
|
||
" 29: 93765.0,\n",
|
||
" 30: 15120.000000000002,\n",
|
||
" 31: 7980.0,\n",
|
||
" 32: 14700.0,\n",
|
||
" 33: 7350.0,\n",
|
||
" 34: 8280.0,\n",
|
||
" 35: 315000.0,\n",
|
||
" 36: 237500.0,\n",
|
||
" 37: 111000.0,\n",
|
||
" 38: 512100.0,\n",
|
||
" 39: 133200.0,\n",
|
||
" 40: 270000.0,\n",
|
||
" 41: 378000.0}"
|
||
]
|
||
},
|
||
"execution_count": 107,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 107
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "code",
|
||
"outputs": [],
|
||
"execution_count": null,
|
||
"source": "",
|
||
"id": "944704309ea97c8e"
|
||
}
|
||
],
|
||
"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
|
||
}
|