2022. 1. 17
1. Series, DataFrame
-> ์ฐ๊ธฐ ์ ์ pandas๋ก ๋จผ์ ๋ถ๋ฌ์์ผ ๋จ
*pandas
: Pandas๋ python์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํ๊ณผ ์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ฉฐ ๋ณด๋ค ์์ ์ ์ผ๋ก ๋์ฉ๋์ ๋ฐ์ดํฐ๋ค์ ์ฒ๋ฆฌํ๋๋ฐ ๋งค์ฐ ํธ๋ฆฌํ ๋๊ตฌ
๋ญ, ๊ทธ๋ ๋ค๋ค์.
1-1) Series
: ํ๋์ ์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ฅผ ๋ปํจ ( ์๋ฆฌ์ฆ๋ค์ด ๋ชจ์ฌ์ ๋ฐ์ดํฐ ํ๋ ์์ด ๋๋ )
1-2) DataFrame
: 3์์๋ฅผ ๊ฐ์ง๋ค(column, row, index)
2. Indexing, Slicing
1. ๋ฐ์ดํฐ ํ๋ ์ ์ด๋ฆ๋ช .iloc[,]
: index๊ธฐ์ค์ ๋ฐ๋ฅธ๋ค ex) df.iloc[1:3] # 1๋ถํฐ 2์ธ ํ ์ถ์ถ+ ํน์ ์ด์ ์ถ์ถํ ๋์๋ ๋ง์ฐฌ๊ฐ์ง.
2. ๋ฐ์ดํฐ ํ๋ ์ ์ด๋ฆ๋ช .loc[,]
: index ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ฅธ๋ค. ex) df.loc[1:3] #1๋ถํฐ 3๊น์ง์ธ ํ ์ถ์ถ + ํน์ ์ด์ ์ถ์ถํ๋ ค๋ฉด ์ด์ ์ด๋ฆ์ ์จ์ผํ๋ค.
3. boolean indexing/ query
๋๋ค ์ฐ์ง๋ง query ๋ฌธ์ ๋ ์ ํธ.
ex)
df.query('age>20') -> df ๋ฐ์ดํฐ ํ๋ ์์์ ๋์ด๊ฐ 20์ด ๋์ ์ ๋ค๋ง ๋ณด์ฌ์ค!
3. Merge, Concat
3-1) Merge
-> ์๋ฌด๊ฒ๋ ์ค์ ์ ์ํด์ฃผ๋ฉด ๋ํดํธ๊ฐ์ผ๋ก how='inner' ๊ต์งํฉ ํํ๋ก ๋ํ๋ด์ค๋ค.
3-2) Concat
-> ๋ฐ์ดํฐ ๋จ์ ์ฐ๊ฒฐ
* axis=0์ด๋ฉด ํ์ ์๋ฏธ
* axis=1์ด๋ฉด ์ด์ ์๋ฏธ
+๊ฒฐ์ธก๊ฐ ํ์ธํ๊ธฐ
- df.isnull() : ๊ฒฐ์ธก๊ฐ์ด True๋ก ๋ฐํ
- df.notnull() : ๊ฒฐ์ธก๊ฐ์ด False๋ก ๋ฐํ ๊ฒฐ์ธก๊ฐ ์ฑ์ฐ๊ธฐ
- df.fillna(๊ฐ) ๊ฒฐ์ธก๊ฐ ์ญ์ - df.dropna()
+์ค๋ณต๋๋ ํ ํ์ธ
- df.duplicated() : ์ค๋ณต์ด๋ฉด True ๋ฐํ
+์ค๋ณต๋๋ ํ ์ ๊ฑฐ - df.drop_duplicates()
4. ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ, ๋ด๋ณด๋ด๊ธฐ
- csv ํ์ผ์ ๋ถ๋ฌ์ฌ ๋์๋ `pd.read_csv()` ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
- ํ๊ธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ๊นจ์ง ํ๋ฅ ์ด ์๋๋ฐ, ์ด๋ด ๋ `encoding = 'cp949` ์ธ์๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค.
- data = pd.read_csv('ํ์ผ๋ช ', encoding = 'cp949')
- ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ผ ๋์๋ `data.to_csv()` ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก ํ๊ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ ์ฅํ๊ธฐ ์ํด์ `encoding = 'cp949'` ์ธ์๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
- data.to_csv('์ ์ฅํ๊ณ ์ ํ๋ ํ์ผ๋ช ', encoding = 'cp949')
- excel ํ์ผ์ ๋ถ๋ฌ์ฌ ๋์๋ `pd.read_xlsx()` ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก ํ๊ธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋์ `encoding = 'cp949'` ์ธ์๋ฅผ ๋ฃ์ด์ฃผ์.
- excel ํ์ผ์ csvํ์ผ๊ณผ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ ๊ตฌ๋ถ์๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์, ์ง์ ๊ตฌ๋ถ์๋ฅผ ์ ๋ ฅํด ์ฃผ์ด์ผ ํ๋ค.
- ๊ตฌ๋ถ์๋ `sep = ` ์ธ์๋ฅผ ํตํด ์ค์ ํด ์ฃผ์ด์ผ ํ๋ค.
- data = pd.read_excel('ํ์ผ๋ช ', encoding = 'cp949', sep = '\t')
- ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ผ ๋์๋ ๋ค์๊ณผ ๊ฐ์ด ํ๋ค.
- data.to_excel('ํ์ผ๋ช ', encoding = 'cp949', sep = '\t')
-> ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ํ์ดํ๋์ ์๋ก ๋ค๊ฒ ์
import pandas as pd #pandas๋ชจ๋ ๋ถ๋ฌ์ค๊ณ
data1= pd.read.csv('titanic',encoding='cp949');data1 #๋๋จธ์ง ์์ฑ
-------------4์ฃผ์ฐจ ๊ณผ์ ํผ๋๋ฐฑ-------------
1.
์๋ ๋ฐฉ๋ฒ์ ๋ ์ ํธ
์ต๋น๊ฐ ๊ตฌํ๋ ์ฝ๋. ์ 0์ด ๋ญ ์๋ฏธํ๋์ง ๋ชฐ๋ผ์ ์ง๋ฌธํ๋ ค๊ณ ํ๋๋ฐ ๋ฑ ๊นจ๋ฌ์.
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
0์ด ์ธ๋ฑ์ค ๊ฐ ๋งํ๋๊ฑฐ. ๊ทธ๋๊น ์์๋ ์ธ๋ฑ์ค 0๊ฐ์ด ๋ญ๋! ํ๋๊น '์ฌ'๋ง ๋์จ๊ฑฐ๊ณ ์๋์๋ ์ ์๊ฒ ์์ผ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ธ๋ฑ์ค์ ๊ทธ์ ํด๋นํ๋ ๊ฐ์ด ๋์ค๋๊ฑฐ์๋ค.
์๋ฌผ์ด๋ณด๊ณ ๊ณ ๋ฏผํด์ ๋ ํผ์ ๊นจ๋ฌ์ ์ ์นญ์ฐฌํด
2.
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
on์ ์๋ฏธ๋ ํท๊ฐ๋ ธ์๋๋ฐ,
on์ ํด๋นํ๋ ๊ฐ๋ค์ ๋ง์ถฐ์ ๋ด๊ฐ ๋ณํฉํ๊ณ ์ ํ๋ ๊ฐ์ ๋ฃ์ด๋ผ!์ ์๋ฏธ๋ก ํด์ํ๋ฉด ๋๋ค.
์ด๋ฅผ ์์๋ธ ๋ด ์์ , ๋ ์นญ์ฐฌํด...
3.
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
platform ์๋ฆฌ์ = platform์ most_platform ๋ฐ์ดํฐ ๊ฐ์ผ๋ก ๋์ฒดํ๊ฒ ๋ค์ ์๋ฏธ.
๋ฉํ ์ค๋น ์ฒ๋ผ ํด์ํ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ๊ณต๋ถํ๋๊น ์ดํด๊ฐ ์๋๋ค.
์ด๋ป๊ฒ ๋ค๊ฐ๊ฐ๊ณ ์ด๋ป๊ฒ ํด์ํด์ผ๋๋์ง ์๊ฒ๋จ!
์ฝ๋ฉ์ ์ด๋ ๊ฒ ํ๋๊ฑฐ๊ตฌ๋.. ์ด๋ฐ๊ฑฐ?
์ง์ง ๊ฐ์ฌํฉ๋๋ค....
4.
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
๊ฒฐ์ธก๊ฐ ํ์ธ ์ฝ๋
โ โ โ 5.โ โ โ
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
์ด๊ฒ๋ ์์๋ณด๋ฉด์ ๋ค์ ํ๋๋ฐ ์ดํด ๋๋ฌด ์๋จ.. ์ค๋ช ์์ ์งฑ
๋ด๊ฐ ์ ํธํ๋ ๋ฐฉ์์ ์ค๋ช ์ด๋ผ์ ์ดํดํ๋๋ฐ ๋๋ฌด ์์ํ๋ค.
๋ฐ์ดํฐ์ type์ ๋ฐ๊ฟ์ฃผ๋๊ฑฐ astype
# info_login['login_id'] =dice['b'] ์ ๋งํ๋๊ฑฐ๊ณ (key๊ฐ) ์ฌ๊ธฐ๋ ์ปฌ๋ผ
# info_login['login_id'].astype(int) = 2๋ฅผ ๋งํจ (value๊ฐ) ๊ฐ ์์ฒด
6.
์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
# window8: window8์ ํด๋นํ๋ user_id์ ํ๊ท ,
# windows: window์ ํด๋นํ๋ user_id ํ๊ท ๊ฐ...+
-> ๋ด๊ฐ ์๊ฐํ๋ ๋ฐฉํฅ์ฑ ๋ง์๋ค. ๋ฌผ๋ก ๊ฑด๋ค์ง๋ ๋ชปํด๋ด์,,
์ด ํ๋์ ๋ํด์๋ ์ค์ค๋ก ์ข ์ค๋ง์ด์ง๋ง ์๋ฐํ๋ฉด์ ์ง์คํ๊ธฐ๊ฐ ์ฝ์ง ์์๋ค
๋ผ๊ณ ํ๋ฉด ํ๊ณ๊ฒ ์ฃ ? ์๊ฐ์ด ์์์ง๋ง ์ํ๊ฑฐ๋ค...^^....
dict={} #๋น ๋์ ๋๋ฆฌ ์์ฑ
def boss_question(x): #3. pf ๊ฐ์ด ์ฌ๊ธฐ๋ก ๋์ด์ด
m=info_login.query('platform==@x')['user_id'].mean() #4. windows8์ธ ๋ฐ์ดํฐ ํ๋ ์๋ง ๋์ค๋๋ฐ, user _id ํ ์ค์์ ํ๊ท ๊ฐ์ ๊ตฌํด๋ผ
dict[x]=int(m) #5. window8์ด๋ผ๋ key๊ฐ์ ๊ฐ์ง ๋ window8์ useri์ ํ๊ท ์ value ๊ฐ์ผ๋ก ๊ฐ๊ฒ๋๋ค.
platforms=info_login['platform'].unique()
for pf in platforms: #1. platform์ ์๋ window8๋ถํฐ ์ฐจ๋ก๋๋ก ์คํ
boss_question(pf) # 2. ์ผ๋จ์ window8์ด๋ผ๋ ์ธ์๋ฅผ ๋ฐ์์ ์คํ์ด ๋จ.
print(dict) #6. dict์ ๋์ ๋๋ฆฌ๋ฅผ ์ถ๋ ฅํด์ค๋ผ!
์ถ์ฒ ์ ๋ ฅ
'์ธ์ด > Python ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ด์ฌ ๋ฌธ๋ฒ 6 (0) | 2023.07.20 |
---|---|
ํ์ด์ฌ ๋ฌธ๋ฒ 5 (0) | 2023.07.20 |
ํ์ด์ฌ ๋ฌธ๋ฒ 3 (0) | 2023.07.20 |
ํ์ด์ฌ ๋ฌธ๋ฒ 2 (0) | 2023.07.20 |
ํ์ด์ฌ ๋ฌธ๋ฒ 1 (0) | 2023.07.20 |