challenge 1

In [5]:
phonebook = [{
    'name': '박지성',
    'phone': '01040281234'
},{
    'name': '이청용',
    'phone': '01012344321'
},{
    'name': '손흥민',
    'phone': '01007070202'
}
]
# 1단계
print('1단계: 전체 출력하기')
print(phonebook)

#2단계
print('--------------------')
print('2단계: 이청용 정보만 출력하기')
print(phonebook[1])
1단계: 전체 출력하기
[{'name': '박지성', 'phone': '01040281234'}, {'name': '이청용', 'phone': '01012344321'}, {'name': '손흥민', 'phone': '01007070202'}]
--------------------
2단계: 이청용 정보만 출력하기
{'name': '이청용', 'phone': '01012344321'}
  1. phonebook은 어떤 자료형 일까요?
    • 리스트
  2. phonebook 안에 넣을 수 있는 자료형 중 3가지만 적어주세요.
    • 딕셔너리, int, string
  3. phonebook의 첫번째 값만 출력하려면 어떤 구문이 필요할까요?
    print(phonebook[0])
    
In [11]:
print(phonebook[0].items())
print(phonebook[0].keys())
print(phonebook[0].values())
print(phonebook[0]['name'])
dict_items([('name', '박지성'), ('phone', '01040281234')])
dict_keys(['name', 'phone'])
dict_values(['박지성', '01040281234'])
박지성

challenge 2

In [12]:
import pandas as pd
In [15]:
train = pd.read_csv('data/train.csv')
In [17]:
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
In [19]:
train.head(2)
Out[19]:
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C

1. 사망자의 수를 세려면 어떤 명령구문이 필요할까요?

print(train.loc[train['Survived'] == 0, 'Pclass'].count())

2. 생존자의 수를 세려면 어떤 명령구문이 필요할까요?

print(train.loc[train['Survived'] == 1, 'Pclass'].count())

3. matplotlib에서 bar chart를 그리는 명령어가 무엇일까요?

dead_cnt = train.loc[train['Survived'] == 0, 'Pclass'].count()
survived_cnt = train.loc[train['Survived'] == 1, 'Pclass'].count()

x = [dead_cnt]
y = [survived_cnt]

plt.bar(['0'],y1)
plt.bar(['1'],y2)
plt.show()

4. 2단계) 범례, 축 이름, 막대 색을 설정할 때 쓰는 구문은 뭘까요?
범례

plt.legend(['Dead', 'Survived'])

축 이름

plt.xlabel('Survived')
plt.ylabel('Count')

막대 색

plt.bar([x], [y], color = 'color')
In [33]:
print(train.loc[train['Survived'] == 0, 'Pclass'].count())
# print(train.loc[train['Survived'] == 0, 'Pclass'].value_counts())
print(train.loc[train['Survived'] == 1, 'Pclass'].count())
549
3    372
2     97
1     80
Name: Pclass, dtype: int64
In [45]:
dead_cnt = train.loc[train['Survived'] == 0, 'Pclass'].count()
survived_cnt = train.loc[train['Survived'] == 1, 'Pclass'].count()

y1 = [dead_cnt]
y2 = [survived_cnt]

plt.bar(['0'],y1, color = 'blue')
plt.bar(['1'],y2, color = 'red')

plt.xlabel('Survived')
plt.ylabel('Count')
plt.legend(['Dead', 'Survived'])
# x축의 0,1을 따옴표로 감싸 문자 형식으로 입력하면 
# x축에 숫자 범위가 아닌 0, 1로 표시된다.
plt.show()   

homework 1

Pandas로 성별에 따른 생존자, 사망자 수가 담긴 DataFrame 만들기

In [46]:
import pandas as pd
In [49]:
# train.csv의 데이터 읽어오기
train = pd.read_csv('data/train.csv')
train.head(2)
Out[49]:
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
In [56]:
m_dead = train[(train['Survived'] == 0) & (train['Sex'] == 'male')].shape[0]
f_dead = train[(train['Survived'] == 0) & (train['Sex'] == 'female')].shape[0]
m_survived = train[(train['Survived'] == 1) & (train['Sex'] == 'male')].shape[0]
f_survived = train[(train['Survived'] == 1) & (train['Sex'] == 'female')].shape[0]
In [58]:
df_hw = pd.DataFrame({
    'male': [m_dead, m_survived],
    'female': [f_dead, f_survived]
})
In [60]:
df_hw
Out[60]:
male female
0 468 81
1 109 233

week3 방식으로 숫자 카운트

In [66]:
dead_m = train.loc[(train['Survived']==0) & (train['Sex']=='male'), 'Pclass'].count()
dead_f = train.loc[(train['Survived']==0) & (train['Sex']=='female'), 'Pclass'].count()
survived_m = train.loc[(train['Survived']==1) & (train['Sex']=='male'), 'Pclass'].count()
survived_f = train.loc[(train['Survived']==1) & (train['Sex']=='female'), 'Pclass'].count()
print(dead_m, dead_f, survived_m, survived_f)
468 81 109 233

homework 2

seaborn의 count plot 사용하기

In [67]:
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
In [69]:
# 1) 성별별로 나누어 사망자, 생존자 수 카운트
sns.countplot(x='Survived', data = train, hue = 'Sex')
Out[69]:
<matplotlib.axes._subplots.AxesSubplot at 0x24ffc97f5c8>
In [70]:
# 2) Pclass별로 나누어 사망자, 생존자 수 카운트
sns.countplot(x='Survived', data = train, hue = 'Pclass')
Out[70]:
<matplotlib.axes._subplots.AxesSubplot at 0x24ffccc8148>
In [71]:
# [단계3] 선착장(Embarked)별로 나누어 사망자, 생존자 수 차트도 만들어봅니다.

sns.countplot(x='Survived', data = train, hue = 'Embarked')
Out[71]:
<matplotlib.axes._subplots.AxesSubplot at 0x24ffcd80508>
In [72]:
# [단계4] 나이(Age)별로 나누어 사망자, 생존자 수 차트도 만들어봅니다.
sns.countplot(x='Survived', data = train, hue = 'Age')
Out[72]:
<matplotlib.axes._subplots.AxesSubplot at 0x24ffcdcbd08>
In [75]:
# 모범답안
sns.catplot(data=train, x='Survived', hue='Sex', kind='count')
sns.catplot(data=train, x='Survived', hue='Pclass', kind='count')
sns.catplot(data=train, x='Survived', hue='Embarked', kind='count')
Out[75]:
<seaborn.axisgrid.FacetGrid at 0x24ffca03a88>

Level Up

레벨업 1

csv 파일 만들기

In [80]:
f = open("test.csv", "w")
f.write("이름,주소\n")
f.write("최도근,마포 공덕\n")
f.write("이헌영,서대문 연희\n")
f.close()

레벨업 2

csv 파일 불러오기

In [82]:
f = open("test.csv", "r")
line = f.readline()
print(line)
line = f.readline()
print(line)
line = f.readline()
print(line)
f.close()
이름,주소

최도근,마포 공덕

이헌영,서대문 연희