이번 스터디부터 본격적으로 pandas를 시작했다. 계획표에 따라 Ch2.판다스 시작하기, Ch3. 판다스 자료구조 살펴보기를 공부했다. 데이터 분석에 쓰이는 라이브러리라 그런지, 전체적인 느낌이 R언어랑 비슷하다는 생각이 들었다.
개념을 미리 읽어가고, 스터디 시간에 같이 실습을 했는데, 정리를 안해놓으면 헷갈릴 것 같다는 생각이 들어서, 오늘은 기본적인 내용과 실습했던 걸 간단하게 정리하고자 한다.
<목차>
1. Pandas의 기본 속성과 메서드
2. 시리즈의 메서드
3. 실습해보기
1. Pandas의 기본 속성과 메서드
○ 속성
| .shape | (행 개수, 열 개수) 튜플 반환 |
| .columns | 데이터프레임의 열 이름 확인 가능 |
| .dtypes | 데이터셋의 각 열의 자료형 |
| .loc | 행 이름을 기준으로 행 추출 (slicing/ 주의: 이름 기준 해석) |
| .iloc | 행 번호를 기준으로 행 추출 (slicing) |
○ 메서드
| .info() | 데이터와 관련된 다양한 정보 확인 가능 |
| .head() | 가장 앞 5개 행 확인 가능 |
| .tail() | 가장 마지막 5개 행 확인 가능 |
| .groupy() | 그룹화된 객체 생성 |
| .reset_index() | 그룹화한 데이터 계층 구조 없애기 |
| .nunique() | 그룹화한 데이터에서 중복 제외한 개수 구하기 |
| .value_counts() | 그룹화한 데이터에서 지정한 열이나 행의 개수(빈도수) 구하기 |
| .plot() | 데이터프레임 대상으로 호출하면 그래프 그려짐 |
☆ 판다스에서 데이터를 다룰 때는 데이터의 전체적인 구조를 먼저 파악하는 것이 중요한데, .shape, .columns, .dtypes 같은 속성을 사용하면 데이터의 크기, 열 이름, 자료형을 빠르게 확인할 수 있다. 그 다음으로는 원하는 데이터를 선택하는 과정이 필요하다. 이때 사용하는 것이 .loc과 .iloc이다. .loc은 이름 기준, .iloc은 숫자 인덱스 기준으로 데이터를 가져온다.
☆ 이후에는 데이터를 더 잘 이해하거나 분석하기 위해 메서드를 활용한다.
.head()와 .tail()은 데이터의 앞부분과 뒷부분을 확인할 때, .info()는 결측치나 자료형까지 포함한 전체 정보를 보여준다.
특히 중요한 것은 .groupby()로 데이터를 특정 기준으로 묶어서 분석할 때 사용된다. 예를 들어 연도별, 지역별로 데이터를 나누어 평균이나 개수를 구할 때 자주 쓰인다고 한다. 이 과정에서 .nunique(), .value_counts() 같은 메서드를 함께 사용하면 중복을 제거한 개수나 빈도수를 쉽게 계산할 수 있다. 그룹화로 인해 복잡해진 인덱스는 .reset_index()를 통해 다시 깔끔하게 정리할 수 있다.
마지막으로 .plot()을 활용하면 분석 결과를 시각적으로 확인할 수 있어서, 데이터의 흐름이나 패턴을 직관적으로 파악하는 데 도움이 된다.
2. 시리즈의 메서드
| .append() | 2개 이상의 시리즈 연결 |
| .corr() | 다른 시리즈와의 상관관계 계산 (결측값 자동 제외) |
| .cov() | 다른 시리즈와의 공분산 계산 (결측값 자동 제외) |
| .describe() | 요약 통계량 계산 (결측값 자동 제외) |
| .drop_duplicates() | 중복값 없는 시리즈 반환 |
| .equals() | 시리즈에 주어진 값을 가지는 요소 있는지 확인 |
| .get_values() | 시리즈 값 구하기 (=.values) |
| .hist() | 히스토그램 그리기 |
| .isin() | 주어진 값이 시리즈에 포함되어 있는지 확인 |
| .min()/ .max()/ .median() | 최솟값/ 최댓값/ 중앙값 |
| .mean()/ .mode() | 산술평균/ 최빈값 |
| .quantile() | 사분위수로 반환 |
| .replace() | 시리즈의 특정 값 반환 |
| .sample() | 시리즈에서 임의의 값 반환 |
| .sort_values() | 값 정렬 |
| .to_frames() | 시리즈->데이터프레임 |
| .transpose() | 시리즈의 전치반환 |
☆ 시리즈는 하나의 열 데이터라고 보면 되기 때문에, 주로 값 자체를 분석하거나 가공하는 작업에서 많이 사용된다. 그래서 메서드들도 크게 보면 통계 계산, 데이터 정리, 값 확인/변환으로 나눌 수 있다.
먼저 .mean(), .median(), .min(), .max(), .quantile() 같은 메서드들은 데이터를 숫자로 보고 기본적인 통계값을 구할 때 사용된다. .describe()를 쓰면 이런 값들을 한 번에 요약해서 보여주기 때문에, 데이터를 처음 확인할 때 매우 유용하다.
그 다음으로 .corr()와 .cov()는 다른 시리즈와의 관계를 파악할 때 사용하는데, 각각 상관관계와 공분산을 계산해준다.
데이터를 정리하는 기능도 중요하다. .drop_duplicates()는 중복값을 제거하고, .sort_values()는 값을 기준으로 정렬해준다. .replace()는 특정 값을 다른 값으로 바꿀 때 사용되며, 전처리 과정에서 자주 쓰인다. 또 .sample()은 데이터를 랜덤으로 뽑을 때 사용되기 때문에 테스트나 데이터 확인용으로 유용하다.
값을 확인하는 메서드로는 .isin()이 있다. 특정 값이 시리즈 안에 포함되어 있는지를 True/False로 알려주기 때문에, 조건 필터링할 때 많이 사용된다. .equals()는 두 시리즈가 완전히 같은지 비교할 때 쓰인다. .to_frame()을 사용하면 시리즈를 데이터프레임으로 바꿀 수 있고, .transpose()는 구조를 전환할 때 사용된다.
3. 실습해보기


메서드가 다양하다보니 뭐가 있는지 제대로 알아야 실제로 데이터 분석을 할 때, 활용할 수 있다는 걸 다시 한 번 느꼈다. jupyter notebook으로 실습하면서 정리도 같이 하는 식으로 했는데, 이 방식이 나한테는 잘 맞는 것 같았다.