본문 바로가기
데이터 어쩌구/전처리 및 시각화

[Pandas] 데이터 프레임 다루기

by annmunju 2021. 10. 2.

pandas에서 내가 가장 어려워 하는 것 중에 하나가 데이터 프레임 다루는 거다. 내가 필요할 때 맞는 방식으로 자유롭게 열을 늘렸다, 이름도 바꿨다 하는 건 너무 어려워서 한 페이지에 정리하고자 한다.

 

<rename>

1. column 이름 바꾸기 : df.rename(columns={"A": "a", "B": "c"}) / df.rename(str.lower, axis='columns') : 대문자에서 소문자로 바뀜..

2. index 이름 바꾸기 : df.rename(index={0: "x", 1: "y", 2: "z"}) / df.rename({1: 2, 2: 4}, axis='index')

3. index 데이터 타입 변경 : df.rename(index=str).index

 

<데이터 정렬하기>

df.sort_value(by=어떤 열(행), axis=0(열) 혹은 1(행), ascending=True:오름차순 or False:내림차순, inplace=적용할래?) 

 

<보고 싶은 데이터만 골라보기>

1. 번호로 조회 : df.iloc[행 슬라이싱 조회, 열 슬라이싱 조회]

2. 이름으로 조회 : df.loc[행조회(슬라이싱), 열조회(슬라이싱)] , df.loc[[(여러 행 조회, ',' 구분)], [(여러 열 조회, ',' 구분)]]

3. 특정 조건 데이터 보기 

- df[df>0] : value가 0이상인 결과만 보기

- df[df["A"]>0] : A컬럼의 값이 0이상인 결과만 보기

- df["E"].isin(["two","four"]) : E컬럼의 값중에 "two", "four"가 있는 결과만 보기 : 결과는 불리언 타입으로 정렬됨.

  > df[df["E"].isin(["two","four"])] : 위에 True 값들이 데이터 프레임 형식으로 출력됨.

4. 유일 행 보기 : unique()

 

<제거하기> : drop vs. del

  • drop 열과 행 모두에서 작동. del 열에서만 작동.
  • drop 한 번에 여러 항목에서 작동할 수 있음. del한 번에 하나씩만 작동.
  • drop 제자리에서 작동하거나 사본을 반환할 수 있음.(inplace=T/F) del 내부 작업만 가능.

 

<누적 지표 보기>

- 각 컬럼 누적 합계 보기 : df.apply(np.cumsum) : 날짜별로 구분되어 있을 때 1일 반환, 1,2일 누적 반환, 1,2,3일 누적반환.. 식으로 보고 싶을 때

 

<추가하기>

- 열 추가하기 : df["새로운열이름"] = (어떤 조건의 열을 추가할 건지...)

- 행 추가하기 : 딕셔너리 형식을 갖춘 경우 append() 이용해서 합치는 방식.

 

<pivot table>

 - index 설정 : pd.pivot_table(df, index="Name")  #df.pivot_table(index="Name")

 - column 설정 : df.pivot_table(index=["Manager", "Rep"],values="Price",columns="Product",aggfunc=np.sum)

 - 멀티 인덱스 + values 설정 : df.pivot_table(index=["Manager", "Rep"],values="Price")

 - function 적용 : df.pivot_table(index=["Manager", "Rep"],values="Price",aggfunc=[np.sum, len])

 - fill_value=0 : 널 값은 0으로

 - margins=True : 요약값(all) 보기

 - 피봇테이블에서 필요한 컬럼만 남기기(droplevel) : crime_station.columns = crime_station.columns.droplevel([0,1])

728x90