Pandas DataFrame ์์ฑ ๊ธฐ์ ์ ๋ง์คํฐํ์ธ์. ์ด ๊ฐ์ด๋๋ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ ์ ๋ฌธ๊ฐ๋ฅผ ์ํด ๋์ ๋๋ฆฌ, ๋ฆฌ์คํธ, NumPy ๋ฐฐ์ด ๋ฑ์์ DataFrame์ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Pandas DataFrame ์์ฑ: ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ด๊ธฐํ ์ฌ์ธต ๋ถ์
Python์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์กฐ์์ ์ธ๊ณ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค! ๊ฑฐ์ ๋ชจ๋ ๋ฐ์ดํฐ ๋ถ์ ์์ ์ ํต์ฌ์๋ Pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฉฐ, ๊ทธ ํต์ฌ์ DataFrame์ ๋๋ค. DataFrame์ Python ํ๊ฒฝ ๋ด์ ์กด์ฌํ๋ ์คํ๋ ๋์ํธ ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ค๋งํธํ๊ณ ๊ฐ๋ ฅํ๋ฉฐ ์ ์ฐํ ๋ฒ์ ์ด๋ผ๊ณ ์๊ฐํ์ธ์. ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌ, ๋ณํ, ๋ถ์ ๋ฐ ์๊ฐํํ๋ ์ฃผ์ ๋๊ตฌ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฐ์ดํฐ ๋ง๋ฒ์ ์ํํ๊ธฐ ์ ์ ๋จผ์ DataFrame ์์ฑ ๊ธฐ์ ์ ๋ง์คํฐํด์ผ ํฉ๋๋ค. ์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ์ ์ฒด ๋ถ์์ ํ ๋๋ฅผ ๋ง๋ จํ ์ ์์ต๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ ์ด์ ์ ์ธ ๋ฐ์ดํฐ ๋ถ์๊ฐ, ๊ณผํ์ ๋ฐ ์์ง๋์ด๋ก ๊ตฌ์ฑ๋ ์ ์ธ๊ณ ๋ ์๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค. Pandas DataFrame์ ์ฒ์๋ถํฐ ์์ฑํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋์ ๋๋ฆฌ, ๋ฆฌ์คํธ, NumPy ๋ฐฐ์ด ๋๋ ๋ค๋ฅธ ํ์์ ์๋ ๊ด๊ณ์์ด ์ด ๊ธฐ์ฌ๋ DataFrame์ ์์ ๊ฐ ์๊ณ ํจ์จ์ ์ผ๋ก ์ด๊ธฐํํ ์ ์๋ ์ง์๊ณผ ์ค์ ์์ ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ธฐ์ด๋ฅผ ๋ค์ ธ๋ด ์๋ค.
Pandas DataFrame์ด๋ ๋ฌด์์ผ๊น์?
๊ตฌ์ถ์ ์์ํ๊ธฐ ์ ์ ๊ตฌ์ถํ๋ ค๋ ๋์์ ๋ช ํํ ํฉ์๋ค. Pandas DataFrame์ 2์ฐจ์ ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ ์ ์ฌ์ ์ผ๋ก ์ด๊ธฐ์ข ํ ์ด๋ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- 2์ฐจ์: ์คํ๋ ๋์ํธ์ฒ๋ผ ํ๊ณผ ์ด์ด ์์ต๋๋ค.
- ํฌ๊ธฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ: DataFrame์ด ์์ฑ๋ ํ ํ๊ณผ ์ด์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- ์ด๊ธฐ์ข : ์ด์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ ๊ฐ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ๋์ ์ด์ ์ซ์(์ ์ ๋๋ ๋ถ๋ ์์์ )๋ฅผ ํฌํจํ๊ณ , ๋ค๋ฅธ ์ด์ ํ ์คํธ(๋ฌธ์์ด)๋ฅผ ํฌํจํ๊ณ , ์ธ ๋ฒ์งธ ์ด์ ๋ ์ง ๋๋ ๋ถ์ธ ๊ฐ(True/False)์ ํฌํจํ ์ ์์ต๋๋ค.
DataFrame์๋ ์ธ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค.
- ๋ฐ์ดํฐ: ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ ๊ตฌ์กฐ ๋ด์ ๋ณด์ ๋ ์ค์ ๊ฐ์ ๋๋ค.
- ์ธ๋ฑ์ค: ํ ๋ ์ด๋ธ์ ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด Pandas๋ 0๋ถํฐ ์์ํ๋ ๊ธฐ๋ณธ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ์ ๋ ฌํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์ด: ์ด ๋ ์ด๋ธ์ ๋๋ค. ์ด๋ DataFrame ๋ด์์ ํน์ ๋ฐ์ดํฐ ๊ณ์ด์ ์ก์ธ์คํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
์ด ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ด DataFrame์ ํจ๊ณผ์ ์ผ๋ก ์์ฑํ๊ณ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
๊ธฐ๋ณธ ์ฌํญ: Pandas ๊ฐ์ ธ์ค๊ธฐ
๊ฐ์ฅ ๋จผ์ ํ ์ผ์ Pandas๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ Python ์คํฌ๋ฆฝํธ ๋๋ ๋
ธํธ๋ถ์ผ๋ก ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ์ ์ธ๊ณ ์ ๋ฌธ๊ฐ๊ฐ ๋ฐ๋ฅด๋ ๋ณดํธ์ ์ผ๋ก ์ธ์ ๋๋ ๊ท์น์ pd ๋ณ์นญ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์
๋๋ค. ์ด ๊ฐ๋จํ ๋ณ์นญ์ ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ญ๋๋ค.
import pandas as pd
import numpy as np # ์ข
์ข
Pandas์ ํจ๊ป ์ฌ์ฉ๋๋ฏ๋ก ํจ๊ป ๊ฐ์ ธ์ค๊ฒ ์ต๋๋ค.
์ด ํ ์ค๋ก Pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ธ ํด์ ํ์ต๋๋ค. ์ด์ ์ด ๊ฐ์ด๋์ ํต์ฌ์ธ DataFrame ์์ฑ์ผ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
ํต์ฌ ์์ฑ ๋ฐฉ๋ฒ: ๋จ์์์ ๋ณต์ก์ผ๋ก
pd.DataFrame() ์์ฑ์๋ ๋งค์ฐ ๋ค์ฌ๋ค๋ฅํฉ๋๋ค. ๋ค์ํ ์ ํ์ ์
๋ ฅ์ ์๋ฝํ ์ ์์ต๋๋ค. ์ด์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ๋ถํฐ ๋ ์ ๋ฌธํ๋ ๊ฒฝ์ฐ๋ก ์ด๋ํ์ฌ ๊ฐ์ฅ ํ์์ ์ธ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ฆฌ์คํธ ๋๋ ๋ฐฐ์ด์ ๋์ ๋๋ฆฌ์์ DataFrame ์์ฑ
์ด๊ฒ์ DataFrame์ ๋ง๋๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. ํค๊ฐ ์ด ์ด๋ฆ์ด ๋๊ณ ๊ฐ์ด ๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๋ฆฌ์คํธ(๋๋ NumPy ๋ฐฐ์ด ๋๋ Pandas Series)๊ฐ ๋๋ Python ๋์ ๋๋ฆฌ๋ก ์์ํฉ๋๋ค.
์๋ ๋ฐฉ์: Pandas๋ ๊ฐ ๋์ ๋๋ฆฌ ํค๋ฅผ ์ด ๋จธ๋ฆฌ๊ธ์ ๋งคํํ๊ณ ๊ฐ ๊ฐ ๋ฆฌ์คํธ๋ฅผ ํด๋น ์ด์ ํ์ ๋งคํํฉ๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์๊ตฌ ์ฌํญ์ ๋ชจ๋ ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ ๊ฐ์์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ์ ์ ์ฒด ์ด์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์:
์ ์ธ๊ณ ์ฌ๋ฌ ๋์์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ DataFrame์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
# ์ด๋ณ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ
city_data = {
'City': ['Tokyo', 'Delhi', 'Shanghai', 'Sรฃo Paulo', 'Mumbai'],
'Country': ['Japan', 'India', 'China', 'Brazil', 'India'],
'Population_Millions': [37.3, 32.0, 28.5, 22.4, 20.9],
'Is_Coastal': [True, False, True, False, True]
}
# DataFrame ์์ฑ
df_from_dict = pd.DataFrame(city_data)
print(df_from_dict)
์ถ๋ ฅ:
City Country Population_Millions Is_Coastal
0 Tokyo Japan 37.3 True
1 Delhi India 32.0 False
2 Shanghai China 28.5 True
3 Sรฃo Paulo Brazil 22.4 False
4 Mumbai India 20.9 True
์ฃผ์ ๋ด์ฉ: ์ด ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๊ธฐ๋ฅ ๋๋ ๋ฒ์ฃผ๋ณ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค. ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฌ์ฐ๋ฉฐ ๋์ ๋๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ํ ์ด๋ธ ํ์์ผ๋ก ์ง์ ๋ณํํฉ๋๋ค.
2. ๋์ ๋๋ฆฌ ๋ฆฌ์คํธ์์ DataFrame ์์ฑ
๋์์ ์ด๊ณ ๋๊ฐ์ด ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๊ฐ ์์๊ฐ ๋์ ๋๋ฆฌ์ธ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ตฌ์กฐ์์ ๊ฐ ๋์ ๋๋ฆฌ๋ ๋จ์ผ ํ์ ๋ํ๋ด๊ณ ํด๋น ํค๋ ํด๋น ํ ๋ฐ์ดํฐ์ ์ด ์ด๋ฆ์ ๋ํ๋ ๋๋ค.
์๋ ๋ฐฉ์: Pandas๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ๊ฐ ๋์
๋๋ฆฌ์ ๋ํด ์ ํ์ ๋ง๋ญ๋๋ค. ๋์
๋๋ฆฌ ํค๋ ์ด์ ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋์
๋๋ฆฌ์ ํค๊ฐ ์๋ ๊ฒฝ์ฐ Pandas๊ฐ ํด๋น ํ์ ์
์ ์๋์ผ๋ก NaN(์ซ์๊ฐ ์๋)์ผ๋ก ์ฑ์ฐ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ ์ฐํฉ๋๋ค. ์ด๋ Pandas์์ ๋๋ฝ๋ ๋ฐ์ดํฐ์ ๋ํ ํ์ค ๋ง์ปค์
๋๋ค.
์:
๋์ผํ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋, ์ด๋ฒ์๋ ๋ ์ฝ๋ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
# ํ(๋ ์ฝ๋)๋ณ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ
records_data = [
{'City': 'Tokyo', 'Country': 'Japan', 'Population_Millions': 37.3, 'Is_Coastal': True},
{'City': 'Delhi', 'Country': 'India', 'Population_Millions': 32.0, 'Is_Coastal': False},
{'City': 'Shanghai', 'Country': 'China', 'Population_Millions': 28.5},
{'City': 'Sรฃo Paulo', 'Country': 'Brazil', 'Population_Millions': 22.4, 'Is_Coastal': False},
{'City': 'Cairo', 'Country': 'Egypt', 'Timezone': 'EET'} # ๋ค๋ฅธ ๊ตฌ์กฐ์ ์ฃผ๋ชฉํ์ธ์.
]
# DataFrame ์์ฑ
df_from_list_of_dicts = pd.DataFrame(records_data)
print(df_from_list_of_dicts)
์ถ๋ ฅ:
City Country Population_Millions Is_Coastal Timezone
0 Tokyo Japan 37.3 True NaN
1 Delhi India 32.0 False NaN
2 Shanghai China 28.5 NaN NaN
3 Sรฃo Paulo Brazil 22.4 False NaN
4 Cairo Egypt NaN NaN EET
Pandas๊ฐ ๋ถ์ผ์น๋ฅผ ์ผ๋ง๋ ์ฐ์ํ๊ฒ ์ฒ๋ฆฌํ๋์ง ์ฃผ๋ชฉํ์ธ์. ์ํ์ด์ ๋ํ 'Is_Coastal' ๊ฐ์ ๋์
๋๋ฆฌ์ ์๊ธฐ ๋๋ฌธ์ NaN์
๋๋ค. ์นด์ด๋ก์ ๋ํด ์๋ก์ด 'Timezone' ์ด์ด ์์ฑ๋์์ผ๋ฉฐ, ๋ค๋ฅธ ๋ชจ๋ ๋์์๋ NaN์ด ์์ต๋๋ค. ๋ฐ๋ผ์ API์ JSON ์๋ต๊ณผ ๊ฐ์ ๋ฐ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ก ์์
ํ๋ ๋ฐ ํ์ํ ์ ํ์
๋๋ค.
์ฃผ์ ๋ด์ฉ: ๋ฐ์ดํฐ๊ฐ ์ผ๋ จ์ ๋ ์ฝ๋ ๋๋ ๊ด์ฐฐ๋ก ์ ๊ณต๋ ๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์. ๋๋ฝ๋ ๋ฐ์ดํฐ ๋ฐ ๋ ์ฝ๋ ๊ตฌ์กฐ์ ๋ณํ์ ์ฒ๋ฆฌํ๋ ๋ฐ ๊ฐ๋ ฅํฉ๋๋ค.
3. NumPy ๋ฐฐ์ด์์ DataFrame ์์ฑ
๊ณผํ ์ปดํจํ , ๊ธฐ๊ณ ํ์ต ๋๋ ๋๊ท๋ชจ ์ซ์ ์ฐ์ฐ๊ณผ ๊ด๋ จ๋ ๋ถ์ผ์์ ์์ ํ๋ ์ฌ๋๋ค์๊ฒ ๋ฐ์ดํฐ๋ ์ข ์ข NumPy ๋ฐฐ์ด์์ ๋ฐ์ํฉ๋๋ค. Pandas๋ NumPy๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ๋ ์ฌ์ด์ ํตํฉ์ด ์ํํ๊ณ ๋งค์ฐ ํจ์จ์ ์ ๋๋ค.
์๋ ๋ฐฉ์: 2D NumPy ๋ฐฐ์ด์ pd.DataFrame() ์์ฑ์์ ์ ๋ฌํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Pandas๋ ์ ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค์ ์ด์ ๋ง๋ญ๋๋ค. ๊ทธ๋ฌ๋ index ๋ฐ columns ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฏธ ์๋ ๋ ์ด๋ธ์ ์ ๊ณตํ ์ ์์ผ๋ฉฐ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์:
์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ผ์ ํ๋ ๊ฐ์ ๋ํ๋ด๋ ์์๋ก ์์ฑ๋ 5x4 NumPy ๋ฐฐ์ด์์ DataFrame์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
# ์์ ๋ฐ์ดํฐ๋ก 5x4 NumPy ๋ฐฐ์ด ์์ฑ
data_np = np.random.rand(5, 4)
# ์ด ๋ฐ ์ธ๋ฑ์ค ๋ ์ด๋ธ ์ ์
columns = ['Sensor_A', 'Sensor_B', 'Sensor_C', 'Sensor_D']
index = pd.to_datetime(['2023-10-27 10:00', '2023-10-27 10:01', '2023-10-27 10:02', '2023-10-27 10:03', '2023-10-27 10:04'])
# DataFrame ์์ฑ
df_from_numpy = pd.DataFrame(data=data_np, index=index, columns=columns)
print(df_from_numpy)
์ถ๋ ฅ(์์ ์ซ์๋ ๋ค๋ฅผ ์ ์์):
Sensor_A Sensor_B Sensor_C Sensor_D
2023-10-27 10:00:00 0.123456 0.987654 0.555555 0.111111
2023-10-27 10:01:00 0.234567 0.876543 0.666666 0.222222
2023-10-27 10:02:00 0.345678 0.765432 0.777777 0.333333
2023-10-27 10:03:00 0.456789 0.654321 0.888888 0.444444
2023-10-27 10:04:00 0.567890 0.543210 0.999999 0.555555
์ด ์์์๋ Pandas์์ ๊ด๋ฒ์ํ ์๊ฐ ๊ธฐ๋ฐ ๋ถ์ ๊ธฐ๋ฅ์ ์ ๊ธ ํด์ ํ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ธ ์๊ณ์ด ๋ฐ์ดํฐ์ ๋ํ DatetimeIndex ์ฌ์ฉ๋ ์๊ฐํ์ต๋๋ค.
์ฃผ์ ๋ด์ฉ: ์ด๋ ๋์ข ์ซ์ ๋ฐ์ดํฐ์์ DataFrame์ ๋ง๋๋ ๊ฐ์ฅ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. NumPy, Scikit-learn ๋๋ TensorFlow์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธํฐํ์ด์คํ ๋ ํ์ค ์ ํ์ ๋๋ค.
4. ๋ฆฌ์คํธ ๋ฆฌ์คํธ์์ DataFrame ์์ฑ
์ด ๋ฐฉ๋ฒ์ ๊ฐ๋ ์ ์ผ๋ก NumPy ๋ฐฐ์ด์์ ์์ฑํ๋ ๊ฒ๊ณผ ์ ์ฌํ์ง๋ง ํ์ค Python ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ค์ฒฉ๋ ๋ฆฌ์คํธ ํ์์ผ๋ก ์ ์ฅ๋ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ค.
์๋ ๋ฐฉ์: ๊ฐ ๋ด๋ถ ๋ฆฌ์คํธ๊ฐ ๋ฐ์ดํฐ ํ์ ๋ํ๋ด๋ ๋ฆฌ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. NumPy ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ช
ํ์ฑ์ ์ํด columns ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์ด ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์:
# ํ ๋ฆฌ์คํธ๋ก ๋ฐ์ดํฐ
product_data = [
['P001', 'Laptop', 1200.00, 'Electronics'],
['P002', 'Mouse', 25.50, 'Electronics'],
['P003', 'Desk Chair', 150.75, 'Furniture'],
['P004', 'Keyboard', 75.00, 'Electronics']
]
# ์ด ์ด๋ฆ ์ ์
column_names = ['ProductID', 'ProductName', 'Price_USD', 'Category']
# DataFrame ์์ฑ
df_from_list_of_lists = pd.DataFrame(product_data, columns=column_names)
print(df_from_list_of_lists)
์ถ๋ ฅ:
ProductID ProductName Price_USD Category 0 P001 Laptop 1200.00 Electronics 1 P002 Mouse 25.50 Electronics 2 P003 Desk Chair 150.75 Furniture 3 P004 Keyboard 75.00 Electronics
์ฃผ์ ๋ด์ฉ: ๋ฐ์ดํฐ๊ฐ ํค๋๊ฐ ์๋ ํ์ผ ํ์์์ ์ฝ์ ๋์ ๊ฐ์ด ์ด๋ฏธ ํ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ณ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ณ ๊ธ ์ด๊ธฐํ: DataFrame ์ฌ์ฉ์ ์ง์
์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒ ์ธ์๋ pd.DataFrame() ์์ฑ์๋ ์์ฑ ์ ์ DataFrame์ ๊ตฌ์กฐ์ ์์ฑ์ ์ ์ดํ๋ ์ฌ๋ฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ธ๋ฑ์ค ์ง์
์ด๋ฏธ index ๋งค๊ฐ๋ณ์๊ฐ ์๋ํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ์ธ๋ฑ์ค๋ ๋น ๋ฅธ ์กฐํ, ๋ฐ์ดํฐ ์ ๋ ฌ ๋ฑ์ ์ฌ์ฉ๋๋ ํ ๋ ์ด๋ธ์ ์ ๊ณตํ๋ DataFrame์ ์ค์ํ ๋ถ๋ถ์
๋๋ค. Pandas๋ ๊ธฐ๋ณธ ์ซ์ ์ธ๋ฑ์ค(0, 1, 2, ...)๋ฅผ ์ ๊ณตํ์ง๋ง ์๋ฏธ ์๋ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ํจ์ฌ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์: ๋ฆฌ์คํธ ์์ ๋์ ๋๋ฆฌ๋ฅผ ๋ค์ ์ฌ์ฉํ๋, ์์ฑ ์ 'City' ์ด์ ์ธ๋ฑ์ค๋ก ์ค์ ํด ๋ณด๊ฒ ์ต๋๋ค.
city_data = {
'Country': ['Japan', 'India', 'China', 'Brazil', 'India'],
'Population_Millions': [37.3, 32.0, 28.5, 22.4, 20.9],
'Is_Coastal': [True, False, True, False, True]
}
city_names = ['Tokyo', 'Delhi', 'Shanghai', 'Sรฃo Paulo', 'Mumbai']
# ์ฌ์ฉ์ ์ง์ ์ธ๋ฑ์ค๋ก DataFrame ์์ฑ
df_with_index = pd.DataFrame(city_data, index=city_names)
print(df_with_index)
์ถ๋ ฅ:
Country Population_Millions Is_Coastal
Tokyo Japan 37.3 True
Delhi India 32.0 False
Shanghai China 28.5 True
Sรฃo Paulo Brazil 22.4 False
Mumbai India 20.9 True
์ด์ df_with_index.loc['Tokyo']์ ๊ฐ์ด ์ด๋ฌํ ์๋ฏธ ์๋ ๋ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ํ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ํ ์ ์ด(dtype)
Pandas๋ ๋ฐ์ดํฐ ์ ํ(์: ์ซ์, ํ
์คํธ ๋ฐ ๋ถ์ธ ์ธ์)์ ์ถ๋ก ํ๋ ๋ฐ ๋ฅ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๋ณด์ฅํ๊ฑฐ๋ ํน์ ์์
์ ํ์ฑํํ๊ธฐ ์ํด ์ด์ ๋ํด ํน์ ๋ฐ์ดํฐ ์ ํ์ ์ ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. dtype ๋งค๊ฐ๋ณ์๋ ์ด๋ฌํ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์: ์ซ์์ฒ๋ผ ๋ณด์ด์ง๋ง ํ ์คํธ(๋ฌธ์์ด)๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ์ ํ ID๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
data = {
'ProductID': [101, 102, 103],
'Stock': [50, 75, 0]
}
# 'ProductID'์ ๋ํ dtype์ ์ง์ ํ๋ฉด์ DataFrame ์์ฑ
df_types = pd.DataFrame(data, dtype={'ProductID': str, 'Stock': 'int32'})
print(df_types.dtypes)
์ถ๋ ฅ:
ProductID object Stock int32 dtype: object
Pandas์์ str์ object๋ก ํ์๋ฉ๋๋ค. dtype์ ๋ช
์์ ์ผ๋ก ์ค์ ํ๋ฉด Pandas๊ฐ ProductID๋ฅผ ์ซ์๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋์ค์ ์๋ชป๋ ๊ณ์ฐ ๋๋ ์ ๋ ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ int64 ๋์ int32์ ๊ฐ์ ๋ ๊ตฌ์ฒด์ ์ธ ์ ์ ์ ํ์ ์ฌ์ฉํ๋ฉด ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ์์ ์๋นํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์๋ ์์ต๋๋ค.
์ค์ ์๋๋ฆฌ์ค ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
์ฌ๋ฐ๋ฅธ ์์ฑ ๋ฐฉ๋ฒ ์ ํ์ ๋ฐ์ดํฐ์ ์๋ ํ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ค์์ ๊ฐ๋จํ ์์ฌ ๊ฒฐ์ ๊ฐ์ด๋์ ๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ด์ ์์ต๋๊น(์: ๊ธฐ๋ฅ๋น ํ๋์ ๋ฆฌ์คํธ)? ๋ฆฌ์คํธ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์. ์์ฐ์ค๋ฌ์ด ์ ํฉ์ฑ์ ๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ผ๋ จ์ ๋ ์ฝ๋์ ๋๊น(์: JSON API์์)? ๋์ ๋๋ฆฌ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ธ์. ๋ ์ฝ๋์์ ๋๋ฝ๋๊ฑฐ๋ ์ถ๊ฐ๋ ํ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํฉ๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ซ์์ด๊ณ ๊ทธ๋ฆฌ๋์ ์์ต๋๊น(์: ๊ณผํ ๊ณ์ฐ์์)? NumPy ๋ฐฐ์ด์ ์ฌ์ฉํ์ธ์. ์ด ์ฌ์ฉ ์ฌ๋ก์ ๊ฐ์ฅ ์ ํฉํ ์ต์ ์ ๋๋ค.
- ๋ฐ์ดํฐ๊ฐ ํค๋ ์์ด ๊ฐ๋จํ ํ๋ณ ํ ์ด๋ธ ํ์์ผ๋ก ๋์ด ์์ต๋๊น? ๋ฆฌ์คํธ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ด ์ด๋ฆ์ ๋ณ๋๋ก ์ ๊ณตํ์ธ์.
ํผํด์ผ ํ ์ผ๋ฐ์ ์ธ ํจ์
- ๋ฆฌ์คํธ ๋์
๋๋ฆฌ์ ๊ธธ์ด๊ฐ ๊ฐ์ง ์์: ์ด๋ ์ผ๋ฐ์ ์ธ ์ค๋ฅ์
๋๋ค. ๋ฆฌ์คํธ ๋์
๋๋ฆฌ์์ DataFrame์ ๋ง๋ค ๋ ๋ชจ๋ ๋ฆฌ์คํธ์ ์์ ์๊ฐ ์ ํํ ๊ฐ์์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Pandas์์
ValueError๋ฅผ ๋ฐ์์ํต๋๋ค. ํญ์ ์ด ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ๊ฐ์์ง ํ์ธํ ํ ์์ฑํ์ธ์. - ์ธ๋ฑ์ค ๋ฌด์: ๊ธฐ๋ณธ 0 ๊ธฐ๋ฐ ์ธ๋ฑ์ค์ ์์กดํ๋ ๊ฒ์ ๋ง์ ๊ฒฝ์ฐ์ ์ ํฉํ์ง๋ง ๋ฐ์ดํฐ์ ์์ฐ ์๋ณ์(์: ์ ํ ID, ์ฌ์ฉ์ ID ๋๋ ํน์ ํ์์คํฌํ)๊ฐ ์๋ ๊ฒฝ์ฐ ์ฒ์๋ถํฐ ์ธ๋ฑ์ค๋ก ์ค์ ํ๋ฉด ๋์ค์ ์ฝ๋๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ ํ ์๊ธฐ: Pandas๊ฐ ์ ํ์ ์ถ๋ก ํ๋๋ก ํ๋ ๊ฒ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์ ์๋ํ์ง๋ง ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ๋๋ ํผํฉ ์ ํ์ด ์๋ ์ด์ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๊ณ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฒ์ฃผ, ๋ฌธ์์ด ๋๋ ํน์ ์ซ์ ์ ํ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ์ด์ ๋ํด
dtype์ ์ฌ์ ์ ์ค์ ํ์ธ์.
์ด๊ธฐํ ์ธ: ํ์ผ์์ DataFrame ์์ฑ
์ด ๊ฐ์ด๋์์๋ ๋ฉ๋ชจ๋ฆฌ ๋ด Python ๊ฐ์ฒด์์ DataFrame์ ๋ง๋๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ง๋ง ๋๋ถ๋ถ์ ์ค์ ์๋๋ฆฌ์ค์์ ๋ฐ์ดํฐ๊ฐ ์ธ๋ถ ํ์ผ์์ ์ ๊ณต๋๋ค๋ ์ ์ ์์์ผ ํฉ๋๋ค. Pandas๋ ๋ค์๊ณผ ๊ฐ์ ๋ชฉ์ ์ ์ํด ๋งค์ฐ ์ต์ ํ๋ ํ๋ ๊ธฐ ํจ์ ๋ชจ์์ ์ ๊ณตํฉ๋๋ค.
pd.read_csv(): ์ผํ๋ก ๊ตฌ๋ถ๋ ๊ฐ ํ์ผ์ ๋ํ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ์ ํต์ฌ์ ๋๋ค.pd.read_excel(): Microsoft Excel ์คํ๋ ๋์ํธ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.pd.read_json(): JSON ํ์ผ ๋๋ ๋ฌธ์์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.pd.read_sql(): ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ DataFrame์ ์ง์ ์ฝ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.pd.read_parquet(): ํจ์จ์ ์ธ ์ด ์ค์ฌ Parquet ํ์ผ ํ์์์ ์ฝ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ํจ์๋ Pandas ์ฌ์ ์ ๋ค์ ๋ ผ๋ฆฌ์ ๋จ๊ณ์ ๋๋ค. ์ด๋ฅผ ๋ง์คํฐํ๋ฉด ์ฌ์ค์ ๋ชจ๋ ์์ค์์ ๊ฐ๋ ฅํ DataFrame ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์์งํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก : ๋ฐ์ดํฐ ๋ง์คํฐ๋ฅผ ์ํ ํ ๋
Pandas DataFrame์ Python์์ ๋ชจ๋ ์ค์ํ ๋ฐ์ดํฐ ์์ ์ ๋ํ ์ค์ฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์ดํด๋ณธ ๋ฐ์ ๊ฐ์ด Pandas๋ ๋ค์ํ ํ์์์ ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํ ์ ์ฐํ๊ณ ์ง๊ด์ ์ธ ๋๊ตฌ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋์ ๋๋ฆฌ, ๋ฆฌ์คํธ ๋ฐ NumPy ๋ฐฐ์ด์์ DataFrame์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ดํดํจ์ผ๋ก์จ ๋ฐ์ดํฐ ๋ถ์ ํ๋ก์ ํธ๋ฅผ ์ํ ๊ฒฌ๊ณ ํ ํ ๋๋ฅผ ๊ตฌ์ถํ์ต๋๋ค.
ํต์ฌ์ ๋ฐ์ดํฐ์ ์๋ ๊ตฌ์กฐ์ ๊ฐ์ฅ ์ผ์นํ๋ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋๊ฐ ๋ ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฌ์ธ ๋ฟ๋ง ์๋๋ผ ๋ ํจ์จ์ ์ ๋๋ค. ์ฌ๊ธฐ์์ ๋ฐ์ดํฐ ์ ๋ฆฌ, ํ์, ๋ณํ ๋ฐ ์๊ฐํ๋ผ๋ ํฅ๋ฏธ๋ก์ด ์์ ์ผ๋ก ๋์ด๊ฐ ์ค๋น๊ฐ ๋์์ต๋๋ค. ์ฆ๊ฑฐ์ด ์ฝ๋ฉํ์ธ์!