{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
등록일식품분류제품명제조업체명회수사유품목코드바코드번호제품사진URL
02019-12-10가공식품자연내림고려홍삼액골드주식회사동진제약세균수 기준 규격 부적합C03090700000008809059644744http://coop.foodsafetykorea.go.kr/open/minfo_i...
12019-12-10가공식품자연내림고려홍삼액골드주식회사동진제약세균수 기준 규격 부적합C03090700000008809059644898http://coop.foodsafetykorea.go.kr/open/minfo_i...
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
소유자메뉴명조리방법요리종류중량(1인분)열량탄수화물단백질지방나트륨...만드는법_16만드는법_이미지_16만드는법_17만드는법_이미지_17만드는법_18만드는법_이미지_18만드는법_19만드는법_이미지_19만드는법_20만드는법_이미지_20
0식약처칼륨 듬뿍 고구마죽끓이기후식NaN205.035.03.06.068.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1식약처누룽지 두부 계란죽끓이기NaN380.067.012.07.0271.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
번호식품코드식품군식품이름1회제공량(g)열량(kcal)(1회제공량당)탄수화물(g)(1회제공량당)단백질(g)(1회제공량당)지방(g)(1회제공량당)당류(g)(1회제공량당)나트륨(mg)(1회제공량당)콜레스테롤(mg)(1회제공량당)포화지방산(g)(1회제공량당)트랜스지방(g)(1회제공량당)가공업체명구축년도자료원
01100101000100000001곡류 및 그 제품고량미,알곡100.0349.067.810.13.7NaNNaNNaNNaNNaNNaN2001농촌진흥청 식품성분표 DB
12100101000200200001곡류 및 그 제품겉귀리,생것100.0332.073.511.43.7NaN2NaNNaNNaNNaN2017농촌진흥청 식품성분표 DB
23100101000200300001곡류 및 그 제품쌀귀리,생것100.0334.070.414.33.8NaN3NaNNaNNaNNaN2017농촌진흥청 식품성분표 DB
\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 }