# 6.ํน์ ์ฐ๋ น๋ ์น๊ฐ ์ถ์ถ
๋ฌธ์ ) 20์ธ ์ดํ์ ์น๊ฐ์ ์ด๋ฆ๋ค์ ์ถ์ถ ํ์ฌ ์น๊ฐ์ ์ด๋ฆ์ key๋ก, ์น๊ฐ์ ๋์ด๋ฅผ value๋ก ํ๋ ๋์
๋๋ฆฌ๋ฅผ ์์ฑํ์ธ์.
dict1 = {}
length = len(df)
for i in range(length):
if df['Age'][i] <= 20:
name = df['Name'][i]
age = df['Age'][i]
dict1[name] = age
for key in dict1:
print(key, ":", dict1[key])
[ ๊ฒฐ๊ณผ ]
Cor, Mr. Liudevit : 19.0
Doling, Miss. Elsie : 18.0
Hegarty, Miss. Hanora "Nora" : 18.0
Lindqvist, Mr. Eino William : 20.0
Edvardsson, Mr. Gustaf Hjalmar : 18.0
Turja, Miss. Anna Sofia : 18.0
Olsvigen, Mr. Thor Anderson : 20.0
Goodwin, Mr. Charles Edward : 14.0
Panula, Mr. Jaako Arnold : 14.0
Dakic, Mr. Branko : 19.0
Fischer, Mr. Eberhard Thelander : 18.0
Madill, Miss. Georgette Alexandra : 15.0
Karun, Miss. Manca : 4.0
Astor, Mrs. John Jacob (Madeleine Talmadge Force) : 18.0
Barbara, Miss. Saiide : 18.0
Soholt, Mr. Peter Andreas Lauritz Andersen : 19.0
Harper, Miss. Annie Jessie "Nina" : 6.0
Jensen, Mr. Svend Lauritz : 17.0
Oreskovic, Mr. Luka : 20.0
Hassan, Mr. Houssein G N : 11.0
Abbott, Mr. Rossmore Edward : 16.0
Marvin, Mr. Daniel Warner : 19.0
Wells, Miss. Joan : 4.0
Moor, Master. Meier : 6.0
Hamalainen, Master. Viljo : 0.67
Bailey, Mr. Percy Andrew : 18.0
Barah, Mr. Hanna Assi : 20.0
Eklund, Mr. Hans Linus : 16.0
Myhrman, Mr. Pehr Fabian Oliver Malkolm : 18.0
Emanuel, Miss. Virginia Ethel : 5.0
Ayoub, Miss. Banoura : 13.0
Dick, Mrs. Albert Adrian (Vera Gillespie) : 17.0
Sjoblom, Miss. Anna Sofia : 18.0
Rice, Master. George Hugh : 8.0
Dean, Master. Bertram Vere : 1.0
Gaskell, Mr. Alfred : 16.0
Carter, Master. William Thornton II : 11.0
Thomas, Master. Assad Alexander : 0.42
Pettersson, Miss. Ellen Natalia : 18.0
Andersson, Miss. Ebba Iris Alfrida : 6.0
Skoog, Master. Karl Thorsten : 10.0
Panula, Master. Urho Abraham : 2.0
Mallet, Master. Andre : 1.0
Yasbeck, Mrs. Antoni (Selini Alexander) : 15.0
Richards, Master. George Sibley : 0.83
Allum, Mr. Owen George : 18.0
Alhomaki, Mr. Ilmari Rudolf : 20.0
Mudd, Mr. Thomas Charles : 16.0
Culumovic, Mr. Jeso : 17.0
Andersson, Master. Sigvard Harald Elias : 4.0
Boulos, Miss. Nourelain : 9.0
Lines, Miss. Mary Conover : 16.0
Aks, Mrs. Sam (Leah Rosen) : 18.0
Johnson, Master. Harold Theodor : 4.0
Najib, Miss. Adele Kiamie "Jane" : 15.0
Gustafsson, Mr. Alfred Ossian : 20.0
Petroff, Mr. Nedelio : 19.0
Graham, Miss. Margaret Edith : 19.0
# ๋์ ๋๋ฆฌ ๊ฐ๋
1) ์ถ๊ฐํ๊ธฐ
๋์ ๋๋ฆฌ [ ํค ] = ๊ฐ
2) ์ญ์ ํ๊ธฐ
del ๋์ ๋๋ฆฌ [ ํค ]
3) ๋์ ๋๋ฆฌ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
๋์ ๋๋ฆฌ [ ํค ]
4) ๋์ ๋๋ฆฌ ๋ด๋ถ์ ํค๊ฐ ์๋์ง ํ์ธ
if key in dict1:
print(dict1[key])
5) ๋์ ๋๋ฆฌ ๊ฐ ์ถ๋ ฅ
for key in dict1:
print(key, ':', dict1[key])
# 7. ๊ฐ์ฅ ๋ง์ ํ์น๊ฐ ์๋ฅผ ๊ฐ์ง ์ ์ค ๋ฑ๊ธ ์ฐพ๊ธฐ
ํ์ดํ๋์ ์ ์ค ๋ฑ๊ธ ์ค์์ ๊ฐ์ฅ ๋ง์ ํ์น๊ฐ์ด ์ด์ฉํ ์ ์ค ๋ฑ๊ธ์ ์ฐพ์ผ์ธ์
tip!) ์ ์ค ๋ฑ๊ธ์ ‘Pclass’ column์ ์์ผ๋ฉฐ 1,2,3 ๋ฑ๊ธ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
length = len(df)
type1, type2, type3 = 0,0,0
for i in range(length):
if df['Pclass'][i] == 1:
type1 += 1
if df['Pclass'][i] == 2:
type2 += 1
if df['Pclass'][i] == 3:
type3 += 1
print(type1, type2, type3)
if type1 == max(type1, type2, type3):
print("1๋ฑ๊ธ")
elif type2 == max(type1, type2, type3):
print("2๋ฑ๊ธ")
elif type3 == max(type1, type2, type3):
print("3๋ฑ๊ธ")
[ ๊ฒฐ๊ณผ ]
216 184 491
3๋ฑ๊ธ
[ ๋ฐ์ดํฐ ๋ถ์์ผ๋ก ํ๊ธฐ ]
grouped = df.groupby('Pclass')['Name'].count()
print(grouped)
print(f"์ธ์์๊ฐ ๊ฐ์ฅ ๋ง์ Pclass๋ {grouped.idxmax()} ์
๋๋ค")
[ ๊ฒฐ๊ณผ ]
Pclass
1 216
2 184
3 491
Name: Name, dtype: int64
์ธ์์๊ฐ ๊ฐ์ฅ ๋ง์ Pclass๋ 3 ์
๋๋ค
# count()
๊ฒฐ์ธก๊ฐ์ด ์๋ ์์์ ์ ๊ตฌํ๊ธฐ
axis์ ๋ํด์ ๊ธฐ๋ณธ๊ฐ์ 0์ผ๋ก ์ด์ ๋ํด์ ๊ฒฐ์ธก์น๊ฐ ์๋ ๊ฐ์ ๊ฐฏ์๋ฅผ ๊ตฌํฉ๋๋ค. (๋น์ฐํ ์ด์ ๋ํด์ ๊ตฌํด์ผ๊ฒ ์ง..?)
count() : ์ด ๋ฉ์๋๋ ๊ฐ ์ด ๋๋ ์๋ฆฌ์ฆ์์ ๋น์ด ์์ง ์์(non-null) ์์์ ์๋ฅผ ์ธ์ด์ค๋๋ค
์ด๋ ๋ฐ์ดํฐ์
์์ ์ ํจํ ๋ฐ์ดํฐ์ ์๋ฅผ ํ์
ํ ๋ ์ ์ฉํฉ๋๋ค.
len() : ์ด ํจ์๋ ๋ฐ์ดํฐํ๋ ์ ๋๋ ์๋ฆฌ์ฆ์ ์ ์ฒด ์์ ์๋ฅผ ๋ฐํํฉ๋๋ค. ๊ฒฐ์ธก์น(null ๊ฐ)๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ์์๋ฅผ ์ธ์ด์ค๋๋ค.
[ ์์ ]
[N,T,F]=[pd.NA,True,False]
idx = ['row1','row2','row3','row4']
data = {'col1':[1,N,N,4.0],'col2':['A','B','C',N],'col3':[N,N,N,7],'col4':[1,2.4,3.6,4]}
df = pd.DataFrame(data,idx)
print(df)
>>
col1 col2 col3 col4
row1 1 A <NA> 1.0
row2 <NA> B <NA> 2.4
row3 <NA> C <NA> 3.6
row4 4.0 <NA> 7 4.0
print(df.count())
>>
col1 2
col2 3
col3 1
col4 4
dtype: int64
axis=1์ธ ๊ฒฝ์ฐ ํ์ ๋ํด์ ๊ฒฐ์ธก์น๊ฐ ์๋ ๊ฐ์ ๊ฐฏ์๋ฅผ ๊ตฌํฉ๋๋ค.
[ ์์ ]
print(df.count(axis=1))
>>
row1 3
row2 2
row3 2
row4 3
dtype: int64
# idxmax
idxmax์ idxmin์ ๊ฐ๊ฐ ์ถ์์ ์ต๋/์ต์๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋์ ๋๋ค.
import pandas as pd
# ์์ ๋ฐ์ดํฐ ์์ฑ
data = {'A': [10, 20, 30, 40, 50],
'B': [5, 15, 25, 35, 45]}
df = pd.DataFrame(data)
# 'A' ์ด์์ ์ต๋๊ฐ์ ๊ฐ์ง๋ ์์์ ์ธ๋ฑ์ค ์ถ๋ ฅ
idx_max_A = df['A'].idxmax()
print("Index with maximum value in column 'A':", idx_max_A)
# 'B' ์ด์์ ์ต๋๊ฐ์ ๊ฐ์ง๋ ์์์ ์ธ๋ฑ์ค ์ถ๋ ฅ
idx_max_B = df['B'].idxmax()
print("Index with maximum value in column 'B':", idx_max_B)
[ ๊ฒฐ๊ณผ ]
Index with maximum value in column 'A': 4
Index with maximum value in column 'B': 4
โป ํ์ฌ ์์์์๋ group by๊ฐ ์กด์ฌํ์ง ์๊ณ ์ต๋๊ฐ์ ๋จ์ ์ธ๋ฑ์ค๋ฅผ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ 4๊ฐ ์ถ๋ ฅ๋์์ง๋ง
๋ฌธ์ ์์๋ groupby๋ก ๋ฌถ์ด์ฃผ์์ผ๋ฏ๋ก 3์ด ์ถ๋ ฅ๋๋ค
๋ง์ฝ groupby์ ๋ฌถ์ด์ฃผ๋ ์นดํ ๊ณ ๋ฆฌ๊ฐ ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ idxmax() ์ฌ์ฉ์ ๊ทธ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋๋ค
# ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ
n=np.NaN
idx = ['row1','row2','row3']
col = ['col1','col2','col3']
data = [[1,2,200],[100,5,6],[7,300,n]]
df = pd.DataFrame(data, idx, col)
print(df)
>>
col1 col2 col3
row1 1 2 200.0
row2 100 5 6.0
row3 7 300 NaN
# 8.๊ฐ์ฅ ๋ง์ ์๊ธ์ ๋ธ ์น๊ฐ ์ ๋ณด ์ถ๋ ฅ
ํ์ดํ๋์ ์น๊ฐ ์ค ๊ฐ์ฅ ๋ง์ ์๊ธ์ ๋ธ ์น๊ฐ์ ์ฐพ์ผ์ธ์
tip!) ์๊ธ ์ ๋ณด๋ ‘Fare’ column์ ์์ต๋๋ค
length = len(df)
max_value = 0
for i in range(length):
if df['Fare'][i] > max_value:
max_value = df['Fare'][i]
print(f"๊ฐ์ฅ ๋ง์ ๋์ ๋ธ ๊ธ์ก์ {max_value} ์
๋๋ค")
for i in range(length):
if df['Fare'][i] == max_value:
print(df['Name'][i])
[ ๊ฒฐ๊ณผ ]
๊ฐ์ฅ ๋ง์ ๋์ ๋ธ ๊ธ์ก์ 512.3292 ์
๋๋ค
Ward, Miss. Anna
Cardeza, Mr. Thomas Drake Martinez
Lesurer, Mr. Gustave J
[ ๋ฐ์ดํฐ๋ถ์์ผ๋ก ํ๊ธฐ ]
max_money = max(df['Fare'])
for idx,value in enumerate(df['Fare']):
if value == max_money:
print(df['Name'][idx])
[ ๊ฒฐ๊ณผ ]
Ward, Miss. Anna
Cardeza, Mr. Thomas Drake Martinez
Lesurer, Mr. Gustave J
# 9๋ฒ ๋ฌธ์ : ๊ฐ ์ฑ๋ณ์ ์์กด์จ ๊ณ์ฐ
๋ฌธ์ ) ํ์ดํ๋ ๊ฐ ์ฑ๋ณ (๋จ์ฑ/์ฌ์ฑ) ๊ฐ๊ฐ์ ์์กด์จ์ ๊ณ์ฐํ์ธ์**
Tip ) ๊ฐ ์ฑ๋ณ ๋ณ๋ก -> ๊ฐ์ ๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ฃผ๋ group by ์๊ฐํด๋ณด๊ธฐ
length = len(df)
man_total, woman_total = 0,0
man_alive, woman_alive = 0,0
for i in range(length):
if df['Sex'][i] == 'male':
man_total += 1
if df['Survived'][i] == 1:
man_alive += 1
elif df['Sex'][i] == 'female':
woman_total += 1
if df['Survived'][i] == 1:
woman_alive += 1
man_result = man_alive / man_total
woman_result = woman_alive / woman_total
print(f"๋จ์ฑ์ ์์กด์จ์ {man_result} ์
๋๋ค")
print(f"์ฌ์ฑ์ ์์กด์จ์ {woman_result} ์
๋๋ค")
[ ๊ฒฐ๊ณผ ]
๋จ์ฑ์ ์์กด์จ์ 0.18890814558058924 ์
๋๋ค
์ฌ์ฑ์ ์์กด์จ์ 0.7420382165605095 ์
๋๋ค
[ ๋ฐ์ดํฐ๋ถ์์ผ๋ก ํ๊ธฐ ]
survived_rate = df.groupby('Sex')['Survived'].sum() / df.groupby('Sex')['Survived'].count()
print(round(survived_rate,2))
print("\n\n")
print(round(survived_rate['female'],2))
print(round(survived_rate['male'],2))
[ ๊ฒฐ๊ณผ ]
Sex
female 0.74
male 0.19
Name: Survived, dtype: float64
0.74
0.19
# 10. ๊ฐ์ฅ ๋ง์ ์ถ๋ฐ ํญ๊ตฌ ์ฐพ๊ธฐ
์น๊ฐ๋ค์ด ์ถ๋ฐํ ํญ๊ตฌ ์ค์์ ๊ฐ์ฅ ๋ง์ ํญ๊ตฌ๋ฅผ ์ฐพ๊ณ ๊ทธ ํญ๊ตฌ๋ฅผ ์ถ๋ฐํ ์น๊ฐ ์๋ฅผ ์ถ๋ ฅํ์ธ์.
tip!) ์ถ๋ฐ ํญ๊ตฌ์ ๋ํ ์ ๋ณด๋ ‘Embarked’ column์ C, Q, S๋ก ์ ์๋์ด ์์ต๋๋ค.
tip!) ‘Embarked’ column์๋ ๊ฒฐ์ธก๊ฐ์ด ์ผ๋ถ ์กด์ฌํฉ๋๋ค. ์ฝ๋๊ฐ ๊ฒฐ์ธก๊ฐ์ผ๋ก ์ธํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ฝ๋์ธ์ง ํ์ธํ์ธ์.
c,q,s = 0,0,0
length = len(df)
for i in range(length):
if pd.isnull(df['Embarked'][i]) == False:
if df['Embarked'][i] == 'C':
c += 1
elif df['Embarked'][i] == 'Q':
q += 1
elif df['Embarked'][i] == 'S':
s += 1
print(f"c์ ์ธ์์๋ {c}์ด๊ณ q์ ์ธ์์๋ {q}์ด๊ณ s์ ์ธ์์๋ {s}์ด๋ค")
if c == max(c,q,s):
print("๊ฐ์ฅ ๋ง์ด ์ถ๋ฐํ ํญ๊ตฌ๋ C์ด๊ณ ์ธ์์๋ {c} ์ด๋ค")
if q == max(c,q,s):
print("๊ฐ์ฅ ๋ง์ด ์ถ๋ฐํ ํญ๊ตฌ๋ Q์ด๊ณ ์ธ์์๋ {q} ์ด๋ค")
if s == max(c,q,s):
print("๊ฐ์ฅ ๋ง์ด ์ถ๋ฐํ ํญ๊ตฌ๋ S์ด๊ณ ์ธ์์๋ {s} ์ด๋ค")
[ ๊ฒฐ๊ณผ ]
c์ ์ธ์์๋ 168์ด๊ณ q์ ์ธ์์๋ 77์ด๊ณ s์ ์ธ์์๋ 644์ด๋ค
๊ฐ์ฅ ๋ง์ด ์ถ๋ฐํ ํญ๊ตฌ๋ S์ด๊ณ ์ธ์์๋ {s} ์ด๋ค
[ ๋ฐ์ดํฐ๋ถ์์ผ๋ก ํ๊ธฐ ]
grouped = df.groupby('Embarked')['Name'].count()
print(f"๊ฐ์ฅ ๋ง์ด ์ถ๋ฐํ ํญ๊ตฌ๋ {grouped.idxmax()} ์ด๊ณ ๊ทธ ์ธ์์๋ {max(grouped)} ์
๋๋ค")
[ ๊ฒฐ๊ณผ ]
๊ฐ์ฅ ๋ง์ด ์ถ๋ฐํ ํญ๊ตฌ๋ S ์ด๊ณ ๊ทธ ์ธ์์๋ 644 ์
๋๋ค
# Reference
12-05 ๊ฒฐ์ธก๊ฐ์ด ์๋ ์์์ ์ (count)
####DataFrame.count(axis=0, level=None, numeric_only=False) ##๊ฐ์ `count`๋ฉ์๋๋ ๊ฐ ํ/์ด์ ๊ฒฐ์ธก์น๊ฐ ์๋ ์์์ ๊ฐฏ์…
wikidocs.net