๐ BeautifulSoup + selenium
๐ฉ ๋ชฉํ ๋ฐ์ดํฐ
- ๋ธ๋๋
- ๊ฐ๊ฒฉ
- ์ ํ ์ฃผ์ ์ฌ๋ถ
- ์์น
๐ฉ Excel data ์ ๊ทผํ๊ธฐ (glob)
- glob("../๊ฒฝ๋ก/ํ์ผ์ด๋ฆ_* ")
- ex) ์ง์ญ_* : '์ง์ญ_' ํฌํจ๋ ํ์ผ ๋ค ๊ฐ์ ธ์ค๊ธฐ
import pandas as pd
from glob import glob
# ํ์ผ ๋ชฉ๋ก ํ ๋ฒ์ ๊ฐ์ ธ์ค๊ธฐ
glob("../data/์ง์ญ_*.xls")
>>>>
['../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (1).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (10).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (11).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (12).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (13).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (14).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (15).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (16).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (17).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (18).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (19).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (2).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (20).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (21).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (22).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (23).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (24).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (3).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (4).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (5).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (6).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (7).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (8).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (9).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์).xls']
# ํ์ผ๋ช
์ ์ฅ
station_files = glob("../data/์ง์ญ_*.xls")
station_files
>>>>
['../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (1).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (10).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (11).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (12).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (13).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (14).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (15).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (16).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (17).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (18).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (19).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (2).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (20).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (21).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (22).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (23).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (24).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (3).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (4).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (5).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (6).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (7).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (8).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์) (9).xls',
'../data\\์ง์ญ_์์น๋ณ(์ฃผ์ ์).xls']
๐ฉ ๋ฐ์ดํฐ ํ์ธ
- index ๋ช ๋ น์ด๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ ํ๋ ์์ ๋ง๋ค์ด๋ณธ๋ค.
- header ๊ฐ์ ์ค์ ํ์์๋ ์ ๋ณด๋ ๋ ๋ฆฐ๋ค.
๐ฉ ๋ฐ์ดํฐ ํฉ์น๊ธฐ (concat)
- ํ์์ด ๋์ผํ๊ณ ์ฐ๋ฌ์ ๋ถ์ด๊ธฐ๋ง ํ๋ฉด ๋ ๋๋ concat์ ํ์ฉํ๋ฉด ๋๋ค.
tmp_raw=[]
for file_name in station_files: # station_files ๊ฐ
tmp = pd.read_excel(file_name, header=2) # excel ํ์ผ์ ๊ฐ๊ฐ ํ๋์ฉ ์ฝ์ด์จ๋ค
tmp_raw.append(tmp) # tmp_raw ๊ฐ์ append
>>>>
[ ์ง์ญ ์ํธ ์ฃผ์ ์ํ \
0 ์์ธํน๋ณ์ ์ฌ๊ฑด์๋์ง ์ฌ์ ์ 2์ฃผ์ ์ ๊ณ ์์
ํ์ง์ ์์ธํน๋ณ์ ๊ฐ๋๊ตฌ ์ฒํธ๋๋ก 1246 (๋์ด์ 2๋) HDํ๋์ค์ผ๋ฑ
ํฌ
1 ์์ธํน๋ณ์ ๊ตฌ์ฒ๋ฉด์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ๊ตฌ์ฒ๋ฉด๋ก 357 (์์ฌ๋) HDํ๋์ค์ผ๋ฑ
ํฌ
2 ์์ธํน๋ณ์ ๋ช
์ผ์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ๊ณ ๋๋ก 168 (๋ช
์ผ๋) SK์๋์ง
3 ์์ธํน๋ณ์ ๋ฐฉ์๋ค๋ฆฌ์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ๋๋จ๋ก 811 (๋ช
์ผ๋) SK์๋์ง
4 ์์ธํน๋ณ์ (์ฃผ)์๋ชจ ์ ์์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์์ฌ๋๋ก 1323 (์ฑ๋ด๋) GS์นผํ
์ค
5 ์์ธํน๋ณ์ (์ฃผ)ํผ์คํธ์ค์ผ ์ฝ์๋ผ์ฃผ์ ์ ์์ธํน๋ณ์ ๊ฐ๋๊ตฌ ์ฌ๋ฆผํฝ๋ก 556 (์ฑ๋ด๋) S-OIL
6 ์์ธํน๋ณ์ (์ฃผ)์ผํ์๋์ง ๊ณ ๋์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ๊ณ ๋๋ก 39 (์์ฌ๋) GS์นผํ
์ค
7 ์์ธํน๋ณ์ ์ฃผ)์ง์ ์๋์ง์ง์ ์ค๋ ์ง์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์ฑ์๋ก 102 (์ฑ๋ด๋) SK์๋์ง
8 ์์ธํน๋ณ์ ๋์ฑ์์ (์ฃผ)๊ธธ๋์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์ฒํธ๋๋ก 1168 GS์นผํ
์ค
9 ์์ธํน๋ณ์ (์ฃผ)์๋ชจ ์ฑ๋ด์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์ฌ๋ฆผํฝ๋ก 578 (์ฑ๋ด๋) GS์นผํ
์ค
10 ์์ธํน๋ณ์ skํด๋จ๋์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์์ผ๋ก 132 (๊ฐ์ผ๋) SK์๋์ง
11 ์์ธํน๋ณ์ ์ง์์ค์นผํ
์คใ ๋์์ธ์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์ฒํธ๋๋ก 1456 (์์ผ๋) GS์นผํ
์ค
12 ์์ธํน๋ณ์ ์ฒํธํ๋์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์ฒ์ค๋ก 67 (์ฒํธ๋) HDํ๋์ค์ผ๋ฑ
ํฌ
13 ์์ธํน๋ณ์ ๊ด์ฑ์ฃผ์ ์ ์์ธ ๊ฐ๋๊ตฌ ์ฌ๋ฆผํฝ๋ก 673 (์ฒํธ๋) S-OIL
์ ํ๋ฒํธ ์
ํ์ฌ๋ถ ๊ณ ๊ธํ๋ฐ์ ํ๋ฐ์ ๊ฒฝ์ ์ค๋ด๋ฑ์
0 02-487-2030 Y - 1719 1609 -
1 02-441-0536 N - 1734 1615 -
2 02-3428-1739 Y 1875 1748 1625 -
3 02-442-5145 Y - 1765 1645 1439
4 02-6956-6674 Y 1946 1766 1648 1590
5 02-484-1162 Y - 1770 1640 -
6 02-441-3327 Y 1985 1785 1665 1635
7 02-484-6165 N - 1785 1685 1580
8 02-474-7222 N 1995 1786 1668 1600
9 02-479-3838 Y - 1788 1688 -
10 02-442-7801 Y 1949 1795 1689 1600
11 02-426-5372 Y 1981 1801 1684 -
12 02-484-9323 N - 1881 1797 -
13 02-470-5133 N - 1968 1868 - , .......
stations_raw = pd.concat(tmp_raw)
stations_raw
๐ฉ ์ธ๋ฑ์ค ํ์ธ ๋ฐ rows, columns ํ์ธ
- ๋ฐ์ดํฐ ํ๋ ์ ํํ๋ก ํ์ธ
- info() ํจ์๋ฅผ ์ด์ฉํด ํ์ธ
๐ฉ DataFrame ์ฌ์ ๋น
- pd.DataFrame({'column_name' : data})
๐ฉ ๊ตฌ column ์ถ๊ฐํ๊ธฐ
- ์ฃผ์ ์ปฌ๋ผ์ ์๋ ์ฃผ์๋ฅผ ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋๋๊ณ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ฌ ๊ตฌ ๊ฐ์ ๊ตฌํ๋ค.
for Address in stations["์ฃผ์"]:
print(Address.split()[1])
>>>>
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๊ฐ๋๊ตฌ
๋๋๋ฌธ๊ตฌ
๋๋๋ฌธ๊ตฌ
๋๋๋ฌธ๊ตฌ
....
๊ฐ๋จ๊ตฌ
๊ฐ๋จ๊ตฌ
๊ฐ๋จ๊ตฌ
๐ฉ ๋ฐ์ดํฐ ์ค ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์
๐ฉ ์ธ๋ฑ์ค ์ฌ์ ๋ ฌ
- reset_index ํ์ฉ
๐ฉ ์ฃผ์ ๊ฐ๊ฒฉ ์ ๋ณด ์๊ฐํ
- matplotlib.pyplot, seaborn, platform ์ฌ์ฉ
- boxplot ์ผ๋ก ์๊ฐํ ์งํ
๐ 1. boxplot์ผ๋ก ๊ฐ๋จํ ์๊ฐํ
๐ 2. seaborn, matplotlib ์ผ๋ก ์๊ฐํ
๐ 3. seaborn, matplotlib ์ผ๋ก ์๊ฐํ 2
- hue option์ผ๋ก ์ข ๋ ๊ตฌ๋ถ์ด ์ฝ๊ฒ ์๊ฐํ
๐ฉ ์ฃผ์ ์ง๋ ์ ๋ณด ์๊ฐํ
- ์์, ํ์ 10๊ฐ ์ฉ ascending ํด๋ณด๊ธฐ
- ์ ์ผ ๋น์ผ ๊ณณ๊ณผ ์ ์ผ ์ผ๊ณณ์ ์ ์ ์๋ค
๐ฉ pivot_table๋ก ํ๊ท ๊ฐ๊ฒฉ ํ์ธ
'Study_note(zb_data) > EDA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํฐ๋ ๋ ธํธ (์ธ๊ตฌ ๋ฐ์ดํฐ ๋ถ์ํ๊ธฐ 1) (0) | 2023.08.17 |
---|---|
์คํฐ๋ ๋ ธํธ (prephet ํ์ฉํด์ ์์ธกํ๊ธฐ) (0) | 2023.08.16 |
์คํฐ๋ ๋ ธํธ (BeautifulSoup + selenium) (1) | 2023.08.14 |
์คํฐ๋ ๋ ธํธ (Slenium ํ์ ํ๊ธฐ) (0) | 2023.08.14 |
์คํฐ๋ ๋ ธํธ (BeautifulSoup Web data 2-3) (0) | 2023.08.12 |