
CSV 매출 대시보드 만들기, 매주 다시 그리던 엑셀 차트를 한 화면으로 바꾸는 법
매주 같은 CSV를 열어 합계를 내고 차트를 다시 붙이는 업무는, 보고서보다 준비 과정이 더 길게 느껴질 때가 있습니다. AI에게 “CSV를 올리면 월별 매출과 차트를 보여주는 작은 앱을 만들어 달라”고 구체적으로 시키면, 비개발자도 먼저 동작하는 MVP(최소 기능 제품)를 만들 수 있습니다. 다만 파일의 열 이름과 숫자 형식이 맞아야 하므로, 업로드 뒤 검증 화면까지 함께 설계해야 합니다. 차트보다 입력 검증을 먼저 설계합니다.
▣ 30초 요약
- CSV 업로드 → 열 이름 확인 → 매출 숫자 변환 → 월별 집계 → 차트 표시 순서로 만듭니다.
- Streamlit은 파일 업로드 위젯과 간단한 막대 차트를 제공해 작은 업무 도구를 만들기 좋습니다.
- 첫 프롬프트에는 필요한 CSV 열, 오류 메시지, 예시 데이터 표시 여부를 함께 적습니다.
- 실제 매출 파일에는 고객명·전화번호 같은 개인정보를 넣지 않고 샘플 파일로 먼저 확인합니다.
이걸 만들면 무엇이 달라질까요?
엑셀에서 매번 열을 고르고 합계 행을 만들던 흐름이, 파일을 고른 뒤 결과 화면을 확인하는 흐름으로 바뀝니다. 아래 값은 예시 데이터일 뿐 실제 매출이나 절감 시간을 뜻하지 않습니다.
예시 화면 · CSV 매출 대시보드
총매출 ₩5,400,000 주문 수 120건 최고 매출월 3월
1월 · 2월 · 3월 · 4월 / 예시 월별 매출 막대그래프
전에는 CSV를 열고 열 이름을 찾은 뒤 피벗과 차트를 따로 만들었다면, 이후에는 업로드한 파일의 열과 집계 결과를 한 화면에서 확인하게 됩니다. 도구의 핵심은 화려한 화면이 아니라 입력 열을 검사하고 틀린 파일을 알려주는 것입니다. 예시 숫자는 실제 성과가 아닌 설명용 값입니다.
AI에게 처음 붙여 넣을 프롬프트
바이브코딩은 코드를 한 줄씩 외우기보다, 만들 결과와 조건을 AI에게 설명하며 작은 프로그램을 고쳐 가는 방식입니다. 생활 비유로 말하면 인테리어 업체에 “예쁜 방”이라고만 말하는 대신, 책상 크기와 수납 위치까지 전달하는 과정에 가깝습니다.
아래 프롬프트를 AI 코딩 도구에 그대로 붙여 넣고, 생성된 파일을 app.py라는 이름으로 저장해 달라고 요청하세요.
Python과 Streamlit으로 초보자용 매출 대시보드 MVP를 만들어줘.
1. CSV 파일 1개를 업로드할 수 있게 해줘.
2. CSV에는 date, product, amount 열이 필요하다고 화면에 안내해줘.
3. date는 날짜로, amount는 숫자로 변환하고 변환할 수 없는 행은 몇 개인지 알려줘.
4. 정상 행만 월별로 amount를 합산해 표와 막대 차트로 보여줘.
5. 파일이 없을 때와 필수 열이 없을 때는 다음 행동이 보이는 한국어 오류 메시지를 보여줘.
6. 처음 실행하면 예시 데이터라는 문구가 있는 샘플 화면을 보여줘.
7. 실제 고객명, 전화번호, 주소를 저장하지 않는 구조로 만들어줘.
필요한 파일과 실행 명령도 함께 제시하고, 코드 블록마다 어디에 붙여 넣는지 설명해줘.
프롬프트에는 입력 열과 실패했을 때의 다음 행동을 함께 적어야 AI가 차트만 그리는 예제에서 멈추지 않습니다. 완성 뒤에는 화면에 업로드 버튼, 총매출 요약, 월별 표, 막대 차트가 모두 보이는지 확인합니다.
앱은 CSV를 어떻게 읽고 차트로 바꿀까요?
CSV는 표 데이터를 쉼표 등으로 나눠 저장하는 파일 형식입니다. Python 공식 문서도 CSV가 스프레드시트와 데이터베이스의 일반적인 교환 형식이지만, 프로그램마다 구분자와 따옴표 처리 방식이 다를 수 있다고 설명합니다.
Streamlit의 st.file_uploader는 파일을 선택하는 입력창입니다. type="csv"로 허용 확장자를 제한할 수 있고, 선택된 파일은 파일처럼 읽을 수 있는 UploadedFile로 전달됩니다. 확장자 제한은 보안 기능 전체가 아니므로 실제 업무 파일을 다룰 때는 개인정보를 먼저 빼고 검증용 샘플부터 올립니다.
작동 흐름은 단순합니다.
st.file_uploader가 CSV를 받습니다.pandas.read_csv()가 표를 데이터프레임으로 읽습니다.date,amount열을 변환하고 잘못된 행을 표시합니다.- 날짜에서 월을 뽑아
amount를 합산합니다. st.bar_chart(data, x="month", y="amount")가 월별 막대그래프를 보여줍니다.
st.bar_chart는 데이터프레임의 x축과 y축 열을 지정하는 간단한 차트 명령입니다. 표에서 합계를 확인한 뒤 차트를 읽는 순서가 안전합니다. 복잡한 색상 규칙이나 세밀한 상호작용이 필요할 때는 더 전문적인 차트 도구를 검토하면 됩니다.

설치부터 첫 화면 확인까지
먼저 Python이 설치된 컴퓨터에서 터미널을 엽니다. 터미널은 컴퓨터에 명령을 글자로 입력하는 창이며, 공식 Streamlit 설치 문서는 pip install streamlit로 설치한 뒤 예제 앱을 실행하는 흐름을 안내합니다.
pip install streamlit pandas
설치가 끝나면 AI가 만든 app.py가 있는 폴더에서 다음 명령을 실행합니다.
streamlit run app.py
브라우저에 앱 화면이 열리고 CSV 업로드 버튼이 보이면 첫 확인 기준은 업로드 버튼이 보이는지입니다. 버튼이 보이지 않는다면 터미널에 나온 오류에서 ModuleNotFoundError가 있는지 확인하고, 그 경우 빠진 패키지 이름을 pip install 패키지이름으로 설치한 뒤 다시 실행합니다. 오류 문구의 패키지 이름부터 확인하세요.
원하는 결과가 안 나올 때 쓰는 수정 프롬프트
처음부터 완벽한 앱을 기대하기보다 화면에서 막힌 지점을 한 가지씩 AI에게 알려주는 편이 안전합니다. 다음처럼 “무엇이 안 되는지 → 어떻게 바꿀지 → 성공 기준” 순서로 적어 보세요.
CSV를 올리면 차트가 비어 있어.
현재 CSV 열은 sale_date, item_name, total_price야.
기존 date, product, amount만 강제하지 말고 화면에서 날짜 열과 금액 열을 선택하게 바꿔줘.
금액에 쉼표가 들어간 문자열도 숫자로 바꾸고, 변환 실패 행 수를 화면에 표시해줘.
수정한 파일 전체와 확인할 테스트 CSV 5행을 함께 보여줘.
화면에서 “필수 열이 없습니다”라는 메시지가 뜬다면 코드를 먼저 뜯어고치기보다 CSV의 첫 행이 실제 열 이름인지 확인합니다. 열 이름이 매번 달라진다면 위 수정처럼 선택 상자를 추가하는 방향이 맞습니다.

작은 입력에서 무엇을 확인할까요?
아래는 문서 기반 예시입니다. 실제 실행 결과나 특정 환경의 성능을 뜻하지 않습니다.
date,product,amount
2026-01-03,노트,12000
2026-01-18,펜,8000
2026-02-02,노트,15000
이 파일을 올리면 앱은 날짜에서 2026-01, 2026-02 같은 월을 만들고 금액을 합산하는 방향으로 동작해야 합니다. 표에는 월별 합계가 보이고, 차트의 가로축은 월, 세로축은 매출액이 되어야 합니다.
차트보다 먼저 표의 합계가 맞는지 확인하세요. 시각화가 보기 좋더라도 금액 열이 문자열로 남아 있거나 날짜가 잘못 해석되면 그래프는 그럴듯하게 틀릴 수 있습니다.
잘 맞는 경우와 아직 이른 경우
이 MVP는 매출 CSV를 정해진 형식으로 받는 소규모 팀, 반복 보고서의 첫 화면을 빠르게 만들고 싶은 사람에게 맞습니다. 파일 하나를 올려 요약을 확인하는 업무라면 구조가 단순해 수정하기도 쉽습니다.
반대로 여러 사용자가 동시에 접속해야 하거나, 권한별로 매출을 나눠야 하거나, 원본 파일을 장기간 저장해야 한다면 이 예제만으로 충분하지 않습니다. 로그인, 데이터베이스, 접근 권한, 감사 로그를 별도로 설계해야 하며 개인정보가 들어간 원본을 테스트 화면에 그대로 올리지 않는 것이 먼저입니다. 샘플 파일로 먼저 검증하고 원본은 나중에 판단합니다.
작업 환경을 함께 정리한다면
아래 카드는 CSV 표와 차트를 함께 확인하는 작업 장면과 직접 연결되는 후보만 배치합니다.


이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
출처
- Streamlit
st.file_uploader공식 문서 - Streamlit
st.bar_chart공식 문서 - Streamlit 설치 공식 문서
- Python
csv모듈 공식 문서 - Streamlit 공식 GitHub 릴리스 — 확인일 2026-10-14, 페이지 표시 1.65.0
핵심 정리: 다섯 가지 질문과 답
Q. 이 대시보드는 무엇을 해결하나요?
CSV를 올린 뒤 매출 요약과 월별 차트를 한 화면에서 확인하는 반복 업무를 줄이는 출발점입니다.
Q. CSV에 필요한 열은 무엇인가요?
기본 예제는 date, product, amount 열을 사용하며, 열 이름이 다르면 선택 방식으로 수정할 수 있습니다.
Q. 차트가 맞는지 어떻게 확인하나요?
차트보다 먼저 날짜 변환과 금액 합계가 표에서 맞는지 확인합니다.
Q. 실제 고객 데이터도 올려도 되나요?
처음에는 개인정보를 뺀 샘플 파일로 확인하고, 저장·접근 권한이 설계되지 않은 앱에는 원본을 올리지 않는 편이 안전합니다.
Q. 다음에는 무엇을 고치면 좋나요?
날짜·금액 열 선택, 잘못된 행 다운로드, 로그인과 권한 관리처럼 실제 업무의 조건을 하나씩 추가합니다.
글을 읽어 주셔서 감사합니다.
이 글이 도움이 되었고 새로운 정보를 계속 받아보고 싶으시다면 구독해 주세요.
'AI > AI 활용 기초' 카테고리의 다른 글
| 바이브코딩 업무 대시보드, 매번 다시 세던 완료율을 한 화면에 보이게 만들기 (0) | 2026.10.08 |
|---|---|
| 매출 CSV 이상값 찾기, 평균에서 튄 행만 먼저 확인하는 HTML 만들기 (0) | 2026.10.05 |
| 반복 업무 목록, 붙여넣기만 하면 담당자·주기·완료 기준이 보이는 HTML 체크리스트 (0) | 2026.10.02 |
| 여러 문서 의견 비교표 만들기, 붙여넣기만 하고 놓친 쟁점 찾기 (0) | 2026.09.29 |
| 인수인계서 HTML 만들기, 메모가 섞여도 다음 담당자 할 일이 보이게 (0) | 2026.09.28 |
댓글