무료 매크로 참조 테이블: CSV 및 JSON 형식의 완전한 영양 데이터 다운로드
500개 이상의 일반 식품에 대한 완전한 영양 데이터가 포함된 무료 매크로 참조 테이블을 CSV 및 JSON 형식으로 다운로드하세요. 단백질, 탄수화물, 지방, 섬유소 및 칼로리가 식품 카테고리별로 정리되어 있습니다.
영양 앱을 개발하든, 연구를 진행하든, 고객을 코칭하든, 아니면 단순히 책상 위에 신뢰할 수 있는 참조 시트를 두고 싶든, 실제로 작업할 수 있는 형식의 깨끗한 매크로 데이터가 필요합니다. 정부 데이터베이스는 존재하지만, 방대하고 일관성이 없으며, 관료들을 위한 형식으로 되어 있습니다.
우리는 500개 이상의 일반 식품에 대한 완전한 매크로 영양소 분해가 포함된 무료 매크로 참조 테이블 세트를 준비했습니다. 이 데이터는 CSV 및 JSON 형식으로 제공되며, 스프레드시트, 데이터베이스, 스크립트 또는 애플리케이션에 바로 사용할 수 있습니다. 모든 항목은 주요 출처와 대조하여 검증되었으며, 파일 구조가 정리나 변환 없이 즉시 사용할 수 있도록 되어 있습니다.
이 페이지에서는 테이블에 포함된 내용, 데이터 구조, 프로그래밍 방식으로 로드하는 방법, 수정이 필요한 사항을 발견했을 때 기여하는 방법에 대해 설명합니다.
포함된 내용
매크로 참조 테이블에는 7개의 주요 카테고리에서 가장 일반적으로 소비되는 500개 이상의 식품이 포함되어 있습니다. 각 식품 항목에 대해 다음 정보를 제공합니다:
- 식품 이름 — 영양 과학에서 사용되는 표준 영어 이름
- 카테고리 — 7개의 최상위 카테고리 중 하나 (아래에서 자세히 설명)
- 하위 카테고리 — 부모 카테고리 내에서 더 구체적인 그룹
- 서빙 크기 설명 — 사람이 읽을 수 있는 서빙 크기 (예: "중간 바나나 1개", "조리된 1컵")
- 서빙 무게 (그램) — 해당 서빙 크기의 그램 수치
- 칼로리 — 총 에너지 (킬로칼로리, kcal)
- 단백질 — 서빙당 단백질 그램 수
- 총 지방 — 서빙당 총 지방 그램 수
- 포화 지방 — 서빙당 포화 지방 그램 수
- 총 탄수화물 — 서빙당 총 탄수화물 그램 수
- 식이 섬유 — 서빙당 식이 섬유 그램 수
- 당류 — 서빙당 총 당류 그램 수
- 나트륨 — 서빙당 나트륨 밀리그램 수
모든 값은 나열된 서빙 크기 기준으로 보고되며, 100그램 기준이 아닙니다. 우리는 서빙 기반 데이터가 식사를 추적하거나, 식단을 구성하거나, 인터페이스에 영양 정보를 표시할 때 대부분의 사람들이 실제로 필요로 하는 데이터라고 판단했습니다. 100그램 기준 값이 필요하다면, 서빙 무게로 나누고 100을 곱하는 것이 간단합니다.
테이블에는 나트륨과 섬유소를 제외한 미량 영양소는 포함되어 있지 않습니다. 미량 영양소 프로필(비타민, 미네랄, 아미노산)에 대한 자세한 내용은 이 글의 끝부분에 있는 Nutrola의 API 섹션을 참조하세요 — 그곳에 상세한 데이터가 있습니다.
데이터 형식 사양
CSV 형식
CSV 파일은 UTF-8 인코딩을 사용하며, 헤더 행이 포함되어 있습니다. 필드는 쉼표로 구분되며, 텍스트 필드는 따옴표로 묶여 있습니다. 구조는 다음과 같습니다:
food_name,category,subcategory,serving_description,serving_weight_g,calories_kcal,protein_g,total_fat_g,saturated_fat_g,total_carbs_g,fiber_g,sugar_g,sodium_mg
"닭가슴살, 뼈 없는 껍질 제거, 조리된","단백질","가금류","1 가슴 (170g)",170,284,53.4,6.2,1.7,0.0,0.0,0.0,126
"대서양 연어, 조리된","단백질","어류 및 해산물","1 필레 (154g)",154,280,39.3,12.4,2.5,0.0,0.0,0.0,109
"현미, 조리된","곡물 및 전분","전곡","1컵 (195g)",195,216,5.0,1.8,0.4,44.8,3.5,0.7,10
"바나나, 생","과일","열대 과일","중간 1개 (118g)",118,105,1.3,0.4,0.1,27.0,3.1,14.4,1
CSV 파일은 Microsoft Excel, Google Sheets, LibreOffice Calc, Apple Numbers 및 CSV 파싱 지원이 있는 모든 프로그래밍 언어와 호환됩니다. 특별한 설정이 필요하지 않으며, 파일을 열면 올바르게 파싱됩니다.
JSON 형식
JSON 파일은 각 식품 항목에 대한 객체 배열을 포함합니다. 구조는 CSV 필드와 유사합니다:
{
"version": "1.4.0",
"generated": "2026-03-12",
"source": "Nutrola Macro Reference Tables",
"record_count": 527,
"foods": [
{
"food_name": "닭가슴살, 뼈 없는 껍질 제거, 조리된",
"category": "단백질",
"subcategory": "가금류",
"serving_description": "1 가슴 (170g)",
"serving_weight_g": 170,
"nutrients": {
"calories_kcal": 284,
"protein_g": 53.4,
"total_fat_g": 6.2,
"saturated_fat_g": 1.7,
"total_carbs_g": 0.0,
"fiber_g": 0.0,
"sugar_g": 0.0,
"sodium_mg": 126
}
}
]
}
JSON 파일은 상위 수준에서 메타데이터 필드를 포함합니다: 업데이트 추적을 위한 버전 문자열, 생성 날짜, 출처 이름 및 총 레코드 수. 이를 통해 최신 버전을 확인하고 애플리케이션에 업데이트 확인 로직을 구축하기 쉽습니다.
숫자 값은 문자열이 아닌 숫자로 저장됩니다. Null 값은 나타나지 않습니다 — 영양소 값이 알려지지 않은 경우, 해당 식품은 데이터 세트에서 제외됩니다. 이는 데이터를 깨끗하게 유지하고 계산에서 오류를 방지하기 위한 의도적인 선택이었습니다.
필드 설명
모든 필드에 대한 자세한 설명, 단위, 예상 범위 및 예외 사례는 다음과 같습니다:
| 필드 | 유형 | 단위 | 설명 |
|---|---|---|---|
| food_name | 문자열 | — | 표준 영어 이름. 관련된 조리 방법을 포함합니다 (예: "조리된", "생", "건조"). |
| category | 문자열 | — | 7개의 최상위 카테고리 중 하나. 아래 카테고리 섹션 참조. |
| subcategory | 문자열 | — | 더 구체적인 그룹. 예를 들어, "단백질" 내에는 "가금류", "붉은 고기", "어류 및 해산물", "콩류", "계란"이 포함됩니다. |
| serving_description | 문자열 | — | 사람이 읽을 수 있는 서빙 크기. 항상 괄호 안에 그램 무게가 포함됩니다. |
| serving_weight_g | 숫자 | 그램 | 서빙의 숫자 그램 무게. 대부분의 항목에 대해 정수 값, 정밀도가 중요한 항목에 대해서는 소수점 한 자리. |
| calories_kcal | 숫자 | kcal | 총 에너지. Atwater 시스템을 사용하여 계산됨 (단백질 4 kcal/g, 탄수화물 4 kcal/g, 지방 9 kcal/g). |
| protein_g | 숫자 | 그램 | 총 단백질. 소수점 한 자리 정밀도. |
| total_fat_g | 숫자 | 그램 | 포화, 단일 불포화 및 다중 불포화 지방을 포함한 총 지방. |
| saturated_fat_g | 숫자 | 그램 | 포화 지방산만. |
| total_carbs_g | 숫자 | 그램 | 섬유소 및 당을 포함한 총 탄수화물. |
| fiber_g | 숫자 | 그램 | 총 식이 섬유 (수용성 + 불용성). |
| sugar_g | 숫자 | 그램 | 총 당 (자연 발생 + 추가). 데이터 세트는 추가 당과 자연 당을 구분하지 않습니다. |
| sodium_mg | 숫자 | 밀리그램 | 나트륨 함량. 다른 영양소 필드와 달리 밀리그램 단위입니다. |
정밀도에 대한 몇 가지 주의 사항: 모든 영양소 값은 소수점 한 자리로 반올림됩니다. 이는 기본 출처 데이터의 정밀도 수준과 일치합니다. 더 많은 소수 자리를 보고하면 잘못된 정확도를 암시할 수 있습니다 — 식품 성분은 재배 조건, 동물 품종 및 조리 방법에 따라 자연적으로 5-15% 변동합니다.
식품 카테고리
500개 이상의 식품은 7개의 최상위 카테고리로 구성되어 있으며, 각 카테고리는 여러 하위 카테고리를 포함합니다:
단백질
약 95개의 항목이 포함되어 있으며, 가금류(닭가슴살, 허벅지, 칠면조, 다진 칠면조), 붉은 고기(소고기 등심, 다양한 기름기 비율의 다진 소고기, 돼지고기 등심, 양고기), 어류 및 해산물(연어, 참치, 새우, 대구, 틸라피아, 정어리), 계란(전체, 흰자, 스크램블), 식물성 단백질(두부, 템페, 세이탄, 에다마메)을 포함합니다. 렌즈콩, 병아리콩, 검은콩과 같은 콩류는 주 영양 역할이 단백질 전달이므로 곡물 대신 여기에 포함됩니다.
곡물 및 전분
약 80개의 항목이 포함되어 있으며, 전곡(현미, 귀리, 퀴노아, 보리, 불구르), 정제 곡물(백미, 흰빵, 파스타), 전분 채소(감자, 고구마, 옥수수), 일반 곡물 제품(또띠아, 베이글, 크래커, 쿠스쿠스)을 포함합니다. 곡물의 경우 조리된 값과 건조된 값을 모두 제공합니다.
과일
약 65개의 항목이 포함되어 있으며, 일반 신선 과일(사과, 바나나, 오렌지, 딸기, 블루베리, 포도), 열대 과일(망고, 파인애플, 파파야, 키위), 건조 과일(건포도, 대추, 건조 살구, 크랜베리), 냉동 과일을 포함합니다. 모든 신선 과일 항목은 생식용 부분에 대한 것이며, 해당 서빙 무게에서 씨앗, 껍질 및 씨를 제외합니다.
채소
약 85개의 항목이 포함되어 있으며, 잎채소(시금치, 케일, 로메인, 아루굴라), 십자화과 채소(브로콜리, 콜리플라워, 방울양배추, 양배추), 뿌리채소(당근, 비트, 순무, 무), 알리움(양파, 마늘), 가지과(토마토, 피망, 가지), 기타 일반 채소(오이, 셀러리, 호박, 버섯, 아스파라거스)를 포함합니다. 조리가 영양 밀도를 크게 변화시키는 채소에 대해서는 생과 조리된 값이 모두 제공됩니다.
유제품 및 대체 식품
약 70개의 항목이 포함되어 있으며, 우유(전유, 2%, 탈지유 및 식물성 우유), 요거트(그릭, 일반, 맛이 첨가된 것, 식물성), 치즈(체다, 모짜렐라, 페타, 코티지 치즈, 크림 치즈, 파르메산), 버터, 크림 및 일반 유제품 대체 식품(아몬드 우유, 귀리 우유, 두유, 코코넛 요거트)을 포함합니다. 식물성 우유와 요거트는 별도의 카테고리 대신 여기에 그룹화되어 있습니다. 사용자가 일반적으로 직접 대체품으로 사용하기 때문입니다.
간식 및 가공 식품
약 75개의 항목이 포함되어 있으며, 견과류 및 씨앗(아몬드, 호두, 땅콩, 치아씨, 아마씨, 해바라기씨), 너트 버터(땅콩버터, 아몬드버터), 일반 간식(프레첼, 팝콘, 그래놀라 바, 단백질 바, 트레일 믹스, 칩, 다크 초콜릿), 스프레드 및 조미료(후무스, 과카몰리, 살사, 마요네즈, 올리브 오일, 꿀), 단백질 파우더 및 에너지 바와 같은 일반적으로 추적되는 기타 항목이 포함됩니다.
음료
약 60개의 항목이 포함되어 있으며, 주스(오렌지 주스, 사과 주스, 크랜베리 주스), 청량 음료(콜라, 레몬 라임 소다, 생강 에일), 스포츠 및 에너지 음료, 커피 음료(블랙 커피, 라떼, 카푸치노, 다양한 우유가 들어간 모카), 스무디 베이스, 알코올 음료(맥주, 와인, 증류주), 일반 첨가물(크림, 설탕, 맛 시럽)을 포함합니다. 물은 영양소가 없기 때문에 포함되지 않습니다.
데이터를 프로그래밍 방식으로 사용하기
CSV 및 JSON 형식을 제공하는 주된 목적은 이 데이터를 코드에 직접 로드할 수 있도록 하기 위함입니다. 다음은 Python 및 JavaScript에서의 작동 예시입니다.
Python: CSV 로드하기
import csv
def load_macro_table(filepath):
foods = []
with open(filepath, newline='', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
# 숫자 필드를 문자열에서 변환
for key in ['serving_weight_g', 'calories_kcal', 'protein_g',
'total_fat_g', 'saturated_fat_g', 'total_carbs_g',
'fiber_g', 'sugar_g', 'sodium_mg']:
row[key] = float(row[key])
foods.append(row)
return foods
foods = load_macro_table('macro_reference_table.csv')
# 카테고리별 모든 식품 찾기
proteins = [f for f in foods if f['category'] == '단백질']
print(f"단백질 공급원 {len(proteins)}개 발견")
# 칼로리당 단백질이 가장 높은 식품 찾기
foods_sorted = sorted(foods, key=lambda f: f['protein_g'] / max(f['calories_kcal'], 1), reverse=True)
print("\n칼로리당 단백질 밀도가 가장 높은 상위 10개 식품:")
for f in foods_sorted[:10]:
ratio = f['protein_g'] / f['calories_kcal']
print(f" {f['food_name']}: {ratio:.3f} g/kcal ({f['protein_g']}g 단백질, {f['calories_kcal']} kcal)")
Python: JSON 로드하기
import json
def load_macro_json(filepath):
with open(filepath, encoding='utf-8') as f:
data = json.load(f)
print(f"{data['record_count']}개의 식품을 로드했습니다 (버전 {data['version']})")
return data['foods']
foods = load_macro_json('macro_reference_table.json')
# 식품 이름으로 조회 사전 만들기
lookup = {f['food_name'].lower(): f for f in foods}
# 빠른 조회
chicken = lookup.get('닭가슴살, 뼈 없는 껍질 제거, 조리된')
if chicken:
n = chicken['nutrients']
print(f"닭가슴살 서빙당 ({chicken['serving_description']}):")
print(f" 칼로리: {n['calories_kcal']} kcal")
print(f" 단백질: {n['protein_g']}g")
print(f" 지방: {n['total_fat_g']}g")
print(f" 탄수화물: {n['total_carbs_g']}g")
JavaScript: JSON 로드하기
// Node.js
const fs = require('fs');
function loadMacroTable(filepath) {
const raw = fs.readFileSync(filepath, 'utf-8');
const data = JSON.parse(raw);
console.log(`식품 ${data.record_count}개 로드됨 (버전 ${data.version})`);
return data.foods;
}
const foods = loadMacroTable('macro_reference_table.json');
// 카테고리별 식품 그룹화
const byCategory = {};
for (const food of foods) {
if (!byCategory[food.category]) {
byCategory[food.category] = [];
}
byCategory[food.category].push(food);
}
// 요약 출력
for (const [category, items] of Object.entries(byCategory)) {
console.log(`${category}: ${items.length}개 식품`);
}
// 저칼로리 고섬유 식품 찾기
const highFiber = foods
.filter(f => f.nutrients.fiber_g >= 5 && f.nutrients.calories_kcal <= 200)
.sort((a, b) => b.nutrients.fiber_g - a.nutrients.fiber_g);
console.log('\n고섬유 저칼로리 식품:');
highFiber.slice(0, 10).forEach(f => {
console.log(` ${f.food_name}: ${f.nutrients.fiber_g}g 섬유, ${f.nutrients.calories_kcal} kcal`);
});
JavaScript: 브라우저에서 CSV 로드하기
// 의존성 없는 브라우저 기반 CSV 파싱
async function loadMacroCSV(url) {
const response = await fetch(url);
const text = await response.text();
const lines = text.split('\n').filter(line => line.trim());
const headers = parseCSVLine(lines[0]);
return lines.slice(1).map(line => {
const values = parseCSVLine(line);
const obj = {};
headers.forEach((header, i) => {
obj[header] = isNaN(values[i]) ? values[i] : parseFloat(values[i]);
});
return obj;
});
}
function parseCSVLine(line) {
const result = [];
let current = '';
let inQuotes = false;
for (const char of line) {
if (char === '"') { inQuotes = !inQuotes; }
else if (char === ',' && !inQuotes) { result.push(current.trim()); current = ''; }
else { current += char; }
}
result.push(current.trim());
return result;
}
// 사용 예
const foods = await loadMacroCSV('/data/macro_reference_table.csv');
console.log(`식품 ${foods.length}개 로드됨`);
이 예제들은 데이터 로드, 검색 및 필터링, 카테고리별 그룹화, 영양 밀도에 따른 정렬과 같은 가장 일반적인 작업을 보여줍니다. 데이터 구조는 의도적으로 간단하여 특별한 라이브러리 없이도 작업할 수 있습니다.
데이터 출처
매크로 참조 테이블은 다음의 주요 출처에서 수집되었습니다:
USDA SR Legacy Database. USDA 표준 참조 레거시 데이터베이스는 미국 식품 성분의 기초 데이터 세트입니다. 7,600개 이상의 식품 항목에 대한 실험실 분석 영양 데이터가 포함되어 있습니다. 우리의 테이블은 일반/비브랜드 식품에 대해 SR Legacy를 주요 출처로 사용합니다. 우리는 SR Legacy의 값이 영양 연구에서 더 널리 검증되고 인용되기 때문에 더 최신의 FoodData Central FNDDS보다 SR Legacy를 선택했습니다.
USDA FoodData Central. SR Legacy에서 다루지 않는 식품, 특히 새로운 식품 항목과 업데이트된 값에 대해서는 FoodData Central의 Foundation Foods 및 Survey Foods 데이터 세트를 참조합니다.
국제 식품 성분 데이터베이스. 미국 데이터베이스에 나타나지 않을 수 있는 전 세계적으로 소비되는 식품에 대해서는 Public Health England의 McCance와 Widdowson 성분 표, Food Standards Australia New Zealand (FSANZ) NUTTAB, Canadian Nutrient File (CNF), Danish Food Composition Databank (Frida)의 데이터를 교차 참조합니다. 이는 열대 과일, 지역 곡물 및 미국 외에서 일반적인 조리 방법과 관련이 있습니다.
제조업체 데이터. 간식 및 음료 카테고리의 가공 및 브랜드 항목에 대해서는 제조업체가 제공한 영양 성분 패널을 참조합니다. 제조업체 데이터가 실험실 분석과 충돌하는 경우, 우리는 불일치를 기록하고 실험실 값을 기본으로 삼습니다.
모든 값은 최소 두 개의 독립 출처와 대조되었습니다. 출처 간의 차이가 10% 이상일 경우, 우리는 원인을 조사하고(보통 다른 조리 방법이나 품종 차이) 일반적으로 소비되는 방식을 가장 잘 대표하는 값을 선택했습니다.
데이터 세트는 버전 관리됩니다. 현재 버전은 1.4.0이며, 2026년 3월에 마지막으로 업데이트되었습니다. 우리는 분기마다 테이블을 업데이트하여 수정 사항을 반영하고 요청된 식품을 추가하며 출처 데이터베이스의 중요한 변경 사항을 반영합니다.
수정 사항 기여 방법
영양 데이터는 본질적으로 완벽하지 않습니다. 식품 성분은 지역, 계절, 품종 및 조리 방법에 따라 달라집니다. 오류를 발견하거나 신뢰할 수 있는 출처에 의해 뒷받침된 수정 사항이 있으면 알려주세요.
수정 사항을 제출하는 방법은 세 가지입니다:
GitHub Issues. 매크로 참조 테이블은 공개 GitHub 리포지토리에 호스팅됩니다. 식품 이름, 잘못된 필드, 현재 값, 올바른 값 및 출처 링크를 포함하여 이슈를 열어주세요. 우리는 매주 이슈를 검토합니다.
이메일. data@nutrola.com으로 수정 사항을 보내주세요. 동일한 정보(식품 이름, 필드, 현재 값, 제안된 값 및 출처)를 포함합니다. 우리는 5영업일 이내에 응답할 것입니다.
풀 리퀘스트. Git에 익숙하다면 리포지토리를 포크하여 CSV 또는 JSON 파일을 직접 수정하고 풀 리퀘스트를 제출할 수 있습니다. PR 설명에 출처를 포함하세요. 우리는 신뢰할 수 있는 데이터로 뒷받침된 수정 사항을 검토하고 병합합니다.
브랜드 또는 독점 제품에 대한 제출은 이 프로세스를 통해 수락되지 않습니다. 이러한 항목은 Nutrola의 주요 식품 데이터베이스 파이프라인을 통해 처리되며, 그 자체의 검증 작업 흐름이 있습니다.
Nutrola API와의 실시간 데이터 통합
다운로드 가능한 매크로 참조 테이블은 정적 스냅샷으로, 오프라인 사용, 내장 애플리케이션, 교육 자료 및 빠른 조회에 적합합니다. 그러나 대규모로 실시간 영양 데이터가 필요하다면 Nutrola의 Nutrition Data API가 이 테이블의 모든 내용을 포함하고 훨씬 더 많은 정보를 제공합니다.
API는 300만 개 이상의 식품 항목을 다루며(참조 테이블의 500개 이상에 비해), 70개 이상의 영양소를 포함한 전체 미량 영양소 프로필, 바코드 스캔, 텍스트 검색 및 자동 완성 기능을 지원하며, 47개국의 브랜드 제품에 대한 데이터를 제공합니다. 이는 매일 200만 명 이상의 사용자가 사용하는 Nutrola 앱을 구동하는 데이터와 동일합니다.
개발자를 위해: API는 RESTful이며, JSON을 반환하고, 하루 500회의 무료 요청이 가능한 무료 티어를 제공합니다 — 프로토타입 및 개인 프로젝트에 충분합니다. 유료 티어는 수백만 회의 요청으로 확장됩니다. 전체 문서는 api.nutrola.com/docs에서 확인할 수 있습니다.
연구자 및 기관을 위해: 우리는 높은 요청 한도와 대량 내보내기 기능을 갖춘 학술 라이센스를 제공합니다. 자세한 내용은 research@nutrola.com으로 문의하세요.
매크로 참조 테이블과 API는 서로 보완적입니다. 테이블은 오프라인 작업, 내장 데이터 세트 및 독립형 파일이 필요한 상황에서 사용하세요. API는 폭넓은 데이터, 깊이, 실시간 업데이트 및 검색 기능이 필요할 때 사용하세요.
자주 묻는 질문
매크로 참조 테이블은 얼마나 자주 업데이트되나요?
우리는 분기마다 테이블을 업데이트합니다. 각 릴리스는 새로운 버전 번호를 받습니다(현재 버전은 1.4.0입니다). 업데이트에는 사용자가 제출한 수정 사항, 일반적으로 요청된 식품의 추가 및 출처 데이터베이스에서 수정된 값이 게시될 때 조정이 포함됩니다. JSON 파일에는 메타데이터에 버전 및 생성 날짜가 포함되어 있으므로 프로그램적으로 최신 버전을 확인할 수 있습니다.
이 데이터를 상업용 애플리케이션에서 사용할 수 있나요?
네. 매크로 참조 테이블은 Creative Commons Attribution 4.0 (CC BY 4.0) 라이센스 하에 배포됩니다. 개인 및 상업 프로젝트에서 데이터를 사용, 수정 및 재배포할 수 있으며, 단지 출처를 명시하면 됩니다. nutrola.com에 대한 링크나 "Nutrola Macro Reference Tables"를 데이터 크레딧에 언급하는 것으로 충분합니다. 허가를 요청하거나 수수료를 지불할 필요는 없습니다.
왜 500개 이상의 식품만 제공하고 Nutrola 데이터베이스의 전체를 제공하지 않나요?
참조 테이블은 가장 일반적으로 소비되는 식품의 실용적이고 고품질의 하위 집합으로 설계되었습니다. 7개 카테고리에서 500개 이상의 항목을 다루는 것은 대부분의 국가에서 사람들이 매일 섭취하는 음식의 약 90%를 다룹니다. 300만 개 항목으로 확장하면 많은 사용 사례에서 파일이 다루기 어려워질 수 있습니다(전체 데이터베이스는 2GB를 초과합니다). 전체 데이터 세트가 필요하다면 Nutrola API를 통해 모든 항목에 접근할 수 있습니다.
값은 서빙 기준인가요, 아니면 100그램 기준인가요?
서빙 기준입니다. 모든 항목에는 서빙 설명(예: "중간 사과 1개 (182g)")과 해당 그램 무게가 포함되어 있으므로, 각 영양소 값을 서빙 무게로 나누고 100을 곱하여 쉽게 100그램 기준 값으로 변환할 수 있습니다. 우리는 서빙 기준 값을 선택한 이유는 식사 추적, 식단 계획 및 고객 대면 애플리케이션에 더 즉각적으로 유용하기 때문입니다.
데이터를 100그램 기준 값으로 변환하려면 어떻게 해야 하나요?
각 영양소 값을 100으로 곱하고 serving_weight_g 필드로 나누면 됩니다. 예를 들어, 170g의 닭가슴살 서빙이 53.4g의 단백질을 포함하고 있다면, 100g당 단백질 값은 (53.4 * 100) / 170 = 31.4g입니다. 다음은 간단한 Python 함수입니다:
def per_100g(food, nutrient_field):
"""서빙 기준 영양소 값을 100g 기준으로 변환합니다."""
serving_weight = food['serving_weight_g']
if serving_weight == 0:
return 0
return round(food[nutrient_field] * 100 / serving_weight, 1)
필요한 식품이 테이블에 없으면 어떻게 해야 하나요?
먼저, 다른 이름으로 비슷한 식품이 존재하는지 확인하세요 — 텍스트 편집기의 검색 기능이나 간단한 스크립트를 사용하여 food_name 필드를 검색할 수 있습니다. 만약 식품이 정말로 포함되어 있지 않다면, 두 가지 옵션이 있습니다: GitHub 리포지토리를 통해 요청을 제출하세요(우리는 수요에 따라 추가 요청을 우선시합니다), 또는 Nutrola API를 사용하여 300만 개 이상의 식품에 접근할 수 있습니다. 일회성 조회를 위해 Nutrola 앱 자체에서 전체 데이터베이스를 무료로 검색할 수 있습니다.