몇 문제 풀지 않은 것 같은데 시간이 빨리 지나갔다. 그래도 코드를 한 자씩 적어가며 문제를 푸니 내 것이 된 느낌이다! 호텔 데이터 전처리 할 때는 구글링 하면서 코드를 복붙 했기에 뭔가 기억에서 날아가는 느낌이었는데 말이지... 기초를 다시 한번 잡고 넘어간 하루였다. 뭐든 기초가 중요해 기초가. 결국 후반으로 넘어가면 기초가 잘 잡힌 사람이 이긴다. 코딩 시간은 갈수록 빨라질 것이라 믿는다. 다음 주도 화이팅 해보자!! seaborn만 다루다 보니 matplotlib 문법이 익숙하지 않다. 음식도 편식하면 안 되듯 라이브러리도 편식하면 안 된다는 것을 느낀 하루였다. 하지만 어려운 걸요 ㅠㅠ
학습시간 18:00~00:00(당일6H/누적122H)
numbers_array[numbers_array % 2 == 0]
plt.scatter(x=age_array, y=salary_array, c='red', marker='s')
plt.title('Age and Salary')
plt.xlabel('Age')
plt.ylabel('Salary($)')
df.sort_values(by=df.columns[0], ascending=False)
# 수학은 85점, 과학은 56점, 영어는 90점 데이터 찾기
filtered_data = exam_df[(exam_df['math_score'] == 85) &
(exam_df['science_score'] == 56) &
(exam_df['english_score'] == 90)]
df.corr()
sns.heatmap(df.corr(), annot=True)
첫 번째 로우에는 가격 정보, 두 번째 로우에는 거래량(천만 기준). 여기서 7월 정보?
import numpy as np
bitcoin_array = np.array([[970, 1180, 1072, 1348, 2286, 2481,
2875, 4703, 4339, 6468, 10234, 14156],
[514, 428, 1087, 976, 3426, 4448,
3262, 6355, 5570, 5801, 14074, 41034]])
# 정답
bitcoin_array[1, 6]
틀렸다. 아 numpy는 대괄호 갯수가 넘 헷갈린다 ㅠ 심지어 이것도 한 번 틀렸다. [[1, 6]]랑 [[1], [6]] 이 둘 중 하나인 줄 알았는데,,,
짝수!
import numpy as np
numbers_array = np.arange(1, 101)
# 정답
numbers_array[numbers_array % 2 == 0]
틀렸다 ㅋㅋㅋㅋㅋㅋㅋㅋ for문으로 돌리는 건 줄 알았는데 아니었음. 힌트 하나 보고 알았다. 대괄호 안에 조건식이 들어가는 거구만!
각 상품별 매출액을 한번 계산해!
import numpy as np
price_array = np.array([30000, 25000, 40000, 60000, 95000, 35000, 50000])
quantity_array = np.array([10, 13, 7, 20, 6, 19, 9])
# 정답
price_array * quantity_array
드디어 하나 맞았네 ㅋㅋㅋㅋㅋㅋㅋ
막대 그래프를 그려!
import numpy as np
import matplotlib.pyplot as plt
sales_array = np.array([10, 13, 8, 15, 6, 11, 4])
category_array = ['skirt', 't-shirt', 'dress', 'sweater', 'coat', 'jeans', 'shoes']
# 정답
plt.bar(category_array, sales_array)
틀림 ㅡㅡ 막대 그래프 하나 못 그리는 나... 계속 seaborn만 써서 그런가 바로 까먹어버렸다.
시각화해!
그래프 제목: Age and Salary
x축 제목: Age
y축 제목: Salary($)
점의 색깔: 빨간색(red)
점의 모양: 네모
import numpy as np
import matplotlib.pyplot as plt
age_array = np.array([
27, 25, 29, 22, 26, 28, 40, 42, 34, 31,
37, 36, 40, 32, 41, 47, 52, 49, 51, 50,
49, 46, 47, 46, 47, 45, 57, 58, 60, 56
])
salary_array = np.array([
44009, 83450, 95025, 63748, 78652,
58977, 114733, 126353, 121904, 125083,
143739, 140754, 144346, 114899, 125806,
180252, 153374, 171057, 161305, 193786,
167238, 150157, 179843, 195326, 165849,
164887, 131372, 135876, 113796, 143050
])
# 정답
plt.scatter(x=age_array, y=salary_array, c='red', marker='s')
plt.title('Age and Salary')
plt.xlabel('Age')
plt.ylabel('Salary($)')
plt.show()
틀림. 진짜 기본적인 건데 생각이 안 난다 ㅋㅋㅋㅋㅋ
손흥민('Son Heung-Min') 선수가 몇 골을 넣었는지?
import pandas as pd
players_df = pd.read_csv('data/tottenham_2021.csv', index_col='name')
# 정답
players_df.loc['Son Heung-Min', 'goals']
틀림 ㅠㅠ 그새 loc함수를 까먹어버림,, 다시 외웠으니까 됐지 뭐!
골을 한 개 이상 넣은 선수들의 데이터?
import pandas as pd
players_df = pd.read_csv('data/tottenham_2021.csv', index_col='name')
# 정답
players_df[players_df['goals'] >= 1]
틀림 ^^ 위에서 배웠는데 그새 까먹음 후,,, 미치겠다
Ben Davies 결측값 29로! team 컬럼 생성 후 Tottenham 값 입력! 손흥민 데이터 추가!
(경기: 35회, 경기 시간: 3051분, 골: 23골, 어시스트: 7회)
import pandas as pd
players_df = pd.read_csv('data/tottenham_2122.csv', index_col='name')
# 정답
players_df.loc['Son Heung-Min'] = [35, 3051, 23, 7]
players_df.loc['Ben Davies', 'matches'] = 29
players_df['team'] = 'Tottenham'
players_df
틀림^^!! 별것 아닌 것 같은데도 은근 헷갈리네...
칼로리 분포를 박스 플롯으로 그려!
import pandas as pd
starbucks_df = pd.read_csv('data/starbucks.csv')
# 정답
starbucks_df['calories'].plot(kind='box')
틀림~ plt.boxplot() 뭐시기인 줄 알았는데 전혀 아니네 ^^...
현대자동차의 가격대 분포!
import pandas as pd
car_df = pd.read_csv('data/car.csv')
# 정답
car_df[car_df['manufacturer'] == 'HYUNDAI']['price'].plot(kind='hist')
틀림!그래도 얼추 맞춤! car_df = car_df['manufacturer' == 'HYUNDAI']['price'].plot(kind='hist') 이렇게 적었는데 ㅠㅠ
net_user_cumsum 그래프 생성!
컬럼: day, register, unregister
import pandas as pd
user_df = pd.read_csv('data/user.csv')
# 정답
user_df['net_user_cumsum'] = user_df['register'] - user_df['unregister']
user_df['net_user_cumsum'] = user_df['net_user_cumsum'].cumsum()
user_df.plot(x='day', y='net_user_cumsum', kind='bar')
틀림 ㅎㅎ 그래도 거의 다 맞췄다. 마지막에 플롯을 그리는데 user_df['net_user_cumsum'].plot 이렇게 넣음ㅠㅠ 이게 은근 헷갈리네...
분기별 정기권 막대 그래프 그려! 영업일 비영업일 나눠서!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
bike_df = pd.read_csv('data/bike.csv')
sns.set_theme(rc={'figure.figsize': (10, 5)}, style='white')
# 정답
sns.barplot(data=bike_df, x='quarter', y='registered', hue='workingday', errorbar=None)
와 씨!! 나 이거 맞춤!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 난 역시 seaborn에 강함 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ
월별 기온 정보를 한눈에 볼 수 있는 stripplot을 그려!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
bike_df = pd.read_csv('data/bike.csv')
sns.set_theme(rc={'figure.figsize': (10, 5)}, style='white')
# 정답
sns.stripplot(data=bike_df, x='month', y='temperature')
또 맞춰버렸죠!?
좌석 클래스별로 항공권의 금액대 분포를 확인할 수 있는 바이올린 플롯 그려!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
flight_df = pd.read_csv('data/flight.csv')
sns.set_theme(rc={'figure.figsize': (6, 6)}, style='white')
# 정답
sns.violinplot(data=flight_df, x='class', y='price')
이것도 정답! 근데 답지와 코드가 똑같은데 왜 내껀 바이올릿 플롯이 둘 다 파란색이지? seaborn 버전이 달라서 그런가?
흡연자와 비흡연자 insurance_df를 가지고 히스토그램을 그려!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
insurance_df = pd.read_csv('data/insurance_charge.csv')
sns.set_theme(rc={'figure.figsize': (10, 5)}, style='white')
# 정답
sns.histplot(data=insurance_df, x='charge', hue='smoking', multiple='stack')
정답! 와 멀티플 스택 까먹을 뻔했다...
와인 가격과 평점의 관계를 볼 수 있는 선형회귀 그래프 그려!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
wine_df = pd.read_csv('data/wine.csv')
sns.set_theme(rc={'figure.figsize': (6, 6)}, style='white')
# 정답
sns.regplot(data=wine_df, x='price', y='points')
이것도 정답! 확실히 seaborn은 무난하다...
insurance_df를 가지고 히트맵 그려!
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
insurance_df = pd.read_csv('data/insurance_premium.csv')
sns.set_theme(rc={'figure.figsize': (8, 6)}, style='white')
# 정답
sns.heatmap(data=insurance_df.corr(), annot=True)
오랜만에 틀렸다. 히트맵 함수 안에 넣는 명령어가 생각이 안 나더라... 히트맵은 반드시 (df.corr(), annot=True) 형식으로 와야한다! 외우자!!
기초통계와 데이터 시각화 문제까지 학습 완료! 알찬 일요일이었다!