2021 年“泰迪杯”数据分析技能赛B 题肥料登记数据分析
完整代码请私聊 博主
一、背景
肥料是农业生产中一种重要的生产资料,其生产销售必须遵循《肥料登记管理办法》,依法在农业行政管理部门进行登记。各省、自治区、直辖市人民政府农业行政主管部门主要负责本行政区域内销售的肥料登记工作,相关数据可从政府网站上自由下载。
二、目标
- 对肥料登记数据进行预处理。
- 根据养分的百分比对肥料产品进行细分。
- 从省份、日期、生产商、肥料构成等维度对肥料登记数据进行对比分析。
- 对非结构化数据进行结构化处理。
三、任务
请根据附件 1~附件 4 中提供的数据,自行选择分析工具完成以下任务,并撰写报告。
任务 1 数据的预处理
任务 1.1
附件 1 的产品通用名称存在不规范的情况。请按照复混肥料(掺混肥料归入这一类)、有机-无机复混肥料、有机肥料和床土调酸剂这 4 种类别对附件 1 进行规范化处理。请在报告中给出处理思路、过程及必要的结果,同时将完整的结果保存到文件“result1_1.xlsx”。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df1_1 = pd.read_excel('./数据/附件1.xlsx')
df1_1
df1_1.info()
df1_1['产品通用名称'].unique()
set(df1_1["产品通用名称"])
def grade(x):
if ('复混' in x[:2]) or ('掺混' in x):
return '复混肥料'
elif '无机' in x:
return '有机-无机复混肥料'
elif '有机肥料' in x:
return '有机肥料'
elif '调酸剂' in x:
return '床土调酸剂'
df1_1['产品通用名称'] = df1_1['产品通用名称'].apply(grade)
df1_1.reset_index(inplace=True,drop=True)
df1_1.to_excel('result1_1.xlsx',index=None)
序号 企业名称 产品通用名称 产品形态 总氮百分比 P2O5百分比 K2O百分比 含氯情况 有机质百分比 正式登记证号 发证日期 有效期
0 1 安徽中元化肥股份有限公司 复混肥料 颗粒 0.1300 0.1700 0.2000 低氯 0.00 皖农肥(2016)准字4255号 2016-01-08 2021-01
1 2 安徽中元化肥股份有限公司 复混肥料 颗粒 0.1300 0.1700 0.2000 中氯 0.00 皖农肥(2016)准字4256号 2016-01-08 2021-01
2 3 安徽中元化肥股份有限公司 复混肥料 颗粒 0.2000 0.1500 0.1600 低氯 0.00 皖农肥(2016)准字4257号 2016-01-08 2021-01
3 4 安徽中元化肥股份有限公司 复混肥料 颗粒 0.2600 0.1300 0.1200 低氯 0.00 皖农肥(2016)准字4258号 2016-01-08 2021-01
4 5 安徽中元化肥股份有限公司 复混肥料 颗粒 0.2600 0.1300 0.1200 中氯 0.00 皖农肥(2016)准字4259号 2016-01-08 2021-01
... ... ... ... ... ... ... ... ... ... ... ... ...
2920 2921 安徽泰又丰有机肥科技有限公司 有机肥料 粉状 0.0167 0.0167 0.0167 无氯 0.45 皖农肥(2021)准字7174号 2021-3-8 5年
2921 2922 滁州市塔山生物有机肥料有限公司 有机肥料 粉状 0.0167 0.0167 0.0167 无氯 0.45 皖农肥(2021)准字7175号 2021-3-8 5年
2922 2923 利辛县鑫圣农业科技有限责任公司 有机肥料 粉状 0.0167 0.0167 0.0167 无氯 0.45 皖农肥(2021)准字7176号 2021-3-8 5年
2923 2924 利辛县鑫圣农业科技有限责任公司 有机肥料 颗粒 0.0167 0.0167 0.0167 无氯 0.45 皖农肥(2021)准字7177号 2021-3-8 5年
2924 2925 六安亿牛生物科技有限公司 有机肥料 粉状 0.0167 0.0167 0.0167 无氯 0.45 皖农肥(2021)准字7178号 2021-3-17 5年
2925 rows × 12 columns
任务 1.2
计算附件 1 中各肥料产品的氮、磷、钾养分百分比之和,称为总无机养分百分比。请在报告中给出处理思路、过程及必要的结果,同时将完整的结果保存到文件“result1_2.xlsx”中,结果保留 3 位小数(例如 1.0%,即 0.010)。
df1_2 = pd.read_excel('./数据/附件1.xlsx')
df1_2.head()
res = df1_2[['总氮百分比','P2O5百分比','K2O百分比']].sum(axis=1)
res = round(res*100,1).astype(str)+'%'
df1_2['总无机养分百分比'] = res
df1_2[['序号','正式登记证号','总无机养分百分比']].to_excel('result1_2.xlsx',index=None)
序号 企业名称 产品通用名称 产品形态 总氮百分比 P2O5百分比 K2O百分比 含氯情况 有机质百分比 正式登记证号 发证日期 有效期 总无机养分百分比
0 1 安徽中元化肥股份有限公司 复混肥料 颗粒 0.1300 0.1700 0.2000 低氯 0.00 皖农肥(2016)准字4255号 2016-01-08 2021-01 50.0%
1 2 安徽中元化肥股份有限公司 复混肥料 颗粒 0.1300 0.1700 0.2000 中氯 0.00 皖农肥(2016)准字4256号 2016-01-08 2021-01 50.0%
2 3 安徽中元化肥股份有限公司 复混肥料 颗粒 0.2000 0.1500 0.1600 低氯 0.00 皖农肥(2016)准字4257号 2016-01-08 2021-01 51.0%
3 4 安徽中元化肥股份有限公司 复混肥料 颗粒 0.2600 0.1300 0.1200 低氯 0.00 皖农肥(2016)准字4258号 2016-01-08 2021-01 51.0%
4 5 安徽中元化肥股份有限公司 复混肥料 颗粒 0.2600 0.1300 0.1200 中氯 0.00 皖农肥(2016)准字4259号 2016-01-08 2021-01 51.0%
... ... ... ... ... ... ... ... ... ... ... ... ...