{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 엑셀 데이터 병합하기" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- 그런데 여기서 한 가지 큰 문제가 발생합니다.\n", "\n", "\n", "- 모든 OS가 같은 문제가 발생하는데, 일단 chrome에서 자동 다운로드를 진행하면 크롬 기본 지정경로인 \"다운로드\" 폴더에 엑셀파일이 저장됩니다.\n", "\n", "\n", "- 모두 다 같은 이름으로 저장이 되다보니, 번호만 쭉 붙어서 저장이 되는데 이러면 어느 지역파일인지 이름으로 알 수가 없습니다.\n", "\n", "\n", "- 그래서 pandas를 이용하여 특정 \"시/도\"의 크롤링이 끝날때마다 다운로드 폴더에 있는 다운로드된 엑셀파일(.xls)를 불러와서, 이름을 변경합니다.\n", "\n", "\n", "- 이름이 변경되면 일단 다른 \"시/도\"에서 다시 크롤링이 시작되었을 때 기존의 엑셀파일들과 이름이 중복되지 않기 때문에 \"시/도\"별 구분이 가능합니다.\n", "\n", "\n", "- 그 때마다 변경된 이름을 가진 엑셀파일들을 모아서 하나로 저장하면, \"시/도\" 별로 그때그때 취합한 데이터를 저장할 수 있습니다.\n", "\n", "\n", "- 엑셀을 불러오는 파트는 Pandas로 구현하였고, pandas를 통해서 데이터를 합쳐봅니다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 서울시 데이터를 기준으로 테스트 해보기" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- OS마다 다른 이름으로 엑셀 파일들이 지역구의 개수만큼 저장되어 있습니다. (다운로드 폴더에)\n", "\n", "\n", "- 다운로드 폴더에서 모든 .xls 파일을 가져옵니다. (주의 : 혹시 다운로드 폴더에 이전에 받았던 다른 xls 파일이 없는지 먼저 확인해봅니다.)\n", "\n", "\n", "- 다운로드 받는(받을) 모든 엑셀파일은 이름이 같습니다. 그렇기 때문에 시/도 마다 정리하기 위해서는 시/도 마다 엑셀파일들을 정리해서 규합해야합니다.\n", "\n", "\n", "- 파일이름은 혼동을 피하기 위해서 해당 시/도 이름을 파일에 넣습니다. (여기서는 \"변환대상(시/도).xls\"로 하겠습니다.)\n", "\n", "\n", "- glob 라이브러리를 통해서 파일이름들을 불러오고, os.rename 함수를 통해 파일이름을 변경합니다.\n", "\n", "\n", "- pandas의 read_excel 함수를 통해 모든 엑셀파일들을 불러와서 하나로 합칩니다." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", "Requirement already satisfied: openpyxl in c:\\programdata\\anaconda3\\lib\\site-packages (3.0.9)\n", "Requirement already satisfied: et-xmlfile in c:\\programdata\\anaconda3\\lib\\site-packages (from openpyxl) (1.1.0)\n" ] } ], "source": [ "!pip install openpyxl" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", " | 지역_위치별(주유소) | \n", "Unnamed: 1 | \n", "Unnamed: 2 | \n", "Unnamed: 3 | \n", "Unnamed: 4 | \n", "Unnamed: 5 | \n", "Unnamed: 6 | \n", "Unnamed: 7 | \n", "Unnamed: 8 | \n", "Unnamed: 9 | \n", "
---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "(단위 : 원/리터) | \n", "
1 | \n", "지역 | \n", "상호 | \n", "주소 | \n", "상표 | \n", "전화번호 | \n", "셀프여부 | \n", "고급휘발유 | \n", "휘발유 | \n", "경유 | \n", "실내등유 | \n", "
2 | \n", "경기도 | \n", "대보유통(주) 안성(서울)주유소/충전소 | \n", "경기 안성시 경부고속도로 372-1 | \n", "알뜰(ex) | \n", "031-664-4096 | \n", "Y | \n", "- | \n", "1499 | \n", "1614 | \n", "- | \n", "
3 | \n", "경기도 | \n", "한국도로공사 안성(부산방향)주유소/충전소 | \n", "경기 안성시 원곡면 경부고속도로 365 | \n", "알뜰(ex) | \n", "031-651-5385 | \n", "Y | \n", "- | \n", "1500 | \n", "1575 | \n", "- | \n", "
4 | \n", "경기도 | \n", "(주)서원 안성맞춤(평택)주유소/충전소 | \n", "경기 안성시 서운면 평택제천고속도로 41 | \n", "알뜰(ex) | \n", "031-672-9622 | \n", "Y | \n", "- | \n", "1511 | \n", "1577 | \n", "- | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
96 | \n", "경기도 | \n", "형제주유소 | \n", "경기 안성시 공도읍 덕봉서원로 100 | \n", "SK에너지 | \n", "031-652-5145 | \n", "N | \n", "- | \n", "1649 | \n", "1679 | \n", "1450 | \n", "
97 | \n", "경기도 | \n", "유일산업(주) 일죽주유소 | \n", "경기 안성시 일죽면 서동대로 7321-18 | \n", "GS칼텍스 | \n", "031-673-4700 | \n", "N | \n", "- | \n", "1658 | \n", "1698 | \n", "- | \n", "
98 | \n", "경기도 | \n", "미양농협주유소 | \n", "경기 안성시 미양면 미양로 62 | \n", "NH-OIL | \n", "031-674-8774 | \n", "N | \n", "- | \n", "1679 | \n", "1799 | \n", "1500 | \n", "
99 | \n", "경기도 | \n", "대림주유소 | \n", "경기 안성시 공도읍 서동대로 4519 | \n", "SK에너지 | \n", "031-618-2155 | \n", "N | \n", "- | \n", "1679 | \n", "1699 | \n", "1500 | \n", "
100 | \n", "경기도 | \n", "봉산주유소 | \n", "경기 안성시 중앙로461번길 (봉산동) | \n", "SK에너지 | \n", "031-674-5145 | \n", "Y | \n", "- | \n", "1695 | \n", "1785 | \n", "1600 | \n", "
101 rows × 10 columns
\n", "\n", " | 지역 | \n", "상호 | \n", "주소 | \n", "상표 | \n", "전화번호 | \n", "셀프여부 | \n", "고급휘발유 | \n", "휘발유 | \n", "경유 | \n", "실내등유 | \n", "
---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "서울특별시 | \n", "재건에너지 재정제2주유소 고속셀프지점 | \n", "서울특별시 강동구 천호대로 1246 (둔촌제2동) | \n", "현대오일뱅크 | \n", "02-487-2030 | \n", "Y | \n", "- | \n", "1569 | \n", "1669 | \n", "- | \n", "
1 | \n", "서울특별시 | \n", "(주)소모에너지 신월주유소 | \n", "서울 강동구 양재대로 1323 (성내동) | \n", "GS칼텍스 | \n", "02-6956-6674 | \n", "Y | \n", "1836 | \n", "1586 | \n", "1698 | \n", "1650 | \n", "
2 | \n", "서울특별시 | \n", "구천면주유소 | \n", "서울 강동구 구천면로 357 (암사동) | \n", "현대오일뱅크 | \n", "02-441-0536 | \n", "N | \n", "- | \n", "1594 | \n", "1723 | \n", "- | \n", "
3 | \n", "서울특별시 | \n", "대성석유(주)길동주유소 | \n", "서울 강동구 천호대로 1168 | \n", "GS칼텍스 | \n", "02-474-7222 | \n", "N | \n", "1845 | \n", "1596 | \n", "1728 | \n", "1600 | \n", "
4 | \n", "서울특별시 | \n", "(주)삼표에너지 고덕주유소 | \n", "서울 강동구 고덕로 39 (암사동) | \n", "GS칼텍스 | \n", "02-441-3327 | \n", "Y | \n", "1845 | \n", "1625 | \n", "1745 | \n", "1615 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
94 | \n", "경기도 | \n", "형제주유소 | \n", "경기 안성시 공도읍 덕봉서원로 100 | \n", "SK에너지 | \n", "031-652-5145 | \n", "N | \n", "- | \n", "1649 | \n", "1679 | \n", "1450 | \n", "
95 | \n", "경기도 | \n", "유일산업(주) 일죽주유소 | \n", "경기 안성시 일죽면 서동대로 7321-18 | \n", "GS칼텍스 | \n", "031-673-4700 | \n", "N | \n", "- | \n", "1658 | \n", "1698 | \n", "- | \n", "
96 | \n", "경기도 | \n", "미양농협주유소 | \n", "경기 안성시 미양면 미양로 62 | \n", "NH-OIL | \n", "031-674-8774 | \n", "N | \n", "- | \n", "1679 | \n", "1799 | \n", "1500 | \n", "
97 | \n", "경기도 | \n", "대림주유소 | \n", "경기 안성시 공도읍 서동대로 4519 | \n", "SK에너지 | \n", "031-618-2155 | \n", "N | \n", "- | \n", "1679 | \n", "1699 | \n", "1500 | \n", "
98 | \n", "경기도 | \n", "봉산주유소 | \n", "경기 안성시 중앙로461번길 (봉산동) | \n", "SK에너지 | \n", "031-674-5145 | \n", "Y | \n", "- | \n", "1695 | \n", "1785 | \n", "1600 | \n", "
113 rows × 10 columns
\n", "\n", " | 지역 | \n", "상호 | \n", "주소 | \n", "상표 | \n", "전화번호 | \n", "셀프여부 | \n", "고급휘발유 | \n", "휘발유 | \n", "경유 | \n", "실내등유 | \n", "
---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "경기도 | \n", "(주)제스 조은주유소 | \n", "경기 안성시 대덕면 서동대로 4776 | \n", "GS칼텍스 | \n", "031-674-5149 | \n", "N | \n", "- | \n", "1560 | \n", "1665 | \n", "1700 | \n", "
1 | \n", "경기도 | \n", "옥산주유소 | \n", "경기 안성시 중앙로 162 (옥산동) | \n", "SK에너지 | \n", "031-672-6751 | \n", "N | \n", "- | \n", "1579 | \n", "1659 | \n", "1500 | \n", "
2 | \n", "경기도 | \n", "안일주유소 | \n", "경기 안성시 안성맞춤대로 1250 (당왕동) | \n", "SK에너지 | \n", "031-674-2700 | \n", "N | \n", "- | \n", "1578 | \n", "1678 | \n", "1400 | \n", "
3 | \n", "경기도 | \n", "명도주유소 | \n", "경기 안성시 양성면 양성로 373 | \n", "현대오일뱅크 | \n", "031-674-5190 | \n", "N | \n", "- | \n", "1578 | \n", "1648 | \n", "1400 | \n", "
4 | \n", "경기도 | \n", "SK진현주유소 | \n", "경기 안성시 대덕면 안성맞춤대로 1600 | \n", "SK에너지 | \n", "031-675-0049 | \n", "N | \n", "- | \n", "1578 | \n", "1678 | \n", "1350 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
108 | \n", "서울특별시 | \n", "주)지유에너지직영 오렌지주유소 | \n", "서울 강동구 성안로 102 (성내동) | \n", "SK에너지 | \n", "02-484-6165 | \n", "N | \n", "- | \n", "1695 | \n", "1835 | \n", "1693 | \n", "
109 | \n", "서울특별시 | \n", "천호현대주유소 | \n", "서울 강동구 천중로 67 (천호동) | \n", "현대오일뱅크 | \n", "02-484-9323 | \n", "N | \n", "- | \n", "1823 | \n", "1924 | \n", "- | \n", "
110 | \n", "서울특별시 | \n", "광성주유소 | \n", "서울 강동구 올림픽로 673 (천호동) | \n", "S-OIL | \n", "02-470-5133 | \n", "N | \n", "- | \n", "1978 | \n", "2028 | \n", "1900 | \n", "
111 | \n", "서울특별시 | \n", "방아다리주유소 | \n", "서울 강동구 동남로 811 (명일동) | \n", "SK에너지 | \n", "02-442-5145 | \n", "Y | \n", "- | \n", "1645 | \n", "1785 | \n", "1700 | \n", "
112 | \n", "서울특별시 | \n", "재건에너지 재정제2주유소 고속셀프지점 | \n", "서울특별시 강동구 천호대로 1246 (둔촌제2동) | \n", "현대오일뱅크 | \n", "02-487-2030 | \n", "Y | \n", "- | \n", "1569 | \n", "1669 | \n", "- | \n", "
113 rows × 10 columns
\n", "