์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Matplotlib ๊ธฐ์ด
- ํ์ด์ฌ๊ณต๋ถ
- ์๋ฐ๊ณต๋ถ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ๋ค์ค๊ณต๋ถ
- Streamlit๊ธฐ์ด
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- ํ์ด์ฌ
- streamlit
- ์น๋์๋ณด๋ ๊ธฐ์ด
- JavaScript
- Streamlit๊ธฐ๋ณธ
- ์๋ฐ
- ์๋ฐ๊ธฐ์ด
- RESTful API
- java
- ์๋ฐ์ด๋ณด
- ์๋๋ก์ด๋ ์คํ๋์ค
- MySQL
- Android
- ์๋ฐ์คํฌ๋ฆฝํธ
- serverless
- ํ๋ค์ค
- ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ
- Pandas
- ์คํธ๋ฆผ๋ฆฟ
- ์น๋์๋ณด๋ ์ ์
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- db
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- Today
- Total
ruriruriya
[Python] ํ์ด์ฌ ํ๋ค์ค(Pandas) - 2์ฐจ ๋ฐ์ดํฐ ์์ฑ, ๋ฐ์ดํฐํ๋ ์(DataFrame)๊ณผ ๋ฐ์ดํฐ ์ก์์ค ๋ณธ๋ฌธ
[Python] ํ์ด์ฌ ํ๋ค์ค(Pandas) - 2์ฐจ ๋ฐ์ดํฐ ์์ฑ, ๋ฐ์ดํฐํ๋ ์(DataFrame)๊ณผ ๋ฐ์ดํฐ ์ก์์ค
๋ฃจ๋ฆฌ์ผใ 2023. 11. 14. 21:43
ํ๋ค์ค ๋ฐ์ดํฐํ๋ ์(Pandas DataFrame)์ด๋?
๋ฐ์ดํฐํ๋ ์(DataFrame)์ ํ๋ค์ค์ ํต์ฌ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก,
ํ
์ด๋ธ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๋ฐ์ดํฐํ๋ ์์ ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ 2์ฐจ์ ํ
์ด๋ธ๋ก,
๊ฐ ์ด์ ๋ค๋ฅธ ๋ฐ์ดํฐ ํ์
์ ๊ฐ์ง ์ ์๋ค.
์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์กฐ์ํ๊ณ ๋ถ์ํ ์ ์๋ค.
๋ฐ์ดํฐํ๋ ์์ CSV, Excel, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ ๋ค์ํ ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ ์ ์๋ค.
ํ๋ค์ค์ ๋ค์ํ ํจ์์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ
๋ฐ์ดํฐํ๋ ์์ ์กฐ์ํ๊ณ ํํฐ๋งํ๋ฉฐ, ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ์ํํ ์ ์๋ค.
ํ๋ค์ค ๋ฐ์ดํฐํ๋ ์ ์์ฑํ๊ธฐ
๋จผ์ ํ์ด์ฌ์ dict๋ฅผ ํ๋ค์ค 1์ฐจ์ ๋ฐ์ดํฐ Series ์ฌ์ฉํด 2์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ฌ ๋ณ์์ ํ ๋นํ๋ค.
import pandas as pd
items = {'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']),
'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}
df ๋ณ์์ ๋ฐ์ดํฐํ๋ ์ ์์ฑ์ data ๊ฐ์ items ๋ณ์๋ฅผ ํ ๋นํ์ฌ ์ถ๋ ฅํ๋ฉด
์์
๊ณผ ๋น์ทํ ํ๊ฐ ๋ณด๊ธฐ ์ข์ ํ๋ ์ ํํ๋ก ์ถ๋ ฅ๋๋ค.
๋ฐ์ดํฐํ๋ ์๋ ๋ชจ์๊ณผ, ์ฐจ์, ์ฌ์ด์ฆ ๋ฑ ์ด๋ป๊ฒ ๋์ค๋ ์ง ์ดํด๋ณด์
>> df.shape
(5, 2) #5ํ 2์ด
>> df.ndim
2 # 2์ฐจ์ ๋ฐ์ดํฐ
>> df.size
10 # ์ ์ฒด ์์(์
๊ฐ์ ๋ฐํ)
>> df.index
Index(['bike', 'book', 'glasses', 'pants', 'watch'], dtype='object')
>> df.columns
Index(['Bob', 'Alice'], dtype='object')
>> df.values #nan : ์๋ฌด ๋ฐ์ดํฐ๋ ์์
array([[245., 500.],
[ nan, 40.],
[ nan, 110.],
[ 25., 45.],
[ 55., nan]])
ํ๋ค์ค ๋ฐ์ดํฐํ๋ ์์ ์์์ ์ก์ธ์คํ๊ธฐ
ํ๋ค์ค์์๋ 2์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐํ๋ ์์์ ์ก์ธ์คํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
์ด ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์ ๋ฅผ ํตํด ์์๋ณด์.
1. ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ : ๋ณ์๋ช
์ค๋ฅธ์ชฝ์์ ๋๊ดํธ๋ฅผ ์ฌ์ฉ.
2. ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ปฌ๋ผ๋ช
์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ก์ธ์ค
3. ์ปดํจํฐ๊ฐ ์ฝ๊ธฐ ์ข์ ์ธ๋ฑ์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ
์ฐ์ dict๋ฅผ ์ด์ฉํด 2์ฐจ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ๋ค.
import pandas as pd
>> items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
>> df = pd.DataFrame(data = items2, index = ['store1','store2'])
>> df
df ๋ณ์์ ํ ๋นํ์ฌ ์ถ๋ ฅํ๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค. ์๋ ๋ฐ์ดํฐํ๋ ์ 2์ฐจ ๋ฐ์ดํฐ๋ฅผ 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ก์ธ์ค ํด๋ณด์.
1. ๋ณ์ ์ค๋ฅธ์ชฝ ๋๊ดํธ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ก์ธ์ค
bike ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค.
>> df['bikes']
store1 20
store2 15
Name: bikes, dtype: int64
bike ์ด๊ณผ watches ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค.
>> df[ ['bikes', 'watches'] ]
2. ์ฌ๋์ด ๋ณด๊ธฐ ํธํ ์ธ๋ฑ์ค์ ์ปฌ๋ผ๋ช ์ผ๋ก ๋ฐ์ดํฐ ์ก์ธ์ค
# ๋ณ์๋ช
.loc[ , ]
store 1์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.loc[ 'store1', ]
bikes 20.0
pants 30.0
watches 35.0
glasses NaN
Name: store1, dtype: float64
>> df.loc[ 'store1', : ]
# ์ฝ๋ก (:) ์์ ๋น์ฐ๋ฉด ์ฒ์๋ถํฐ ๋ ์์น๊น์ง, ๋ค๋ฅผ ๋น์ฐ๋ฉด ์์์์น๋ถํฐ ๋๊น์ง, ๋๋ค ๋น์ฐ๋ฉด ์ ๋ถ
bikes 20.0
pants 30.0
watches 35.0
glasses NaN
Name: store1, dtype: float64
store 1์ pants ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.loc['store1' , 'pants']
30
>> df['pants']['store1']
30
store 1์ bikes์ watches์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.loc['Store 1',['bikes','watches']]
bikes 20.0
watches 35.0
Name: Store 1, dtype: float64
store 1dml pants์ glasses์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.loc['Store 2','pants':]
pants 5.0
watches 10.0
glasses 50.0
Name: Store 2, dtype: float64
3. ์ปดํจํฐ๊ฐ ๋ณด๊ธฐ ํธํ ์ธ๋ฑ์ค๋ก ๋ฐ์ดํฐ ์ก์ธ์ค
# ๋ณ์๋ช
.iloc[ , ]
store 1์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.iloc[0]
bikes 20.0
pants 30.0
watches 35.0
glasses NaN
Name: Store 1, dtype: float64
store 1์ bikes๋ถํฐ pants๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.iloc[0,:2]
bikes 20.0
pants 30.0
Name: Store 1, dtype: float64
store 1์ pants ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.iloc[0,1]
30
store 1์ bikes์ watches์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.iloc[0,[0,2]]
bikes 20.0
watches 35.0
Name: Store 1, dtype: float64
store 1์ pants๋ถํฐ glasses์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.iloc[0,1:]
pants 30.0
watches 35.0
glasses NaN
Name: Store 1, dtype: float64
store 1์ pants๋ถํฐ watches์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
>> df.iloc[0, 1:3] # ๋ ์์น ์ธ๋ฑ์ค๋ ํญ์ +1
pants 30.0
watches 35.0
Name: Store 1, dtype: float64
>> df.loc['Store 1','pants':'watches'] #์ด์ ์ด๋ฆ, ์ปฌ๋ผ๋ช
์ผ๋ก ๋ถ๋ฌ์ฌ ๋๋ ๋๊ฐ์ด
pants 30.0
watches 35.0
Name: Store 1, dtype: float64
๋ฐ์ดํฐ์ ๊ฐ ๋ณ๊ฒฝ, ์ถ๊ฐ, ์ญ์
์๋ ๋ฐ์ดํฐํ๋ ์์์ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ , ์๋ก ์ถ๊ฐํ๊ณ , ์ญ์ ํด๋ณด์.
๋ฐ์ดํฐ์ ๊ฐ ๋ณ๊ฒฝํ๊ธฐ
store 2์ watches์ ๊ฐ์ 20์ผ๋ก ๋ณ๊ฒฝ
>> df.iloc[1,2] = 20
>> df.iloc[1,2]
20
๋ฐ์ดํฐ์ ์๋ก์ด ์ปฌ๋ผ ๋ง๋ค๊ธฐ
shirts๋ผ๋ ์ปฌ๋ผ์ ๋ง๋ค๋, Store 1์๋ 15 Store 2์๋ 2๋ก ์ ์ฅํ๋ค.
>> df['shirts']=[15,2]
>> df['shirts']
Store 1 15
Store 2 2
Name: shirts, dtype: int64
suits๋ผ๋ ์ปฌ๋ผ์ ๋ง๋ค๋, pants์ ์์ shirts์ ์๋ฅผ ๋ํด์ ๋ง๋ค๊ธฐ
>> df['suits']=df['pants']+df['shirts']
>> df['suits']
Store 1 45
Store 2 7
Name: suits, dtype: int64
ํ์ญ์ , ์ด์ญ์ ํ๋ ๋ฐฉ๋ฒ
Store 1์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ(ํ์ญ์ )
>> df.drop('Store 1', axis= 0)
watches ์ปฌ๋ผ ์ญ์ (์ด์ญ์ )
>> df.drop('watches', axis=1)
bikes, glasses, suits ์ปฌ๋ผ์ ์ญ์ ํ์์ค.
df.drop(['bikes','glasses','suits'], axis=1)
์ธ๋ฑ์ค๋ ์ปฌ๋ผ๋ช ์ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
store 2๋ฅผ last store๋ก ์ธ๋ฑ์ค ๋ณ๊ฒฝ
>> df.rename(index={'store2':'last store'})
bikes๋ฅผ hats์ผ๋ก ์ปฌ๋ผ๋ช ๋ณ๊ฒฝ
>> df.rename(columns = {'bikes':'hats'})
์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๊ฐ๊ฒ์ด๋ฆ์ A,B๋ผ๊ณ ํ์ฌ, ์๋ก์ด ์ปฌ๋ผ name ์ปฌ๋ผ ์์ฑ
>> df['name']= ['A','B']
>> df
์๋ก ์์ฑ๋ name ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ก ๋ณ๊ฒฝ
>> df.set_index('name')
์ธ๋ฑ์ค๋ก ๋ณ๊ฒฝ๋ name์ปฌ๋ผ์ ๋ค์ ๋๋๋ฆฌ๊ธฐ
์ด๋ ๋งจ ์์ผ๋ก ์ปฌ๋ผ์ด ๋ฐฐ์น๋๋ค.
>> df.reset_index()
๊ทธ๋ผ ์ํ๋ ์ปฌ๋ผ ๋ฐฐ์น๋ฅผ ํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์์ ํ๋ฉด ๋๋ค.
>> df = df[['watches','shirts','bikes','pants','suits','suits']]
>> df