자료들 중 유효값 필드선정 및 데이터 전처리
import pandas as pd
from tqdm import tqdm
from momukji import FoodSafe
[(_, FoodSafe().apiKey[_]['name']) for _ in FoodSafe().apiKey.keys()]
[('I0750', '식품영양정보DB'), ('COOKRCP01', '조리식품_레시피_DB'), ('I0490', '회수판매중지'), ('C005', '바코드제품정보'), ('I2570', '유통바코드')]
'I0490' : '회수판매중지'
%%time
foodId = 'I0490' # 회수제품 데이터 정보 (대략 500개 이내)
# data = FoodSafe().getData(foodId, 1, 500,
# FoodSafe().apiKey[foodId]['cols'], display=True)
# data.등록일 = [str(_.date()) for _ in pd.DatetimeIndex(data.등록일)]
# data.to_csv("data/food_recall.csv", index=None)
df_recall = pd.read_csv("data/food_recall.csv")
df_recall.head(2)
CPU times: user 4.36 ms, sys: 0 ns, total: 4.36 ms Wall time: 3.69 ms
등록일 | 식품분류 | 제품명 | 제조업체명 | 회수사유 | 품목코드 | 바코드번호 | 제품사진URL | |
---|---|---|---|---|---|---|---|---|
0 | 2019-12-10 | 가공식품 | 자연내림고려홍삼액골드 | 주식회사동진제약 | 세균수 기준 규격 부적합 | C0309070000000 | 8809059644744 | http://coop.foodsafetykorea.go.kr/open/minfo_i... |
1 | 2019-12-10 | 가공식품 | 자연내림고려홍삼액골드 | 주식회사동진제약 | 세균수 기준 규격 부적합 | C0309070000000 | 8809059644898 | http://coop.foodsafetykorea.go.kr/open/minfo_i... |
%%time
result, foodId = [], 'I0750' # 식품 영양정보
# _ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)
# for _ in tqdm(range(1, 13824+1, 1000)):
# result.append(FoodSafe().getData(foodId, _, _+999, FoodSafe().apiKey[foodId]['cols']))
# pd.concat(result).to_excel('data/food_nutrient.xls', index=None)
df_db = pd.read_csv('data/food_nutrient.csv')
print(len(set(df_db.식품군)), len(set(df_db.식품코드)), list(set(df_db.식품군))[::20])
print(df_db.head(1))
105 13824 ['가공유류', '곡류 및 그 제품', '유당분해우유', '과·채가공품류', '곡류, 서류 제품', '분유류'] 번호 식품코드 식품군 식품이름 1회제공량(g) 열량(kcal)(1회제공량당) \ 0 1 100101000100000001 곡류 및 그 제품 고량미,알곡 100.0 349.0 탄수화물(g)(1회제공량당) 단백질(g)(1회제공량당) 지방(g)(1회제공량당) 당류(g)(1회제공량당) 나트륨(mg)(1회제공량당) \ 0 67.8 10.1 3.7 NaN NaN 콜레스테롤(mg)(1회제공량당) 포화지방산(g)(1회제공량당) 트랜스지방(g)(1회제공량당) 가공업체명 구축년도 \ 0 NaN NaN NaN NaN 2001 자료원 0 농촌진흥청 식품성분표 DB CPU times: user 41.8 ms, sys: 254 µs, total: 42 ms Wall time: 40.6 ms
'COOKRCP01' : '조리식품_레시피_DB'
%%time
result, foodId = [], 'COOKRCP01' # 레시피 데이터
# _ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)
# for _ in tqdm(range(1, 1500+1, 1000)):
# result.append(FoodSafe().getData(foodId, _, _+999, FoodSafe().apiKey[foodId]['cols']))
# pd.concat(result).to_excel('data/food_recipe_info.xls', index=None)
df_recipe = pd.read_csv('data/food_recipe.csv')
df_recipe.head(2)
CPU times: user 27.5 ms, sys: 0 ns, total: 27.5 ms Wall time: 42.9 ms
소유자 | 메뉴명 | 조리방법 | 요리종류 | 중량(1인분) | 열량 | 탄수화물 | 단백질 | 지방 | 나트륨 | ... | 만드는법_16 | 만드는법_이미지_16 | 만드는법_17 | 만드는법_이미지_17 | 만드는법_18 | 만드는법_이미지_18 | 만드는법_19 | 만드는법_이미지_19 | 만드는법_20 | 만드는법_이미지_20 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 식약처 | 칼륨 듬뿍 고구마죽 | 끓이기 | 후식 | NaN | 205.0 | 35.0 | 3.0 | 6.0 | 68.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 식약처 | 누룽지 두부 계란죽 | 끓이기 | 밥 | NaN | 380.0 | 67.0 | 12.0 | 7.0 | 271.0 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
2 rows × 54 columns
'I2570' : '유통바코드'
%%time
result, foodId = [], 'C005' # 제품 바코드 번호
_ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)
# for _ in tqdm(range(1, 100200+1, 1000)):
# from collections import OrderedDict
# for _ in tqdm(range(1, 100200+1, 1000)):
# result.append(FoodSafe().getData(foodId, _, _+999,
# FoodSafe().apiKey[foodId]['cols']).loc[:,
# list(OrderedDict(FoodSafe().apiKey['C005']['cols']).values())])
# pd.concat(result).to_csv('data/food_barcode.csv', index=None)
# pd.concat(result).to_excel('data/food_barcode.xls', index=None)
******** 전체 Data 갯수 : 100,207 ******** CPU times: user 6.58 ms, sys: 2.39 ms, total: 8.97 ms Wall time: 14.7 s
%%time
result, foodId = [], "I2570" # 유통 바코드
_ = FoodSafe().getData(foodId, 1, 2, FoodSafe().apiKey[foodId]['cols'], display=True)
# for _ in tqdm(range(1, 49000+1, 1000)):
# result.append(FoodSafe().getData(foodId, _, _+999, FoodSafe().apiKey[foodId]['cols']))
# pd.concat(result).to_excel('data/food_barcode_info.xls', index=None)
******** 전체 Data 갯수 : 52,128 ******** CPU times: user 6.33 ms, sys: 2.38 ms, total: 8.71 ms Wall time: 15.6 s
df_temp = pd.read_csv("data/food_nutrient.csv")
df_temp.head(3)
번호 | 식품코드 | 식품군 | 식품이름 | 1회제공량(g) | 열량(kcal)(1회제공량당) | 탄수화물(g)(1회제공량당) | 단백질(g)(1회제공량당) | 지방(g)(1회제공량당) | 당류(g)(1회제공량당) | 나트륨(mg)(1회제공량당) | 콜레스테롤(mg)(1회제공량당) | 포화지방산(g)(1회제공량당) | 트랜스지방(g)(1회제공량당) | 가공업체명 | 구축년도 | 자료원 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 100101000100000001 | 곡류 및 그 제품 | 고량미,알곡 | 100.0 | 349.0 | 67.8 | 10.1 | 3.7 | NaN | NaN | NaN | NaN | NaN | NaN | 2001 | 농촌진흥청 식품성분표 DB |
1 | 2 | 100101000200200001 | 곡류 및 그 제품 | 겉귀리,생것 | 100.0 | 332.0 | 73.5 | 11.4 | 3.7 | NaN | 2 | NaN | NaN | NaN | NaN | 2017 | 농촌진흥청 식품성분표 DB |
2 | 3 | 100101000200300001 | 곡류 및 그 제품 | 쌀귀리,생것 | 100.0 | 334.0 | 70.4 | 14.3 | 3.8 | NaN | 3 | NaN | NaN | NaN | NaN | 2017 | 농촌진흥청 식품성분표 DB |
from momukji import Product
item_list = Product().getList()
item_list.shape
(441, 5)