๐ถ ํ์ต ๋ฒ์
- ๊ฐ์ข: ์ธ๊ณต์ง๋ฅ์ ์ํ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 4~5์ฃผ์ฐจ
- ํผ๋ฒํ
์ด๋ธ, ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ๊ฐ์ธ๊ณผ์
- ํ์ด์ฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ, ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (numpy, pandas)
๐ถ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณผ์
โจ ๋ฐ์ดํฐ ์ฝ์ด์ค๊ธฐ (read)
๐ฉ ๋ด์ฉ
1. ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ ํ์ผ์ ์ฝ๊ธฐ ์ํ ์ฌ๋ฌ ํจ์๋ฅผ ์ ๊ณต
2. read ํจ์๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋จ
๐ฉ ์ฌ์ฉ๋ฒ
import pandas as pd
โ๏ธ 1. read_csv(): CSV ํ์ผ์ ๋ก๋ (url ์ง์)
1) pd.read_csv('filename.csv')
2) url = "https://example.com/data.csv"
pd.read_csv(url)
โ๏ธ 2. read_excel(): Excel ํ์ผ(xls, xlsx)์ ๋ก๋
pd.read_excel('filename.xlsx')
โ๏ธ 3. read_json(): JSON ํ์์ ๋ฌธ์์ด์ด๋ ํ์ผ์ ๋ก๋ (url ์ง์)
1) pd.read_json('filename.json')
2) url = "https://example.com/data.json"
pd.read_json(url)
โ๏ธ 4. read_sql(): SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ก๋
pd.read_sql('SELECT * FROM table_name', connection)
โ๏ธ 0. ๊ธฐํ
1. read_html():
2. read_parquet():
3. read_feather():
4. read_hdf():
โจ DataFrame๊ณผ dictionary ๋ฐ์ดํฐ ๋งคํํ๊ธฐ
๐ฉ ๋ด์ฉ
- '๊ด์๋ช
' ์ปฌ๋ผ์ผ๋ก ๋งคํ
- '๊ตฌ๋ณ' ์ด๋ผ๋ ์๋ก์ด ์ปฌ๋ผ ์์ฑ
- ๋งค์นญ๋์ง ์๋ ๊ฐ์ '๊ตฌ ์์'์ผ๋ก ํ์
1. map() ํจ์ ์ฌ์ฉ
- ๋ฐ์ดํฐ ๋ณํ ๋ฐ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๊ณผ์ ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ
- Series์์๋ง ์๋ํ๋ฉฐ DataFrame์์๋ ์ฌ์ฉํ ์ ์๋ค
โDataFrame์์ map() ํจ์๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ฐ??
์์) df['์ปฌ๋ผ๋ช
'].map()
> ์ด๊ฑด DataFrame์ด ์๋ ํน์ ์ด๊ณผ Series๋ก ์ฒ๋ฆฌ๋๊ฒ
2. ๋์
๋๋ฆฌ(dictionary) ๋ฐ์ดํฐ → DataFrame ๋ณ๊ฒฝ → merge๋ก ์ฒ๋ฆฌ
๐ฉ ์ฌ์ฉ๋ฒ
import pandas as pd
# ๋ฐ์ดํฐํ๋ ์
url = "https://example.com/data.csv"
df = pd.read_csv(url)
# ๋์
๋๋ฆฌ
dict_data = { '์๋๋ฌธ์': '์๋๋ฌธ๊ตฌ', '์์์': '๊ฐ๋จ๊ตฌ'... }
โ๏ธ 1. map() ํจ์ ์ฌ์ฉ
# '๊ด์๋ช
'๋ฅผ ๊ธฐ์ค์ผ๋ก ๋งคํ, ๋งค์นญ๋์ง ์๋ ๊ฐ์ '๊ตฌ ์์'์ผ๋ก ํ ๋นํด์ '๊ตฌ๋ณ' ์ปฌ๋ผ์ ์ ์ฅ
df['๊ตฌ๋ณ'] = df['๊ด์๋ช
'].map(dict_data).fillna('๊ตฌ ์์')
โ๏ธ 2. merge() ํจ์ ์ฌ์ฉ
# ๋์
๋๋ฆฌ → ๋ฆฌ์คํธ ๋ณ๊ฒฝ
list_data = list(dict_data.items())
# ๋ฐ์ดํฐํ๋ ์ ์์ฑ
df2 = pd.DataFrame(list_data, columns=['๊ด์๋ช
', '๊ตฌ๋ณ'])
# merge๋ก ๋งคํ ์ฒ๋ฆฌ
mapping_df = pd.merge(df, df2, how='left', on='๊ด์๋ช
').fillna('๊ตฌ ์์')
โจ DataFrame๊ณผ Index ๋ณ๊ฒฝ ๋ฐ pivot_table ์์ฑ
๐ฉ ๋ด์ฉ
- index๋ฅผ '๊ด์๋ช
'์์ '๊ตฌ๋ณ'๋ก ๋ณ๊ฒฝ
- ๊ฐ์ '๊ตฌ'์ ๊ฒฝ์ฐ๋ค๋ ์ค๋ณต์ ๊ฑฐ ๋ฐ sum() ์ ์ฉ
1. pivot_table
- ๋ฐ์ดํฐ์ ํน์ ์ด์ ์๋ก์ด ํ ์ธ๋ฑ์ค, ์ด ์ธ๋ฑ์ค, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ ๊ฐ์ผ๋ก ์ฌ๊ตฌ์ฑ
- ๋ค์ฐจ์ ์์ฝ ํ
์ด๋ธ ์์ฑ
- Excel์ ํผ๋ฒ ํ
์ด๋ธ๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณต
โ๏ธ ์ฃผ์ํน์ง
1) values: ์ง๊ณํ ๋ฐ์ดํฐ ์ด์ ์ด๋ฆ ์ง์
2) index: ํผ๋ฒ ํ
์ด๋ธ ํ ์๋ก์ด ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋ ์ด ์ด๋ฆ ์ง์
3) columns: ์๋ก์ด ์ด ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋ ์ด ์ด๋ฆ ์ง์
4) aggfunc: ์ง๊ณ ํจ์๋ฅผ ์ง์ , pandas์ numpy์ ์๋ ๋๋ถ๋ถ์ ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ
sum, mean, count, min, max ๋ฑ (๊ธฐ๋ณธ๊ฐ: mean)
๐ฉ ์ฌ์ฉ๋ฒ
import pandas as pd
โ๏ธ 1. DataFrame ์ธ๋ฑ์ค ๋ณ๊ฒฝ
df.set_index("๊ตฌ๋ณ", inplace=True) # inplace=True๋ก ์๋ณธ df์ ์ ์ฉ
โ๏ธ 2. pivot_table ์์ฑ
โป columns, values๋ optional ํญ๋ชฉ: ์ง์ ์ํ ์, ๋ชจ๋ ํญ๋ชฉ ์ ํ
pivot = df.pivot_table(index='๊ตฌ๋ณ', aggfunc='sum')
โจ DataFrame ๋ฐ์ดํฐ drop / del / rename
๐ฉ ๋ด์ฉ
- '๊ตฌ ์์' ํ์ drop ์ ํ์ฉํ์ฌ ์ญ์
- ํ์์๋ column์ del ์ ์ฌ์ฉํ์ฌ ์ญ์
- ์ปฌ๋ผ๋ช
์ rename ์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ
โ๏ธ del vs drop
1) del
- Python ๊ธฐ๋ณธ ๊ตฌ๋ฌธ
- ๋ฉ๋ชจ๋ฆฌ์์ ์ง์ ์ญ์ (๋ณต์ ๋ถ๊ฐ)
- ์ฌ๋ฌ ์ปฌ๋ผ์ ํ ๋ฒ์ ์ญ์ ๋ถ๊ฐ
2) drop
- axis: ํ ๋๋ ์ด
- ์ ์ฐ์ฑ, ๋ณต์ ๊ฐ๋ฅ, ํธ๋ฆฌ์ฑ (์ค๋ฌด์์ ์ ํธ)
๐ฉ ์ฌ์ฉ๋ฒ
import pandas as pd
โ๏ธ 1. drop() ์ฌ์ฉ
# '๊ตฌ ์์'์ด ํฌํจ๋ ๋ฐ์ดํฐ ์ญ์
pivot.drop('๊ตฌ ์์', inplace=True)
โ๏ธ 2. del()
# '๊ด์๋ช
' ์ปฌ๋ผ ์ญ์
del pivot['๊ด์๋ช
']
โ๏ธ 3. rename()
# 'ํญ๋ ฅ(๋ฐ์)' → 'ํญ๋ ฅ'์ผ๋ก ๋ณ๊ฒฝ
pivot.rename(columns={'ํญ๋ ฅ(๋ฐ์)': 'ํญ๋ ฅ'}, inplace=True)
๐ถ ๋๋์
1. ๊ฐ์ธ๊ณผ์ ๋ฅผ ํ๋ฉด์, ๋น์ฐํ๊ฑฐ์ง๋ง ์ค์ต์ด ์ผ๋ง๋ ์ค์ํ์ง ๋ค์ ๊นจ๋ซ๊ฒ ๋์๋ค.
2. ๊ทธ๋ฆฌ๊ณ , ์๊ฐ๋ณด๋ค ๋ด๊ฐ ์ ํด๋ผ์ ์์์ง๋ ๊ฑฑ์ ์ด ๋์๋ค.. ใ
ใ
3. ๋นก์ธ๊ฒ ํ๊ธฐ๋ก ํ์์.. ๋ค์ ์์ง ๋ค์ก์
4. ๋ชธ ๊ด๋ฆฌ๋ ์ํ๋ฉด์ ๊ฐ๋ณด์๊ตฌ์..