{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **식품안전나라**\n",
"자료들 중 **유효값 필드선정** 및 **데이터 전처리**\n",
"1. **[인증key : \"8acba1823ae742359560\"](http://openapi.foodsafetykorea.go.kr/api/인증키/I0580/xml/1/20)**\n",
"1. **[Open API 메인 페이지](https://www.foodsafetykorea.go.kr/api/userApiKey.do#)**, **[API 활용 방법](https://www.foodsafetykorea.go.kr/api/howToUseApi.do?menu_grp=MENU_GRP34&menu_no=687)**, **[API 이용절차](https://www.foodsafetykorea.go.kr/api/board/boardDetail.do)**\n",
"1. **[전자식품보감](http://kof-agri.com/FoodKind/Details/C0121050100000#)**, **[영양사협회 영양소 섭취기준표](http://www.kns.or.kr/FileRoom/FileRoom_view.asp?mode=mod&restring=%252FFileRoom%252FFileRoom.asp%253Fxsearch%253D0%253D%253Dxrow%253D10%253D%253DBoardID%253DKdr%253D%253Dpage%253D1&idx=79&page=1&BoardID=Kdr&xsearch=1&cn_search)**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('I0750', '식품영양정보DB'),\n",
" ('COOKRCP01', '조리식품_레시피_DB'),\n",
" ('I0490', '회수판매중지'),\n",
" ('C005', '바코드제품정보'),\n",
" ('I2570', '유통바코드')]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"from tqdm import tqdm\n",
"from momukji import FoodSafe\n",
"[(_, FoodSafe().apiKey[_]['name']) for _ in FoodSafe().apiKey.keys()]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **1 회수 및 판매중지 목록**\n",
"**'I0490' :** '회수판매중지'"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 4.36 ms, sys: 0 ns, total: 4.36 ms\n",
"Wall time: 3.69 ms\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 등록일 | \n",
" 식품분류 | \n",
" 제품명 | \n",
" 제조업체명 | \n",
" 회수사유 | \n",
" 품목코드 | \n",
" 바코드번호 | \n",
" 제품사진URL | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 2019-12-10 | \n",
" 가공식품 | \n",
" 자연내림고려홍삼액골드 | \n",
" 주식회사동진제약 | \n",
" 세균수 기준 규격 부적합 | \n",
" C0309070000000 | \n",
" 8809059644744 | \n",
" http://coop.foodsafetykorea.go.kr/open/minfo_i... | \n",
"
\n",
" \n",
" 1 | \n",
" 2019-12-10 | \n",
" 가공식품 | \n",
" 자연내림고려홍삼액골드 | \n",
" 주식회사동진제약 | \n",
" 세균수 기준 규격 부적합 | \n",
" C0309070000000 | \n",
" 8809059644898 | \n",
" http://coop.foodsafetykorea.go.kr/open/minfo_i... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 등록일 식품분류 제품명 제조업체명 회수사유 품목코드 \\\n",
"0 2019-12-10 가공식품 자연내림고려홍삼액골드 주식회사동진제약 세균수 기준 규격 부적합 C0309070000000 \n",
"1 2019-12-10 가공식품 자연내림고려홍삼액골드 주식회사동진제약 세균수 기준 규격 부적합 C0309070000000 \n",
"\n",
" 바코드번호 제품사진URL \n",
"0 8809059644744 http://coop.foodsafetykorea.go.kr/open/minfo_i... \n",
"1 8809059644898 http://coop.foodsafetykorea.go.kr/open/minfo_i... "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"foodId = 'I0490' # 회수제품 데이터 정보 (대략 500개 이내)\n",
"# data = FoodSafe().getData(foodId, 1, 500, \n",
"# FoodSafe().apiKey[foodId]['cols'], display=True)\n",
"# data.등록일 = [str(_.date()) for _ in pd.DatetimeIndex(data.등록일)]\n",
"# data.to_csv(\"data/food_recall.csv\", index=None)\n",
"df_recall = pd.read_csv(\"data/food_recall.csv\")\n",
"df_recall.head(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **2 식품 영양정보 DB**\n",
"**'I0750' :** '식품영양정보DB'\n",
"1. 13,824개의 정보를 제공\n",
"1. 식재료 및 식품관련 DB를 전처리 및 가공이 필요"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"105 13824 ['가공유류', '곡류 및 그 제품', '유당분해우유', '과·채가공품류', '곡류, 서류 제품', '분유류']\n",
" 번호 식품코드 식품군 식품이름 1회제공량(g) 열량(kcal)(1회제공량당) \\\n",
"0 1 100101000100000001 곡류 및 그 제품 고량미,알곡 100.0 349.0 \n",
"\n",
" 탄수화물(g)(1회제공량당) 단백질(g)(1회제공량당) 지방(g)(1회제공량당) 당류(g)(1회제공량당) 나트륨(mg)(1회제공량당) \\\n",
"0 67.8 10.1 3.7 NaN NaN \n",
"\n",
" 콜레스테롤(mg)(1회제공량당) 포화지방산(g)(1회제공량당) 트랜스지방(g)(1회제공량당) 가공업체명 구축년도 \\\n",
"0 NaN NaN NaN NaN 2001 \n",
"\n",
" 자료원 \n",
"0 농촌진흥청 식품성분표 DB \n",
"CPU times: user 41.8 ms, sys: 254 µs, total: 42 ms\n",
"Wall time: 40.6 ms\n"
]
}
],
"source": [
"%%time\n",
"result, foodId = [], 'I0750' # 식품 영양정보\n",
"# _ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)\n",
"# for _ in tqdm(range(1, 13824+1, 1000)):\n",
"# result.append(FoodSafe().getData(foodId, _, _+999, FoodSafe().apiKey[foodId]['cols'])) \n",
"# pd.concat(result).to_excel('data/food_nutrient.xls', index=None)\n",
"df_db = pd.read_csv('data/food_nutrient.csv')\n",
"print(len(set(df_db.식품군)), len(set(df_db.식품코드)), list(set(df_db.식품군))[::20])\n",
"print(df_db.head(1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **3 조리식품_레시피_DB**\n",
"**'COOKRCP01' :** '조리식품_레시피_DB'"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 27.5 ms, sys: 0 ns, total: 27.5 ms\n",
"Wall time: 42.9 ms\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 소유자 | \n",
" 메뉴명 | \n",
" 조리방법 | \n",
" 요리종류 | \n",
" 중량(1인분) | \n",
" 열량 | \n",
" 탄수화물 | \n",
" 단백질 | \n",
" 지방 | \n",
" 나트륨 | \n",
" ... | \n",
" 만드는법_16 | \n",
" 만드는법_이미지_16 | \n",
" 만드는법_17 | \n",
" 만드는법_이미지_17 | \n",
" 만드는법_18 | \n",
" 만드는법_이미지_18 | \n",
" 만드는법_19 | \n",
" 만드는법_이미지_19 | \n",
" 만드는법_20 | \n",
" 만드는법_이미지_20 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 식약처 | \n",
" 칼륨 듬뿍 고구마죽 | \n",
" 끓이기 | \n",
" 후식 | \n",
" NaN | \n",
" 205.0 | \n",
" 35.0 | \n",
" 3.0 | \n",
" 6.0 | \n",
" 68.0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 1 | \n",
" 식약처 | \n",
" 누룽지 두부 계란죽 | \n",
" 끓이기 | \n",
" 밥 | \n",
" NaN | \n",
" 380.0 | \n",
" 67.0 | \n",
" 12.0 | \n",
" 7.0 | \n",
" 271.0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
2 rows × 54 columns
\n",
"
"
],
"text/plain": [
" 소유자 메뉴명 조리방법 요리종류 중량(1인분) 열량 탄수화물 단백질 지방 나트륨 ... \\\n",
"0 식약처 칼륨 듬뿍 고구마죽 끓이기 후식 NaN 205.0 35.0 3.0 6.0 68.0 ... \n",
"1 식약처 누룽지 두부 계란죽 끓이기 밥 NaN 380.0 67.0 12.0 7.0 271.0 ... \n",
"\n",
" 만드는법_16 만드는법_이미지_16 만드는법_17 만드는법_이미지_17 만드는법_18 만드는법_이미지_18 만드는법_19 \\\n",
"0 NaN NaN NaN NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN NaN NaN NaN \n",
"\n",
" 만드는법_이미지_19 만드는법_20 만드는법_이미지_20 \n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"\n",
"[2 rows x 54 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"result, foodId = [], 'COOKRCP01' # 레시피 데이터\n",
"# _ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)\n",
"# for _ in tqdm(range(1, 1500+1, 1000)):\n",
"# result.append(FoodSafe().getData(foodId, _, _+999, FoodSafe().apiKey[foodId]['cols']))\n",
"# pd.concat(result).to_excel('data/food_recipe_info.xls', index=None)\n",
"df_recipe = pd.read_csv('data/food_recipe.csv')\n",
"df_recipe.head(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **4 유통제품 바코드 정보**\n",
"**'I2570' :** '유통바코드'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"******** 전체 Data 갯수 : 100,207 ********\n",
"CPU times: user 6.58 ms, sys: 2.39 ms, total: 8.97 ms\n",
"Wall time: 14.7 s\n"
]
}
],
"source": [
"%%time\n",
"result, foodId = [], 'C005' # 제품 바코드 번호\n",
"_ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)\n",
"# for _ in tqdm(range(1, 100200+1, 1000)):\n",
"# from collections import OrderedDict\n",
"# for _ in tqdm(range(1, 100200+1, 1000)):\n",
"# result.append(FoodSafe().getData(foodId, _, _+999, \n",
"# FoodSafe().apiKey[foodId]['cols']).loc[:,\n",
"# list(OrderedDict(FoodSafe().apiKey['C005']['cols']).values())])\n",
"# pd.concat(result).to_csv('data/food_barcode.csv', index=None)\n",
"# pd.concat(result).to_excel('data/food_barcode.xls', index=None)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"******** 전체 Data 갯수 : 52,128 ********\n",
"CPU times: user 6.33 ms, sys: 2.38 ms, total: 8.71 ms\n",
"Wall time: 15.6 s\n"
]
}
],
"source": [
"%%time\n",
"result, foodId = [], \"I2570\" # 유통 바코드\n",
"_ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)\n",
"# for _ in tqdm(range(1, 49000+1, 1000)):\n",
"# result.append(FoodSafe().getData(foodId, _, _+999, FoodSafe().apiKey[foodId]['cols']))\n",
"# pd.concat(result).to_excel('data/food_barcode_info.xls', index=None)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 번호 | \n",
" 식품코드 | \n",
" 식품군 | \n",
" 식품이름 | \n",
" 1회제공량(g) | \n",
" 열량(kcal)(1회제공량당) | \n",
" 탄수화물(g)(1회제공량당) | \n",
" 단백질(g)(1회제공량당) | \n",
" 지방(g)(1회제공량당) | \n",
" 당류(g)(1회제공량당) | \n",
" 나트륨(mg)(1회제공량당) | \n",
" 콜레스테롤(mg)(1회제공량당) | \n",
" 포화지방산(g)(1회제공량당) | \n",
" 트랜스지방(g)(1회제공량당) | \n",
" 가공업체명 | \n",
" 구축년도 | \n",
" 자료원 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 100101000100000001 | \n",
" 곡류 및 그 제품 | \n",
" 고량미,알곡 | \n",
" 100.0 | \n",
" 349.0 | \n",
" 67.8 | \n",
" 10.1 | \n",
" 3.7 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2001 | \n",
" 농촌진흥청 식품성분표 DB | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 100101000200200001 | \n",
" 곡류 및 그 제품 | \n",
" 겉귀리,생것 | \n",
" 100.0 | \n",
" 332.0 | \n",
" 73.5 | \n",
" 11.4 | \n",
" 3.7 | \n",
" NaN | \n",
" 2 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2017 | \n",
" 농촌진흥청 식품성분표 DB | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 100101000200300001 | \n",
" 곡류 및 그 제품 | \n",
" 쌀귀리,생것 | \n",
" 100.0 | \n",
" 334.0 | \n",
" 70.4 | \n",
" 14.3 | \n",
" 3.8 | \n",
" NaN | \n",
" 3 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2017 | \n",
" 농촌진흥청 식품성분표 DB | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 번호 식품코드 식품군 식품이름 1회제공량(g) 열량(kcal)(1회제공량당) \\\n",
"0 1 100101000100000001 곡류 및 그 제품 고량미,알곡 100.0 349.0 \n",
"1 2 100101000200200001 곡류 및 그 제품 겉귀리,생것 100.0 332.0 \n",
"2 3 100101000200300001 곡류 및 그 제품 쌀귀리,생것 100.0 334.0 \n",
"\n",
" 탄수화물(g)(1회제공량당) 단백질(g)(1회제공량당) 지방(g)(1회제공량당) 당류(g)(1회제공량당) 나트륨(mg)(1회제공량당) \\\n",
"0 67.8 10.1 3.7 NaN NaN \n",
"1 73.5 11.4 3.7 NaN 2 \n",
"2 70.4 14.3 3.8 NaN 3 \n",
"\n",
" 콜레스테롤(mg)(1회제공량당) 포화지방산(g)(1회제공량당) 트랜스지방(g)(1회제공량당) 가공업체명 구축년도 \\\n",
"0 NaN NaN NaN NaN 2001 \n",
"1 NaN NaN NaN NaN 2017 \n",
"2 NaN NaN NaN NaN 2017 \n",
"\n",
" 자료원 \n",
"0 농촌진흥청 식품성분표 DB \n",
"1 농촌진흥청 식품성분표 DB \n",
"2 농촌진흥청 식품성분표 DB "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_temp = pd.read_csv(\"data/food_nutrient.csv\")\n",
"df_temp.head(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"\n",
"# **기타 공산품 가격정보**\n",
"\n",
"**[Data.go.kr 공산품 가격정보](https://www.data.go.kr/dataset/3043385/openapi.do?lang=ko)**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## **1 공산품 Id 정보수집**\n",
"**[Data.go.kr 공산품 가격정보](https://www.data.go.kr/dataset/3043385/openapi.do?lang=ko)**\n",
"1. **[한국소비자원 참가격](https://www.price.go.kr/tprice/portal/pricenewsandtpriceintro/iteminfo/getItemList.do)**\n",
"1. **[유통상품지식뱅크](http://35.200.32.201/)**\n",
"1. 분류기준 명확하게 찾기"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(441, 5)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from momukji import Product\n",
"item_list = Product().getList()\n",
"item_list.shape"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}