파이썬 데이터프레임 메소드

2022.02.16 14:43 1,493 조회

제가 파이썬을 이용하여 데이터를 이용하여

데이터 프레임을 다룰 때,

자주 쓰던 메소드(코드예시) 를 공유하고자 합니다..!

구글링하면서 찾아보곤 했는데 계속 검색하기 번거로워서

이렇게 저장해두고 깜빡깜빡 할 때 ctrl + F 해서 찾곤 합니다.



l 데이터 프레임에서 특정 열의 특정 행 값 찾을 때

df[df['station'] == '아산연안H1_항만']

 

l 데이터 프레임에서 특정 열의 특정 행 값 드롭할 때

df = df[df['district'] != 24]

 

l 데이터 프레임에서 a,b,c 구분 별로 평균 값 낼 때

df.groupby(['year', 'month', 'district']).mean()

 

l 원하는 범위의 열 명 뽑을 때

feature = df.groupby(['year', 'month', 'district']).mean().columns[2:18]

 

l X, y 트레인 테스트 데이터 셋 나누기

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8, test_size=0.2, shuffle=True, random_state=123)

 

l 그룹한 열 시각화

df.groupby(['year', 'month', 'district']).mean().loc[2019, 2]['부유물질 농도[mg/L]'].plot(ax=ax1)

 

l 데이터 프레임 중복없이 행 뽑기

train["분류"].unique()

 

l 데이터 프레임 행 밑에 추가하기

pd.concat([df1, df2], axis=0) or

pd.append(df1)

 

l 데이터 프레임 특정 열의 행 조건 변수 지정하고 그 조건만 뽑기

year1 = train["year"] == year

df = train[year1 & month1 & day1 & hour1]

 

l 데이터 프레임 특정 열 행 갯수 세기

df["분류"].value_counts()

 


l 데이터 프레임 컬럼이름 정하기

pd.DataFrame(columns = ['통역', '생활정보'])

 

l 데이터 프레임 다중 오름차순 정렬

df.sort_values(['month','day','hour'])

 

l 결측치 0으로 처리

df1.fillna(0)

 

l 열값 뽑기 / A열 값 조건 맞춘 B열 값 뽑기

df[df['나라'] == '중국']['도시'].value_counts().index

 

l plt 그래프 사이즈 조정

import matplotlib.pyplot as plt

plt.rcParams['figure.figsize'] = [15, 10]

 

l 열 이름 바꾸기

testdf2 = testdf2.rename(columns={'교류인원':i})

 

l A열의 A조건을 가진 테이블을 B속성 행들로 합쳐 묶어서 C열을 나타내기

pd.DataFrame(df[df['A'] == 'A'].groupby(['B']).sum()['C']

 

l 특정 열 조건 가진 값에 값 전부 바꾸기

#3월 데이터 2월로 치환

df.loc[df.month == 3,'month']=2

 

l 열삭제

train = train.drop(['Unnamed: 0'], axis=1)

 

l 스트링 자르기

'world,kim. sesang'.split(',')[1].split('.')[0]

(, 기준 두번째꺼에서 .기준 첫번째꺼 자르기)

train_data.Name = train_data.Name.apply(lambda name: name.split(',')[1].split('.')[0].strip())

이런식으로 lambda써서 일반화 가능

 

l 인코딩

#Label encoder를 활용하면 위의 작업을 더 쉽게할 수 있음

Label_encoder=LabelEncoder()

Label_encoder.fit(train_data.Sex)

train_data.loc[:,'Sex'] = Label_encoder.transform(train_data.Sex)

 

l 특정 열의 특정 행 널 값 대입

df_train.loc[(df_train.Age.isnull())&(df_train.Initial=='Mr'),'Age'] = 33

 

l 두가지 조건 맞춘 데이터 값 드롭!

train=train.drop(train[(train['GrLivArea']>4000) & (train['SalePrice']<300000)].index)

 

l all_data 라는 데이터프레임의 열 이름을 리스트로 만들기

list(all_data)

 

l 범주형 인코딩

df=df.replace(to_replace='Po', value=1)

 

l 범주형/수치형 변수만 뽑기

all_data.select_dtypes(np.object)

all_data.select_dtypes(np.number)

 

l Datetime으로 변경하기

df['날짜']=pd.to_datetime(df['날짜'])

 

l 오름차순

df= df.sort_values(by=['등록일자'], ascending=True)

 

l 인덱스 리셋

df = df.reset_index(drop=True)

 

l 눌값 확인

df[df['성별'].isnull() == True].head(2)

 

l 공백 대치하기

df.loc[df.국적 == country,'국적'] = country.strip()

 

l 모델링 테스트 셋만 분포 보기


l 여러가지 조건 있는 데이터 프레임 뽑기


l 윅데이 및 윗넘버

sample['weekday'] = sample.Date.apply(lambda x : x.weekday())

#월화수목금 데이터 값 가진 열 만들어주기, *apply : 함수 (def) 적용

sample['weeknum'] = sample.Date.apply(lambda x : x.strftime('%V'))

#몇주차인지 데이터 값 가진 열 만들어 주기



* 본 포스팅은 데이콘 서포터즈 “데이크루" 1기 활동의 일환입니다.

로그인이 필요합니다
0 / 1000
백남진
2022.02.16 20:45

저도 한 번씩 기억이 안날 때 있는데 월드파파님 정리본 참조해야겠습니다 :) 좋은 글 고맙습니다!

월드파파
2022.02.18 16:22

감사합니다! :)

동화책
2022.02.18 17:06

유용하네요! 공유 감사합니다 🙂

yun99
2022.02.19 15:18

당연한 것이지만 매번 까먹어서 검색했는데 잘 정리해주셔서 감사합니다! 다음부턴 월드파파님 게시글을 참고하면 되겠네요 🙂

sssssun
2022.02.19 23:38

오오  항상 헷갈려서 매번 구글링해서 사용했는데 한번에 정리되어 있으니까 너무 편리하네요!! 공유 감사합니다! 너무 유용할 것 같아요:)