1. 라이브세션 코드필사
2. 시각화 심화 라이브 세션
3. 파이썬 개인 과제 피드백
4. 코드 스터디
5. 코드카타
.
.
.
df_sorted = df.sort_values(by=['부서','연봉'], ascending=[True, False])
2개 이상이면 대괄호 씌우기. 컬럼명이랑 정렬조건 둘다!

집계함수 여러개 쓰고 싶으면 그냥 쭈루룩 적으면 됨.

groupby+transform-> 기존 테이블의 행 유지
axis=1 ---> 좌우연결 , axis=1 ---> 상하
상하 연결에서 ignore_index=True 하면? concat된 테이블에서 다시 인덱스 매김
dates=pd.date_range(start='2024-01-01',periods=len(df), freq='D')
ㄴ freq='D' -> 하루간격(D=Day)
df['month']=df['order_date'].dt.month_name()
month 말고도 되는 거 많음
report=df_final.groupby('day')[['total_bill','tip']].agg(['mean','max'])
day에 따라 묶고 요 두가지 컬럼이 정렬기준이며 평균,최대값을 볼 거다
열의 각 값(value)에 대한 모든 횟수를 반환
value_counts의 활용 방법들 -> ★
일단 NaN 값 확인도 가능함
plt.figure(figsize=(6, 4)) # 1. 캔버스 크기 설정 (생략 가능)
plt.bar(day_counts.index, day_counts.values) # 2. 그래프 그리기
plt.title("요일별 손님 수 (plt 방식)") # 3. 제목 달기
plt.xlabel("요일") # 4. 축 이름
plt.ylabel("빈도")
plt.show()
여기서 사실
plt.bar(day_counts.index, day_counts.values)
이것만 입력해도 그래프는 나옴

그래프 여러개 그릴 때
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))
나 여러개 할거야 배치는 한줄에 두개 해줘
nrows=1, ncols=2 -> 가로로 배치 ㅁㅁ
nrows=2, ncols=1 -> 세로로 배치 ㅁ
ㅁ
첫번째 그래프에 대한 설정을 하고 싶다? axes[0]
인덱스 쓰던 개념 그대로 적용하면 됨.
df.plot(kind='그래프종류') 혹은 df.plot.그래프종류() 하면 알아서 해줌
예시
tips['day'].value_counts().plot(kind='bar', figsize=(6, 4), color='orange', rot=0)
plt.title("요일별 데이터 개수 (Pandas Plot)")

갑자기 든 의문. plt.show() 안해도 그래프 나오는데 굳이 왜 입력해줘야 하지?
그래서 gpt한테 물어봄

알고보니 코랩이 알아서 센스있게 출력해주고 있었던 거였다...! 따봉코랩아 고마워~
사실 거의 코랩을 쓸 것 같긴한데 그래두 알아두기. plt.show()는 입력해주자~
그리고 새로 알게 된 사실. 함수에 괄호를 빼고 코랩에 입력하면 해당 함수에 대해서 설명해줌. 그리고 실수로 괄호를 빼먹고 plt.show만 입력했다가 알게 됨.

docs 가볍게 훑어보면서 어떤 형식의 그래프들 있는지 파악하기
3-2
def equipment_code_decoder(code_list):
num_code = {'영':0,'일':1,'이':2,'삼':3,'사':4,
'오':5,'육':6,'칠':7,'팔':8,'구':9}
for code in code_list:
for char in code:
if char in num_code.keys():
code = code.replace(char,str(num_code[char]))
else:
code = code
print(code)
# 설비 코드 목록
code_list = [
"삼5이사",
"0오6칠",
"48삼구",
"이74팔",
"9일이삼"
]
# 코드 변환 함수 실행
equipment_code_decoder(code_list)
이번에는 replace랑 딕셔너리 사용해서 풀이해ㅐ봤다
3-3
import math
# 장비별 이동 거리 계산 함수
def calculate_single_distance(machine_positions):
for machine, position in machine_positions.items():
x1, y1 =position[0]
x2, y2 =position[1]
distance = math.sqrt((x2-x1)**2 + (y2-y1)**2)
print(f"{machine}의 이동 거리: {distance:.2f} 미터")
# 장비별 위치 데이터
machine_positions = {
"Machine A": [(0, 0), (5, 5)],
"Machine B": [(2, 2), (6, 8)],
"Machine C": [(0, 0), (3, 4)]
}
# 이동 거리 계산 실행
calculate_single_distance(machine_positions)
사실 과제할 당시엔 전혀 이해 못하고 답안을 작성했었다.
어디 블로그에 비슷한 연습문제가 있어서 그걸 거의 베끼듯이 코드를 작성했었는데 그걸 지금 다시 읽어보니 이 문제에 적용하기엔 꽤나 비효율적인 코드였다..
이번에 좀 더 생각을 하고 풀어서 그런지 그것보단 짤막해졌다(물론 더 짧은 코드도 있겠지만...! ^^7)
def solution(num):
repeat = 0
while num != 1 and repeat<=500:
if num%2 == 0:
num=num/2
else:
num=num*3+1
repeat += 1
if num == 1:
return repeat
else:
return -1
오랜만에 while을 사용하는 문제. 문제를 보면서 while을 써야할 것 같다는 생각은 들었는데 어떻게 쓰는지는 완전히 까먹어서 다시 찾아보고 풀었다. 다른 사람들 풀이도 봤는데 이 문제는 다들 비슷하게 풀었다.
오늘의 소감
오늘 역대급으로 코드많이 본 날인것 같다. 코드 필사하고, 문제풀고, 함수 검색하고...
그리고 정말 눈꺼풀이 정말 무거웠다. 손가락을 쉬면 자꾸 눈이 감겨서 정신이 없었다...ㅋㅋ큐ㅜ
하지만 그렇다면 손가락을 안 쉬면 됨~
새롭게 알게된 점 & 어려웠던 점
오늘 코드카타 문제가 어려웠다. 조건 자체가 여태까지 푼 문제 중에 제일 복잡한 느낌이었다. 그래도 while문 적용해서 차근차근 해보니까 어떻게든 풀려서 뿌듯하기도 했다~
내일의 목표
zep 한번 들어가기
과제 끝내기
팀원들이 추천해준 자료 읽기
이거 다 주말에 끝내기