안쓰면 까먹어 버리는 기초
여러 개의 이터러블(리스트, 튜플 등)을 인자로 받아, 동일한 인덱스에 있는 요소들을 하나의 튜플로 묶어서 이터레이터를 반환 데이터를 병렬로 처리할 때 유용
ex) a = [1,2,3], b =[4,5,6]
for i in zip(a,b):
print(i)
=>
(1, 4)
(2, 5)
(3, 6)
** 이터레이터를 반환하고 단 한번만 소비가능함 소비가 끝나면 빈 이터레이터가 되므로 다시 사용하고싶다면 다시 zip호출해야함
enumerate 함수 (진짜 많이 씀)
주어진 반복 가능한 객체를
인덱스와 값을 쌍으로 가지는 튜플을 생성
ex) a = ['apple', 'banana', 'cherry']
for index, value in enumerate(a):
print(index, value)
=>
0 apple
1 banana
2 cherry
리스트에 값 추가
.insert => 원하는 위치가 있을 때 사용
.append => 가장 많이 사용 / 제일 뒤에 추가
.extend => append와 차이점은 리스트를 추가할 때 값만 추가됨
ex) a= [1,2,3]
.append(a) => [1,2,3] 자체가 추가
.extend(a) => 1,2,3 값 추가
.append만 알아도 무방할듯..
간단한 함수를 정의할 때 사용하는 익명 함수
ex) lambda x : 10 if x > 10 else 20
날짜와 시간을 문자열 형식으로 포맷팅하거나 -> strftime() : string format time
문자열로부터 날짜와 시간 객체를 생성 -> strptime() : string parse time
특정 문자(열)을 다른 문자(열)로 바꾸기
변수명.replace(현재 문자, 바꿀 문자)
ex) sex라는 컬럼이 문자일 때 수로 바꾸고싶다면
df['sex'].replace({'male':0,'female':1}) 이렇게도 가능
map : Series 객체에 적용되며, 각 요소에 대해 함수를 적용
apply : Series와 DataFrame에서 사용
함수나 연산을 축(axis)을 기준으로 적용할 수
개별 요소에 대해 적용할 수도 있고, 행 또는 열 단위로 적용할 수도
범주에 따라 값 변경시 lambda와 같이 사용함
ex) df['name'] = df.apply(lambda x: 'james' x['salary'] > 1000)
특정 문자로 결합
ex) '원하는 문자'.join(원하는 문자열) -> 문자열의 형태가 리스트든 튜플, 딕셔너리, 세트이든 문자열로 바뀌어서 나온다 다만 딕셔너리라면 키값만 join하여 나옴
리스트 형식을 문자열로 바꾸고싶을 때
lis = ['i','go','home']
' '.join(lis)
=> 'i go home' 이런식으로 문자열로 바꿀 수 있음
원하는 df 이름 = df명.pivot_table(index=~,columns=~,values=~,aggfunc=~)
bins = [~] : 구간
labels = [~] : 구간 사이 라벨
df['새 컬럼 이름'] = pd.cut(df['사용할 컬럼명'], bins = bins, labels = labels ,right=False)
right = False : 왼쪽 경계는 포함하고 오른쪽 경계는 미포함
rename, reindex
인덱스, 컬럼명 이름 수정
테이블명.index.names = ~
테이블명.columns= ~
df_renamed = df.rename(index={'a': 'x', 'b': 'y'}, columns={'원래 컬럼명':'새 컬럼명'...})
인덱스 재설정
df_reindexed = df.reindex(index=['a', 'b', 'd', 'e'])